Как создать логику StackTrace для вызова, который проходит через различные микро-сервисы с использованием обменов gRPC - PullRequest
0 голосов
/ 12 октября 2018

Я создал 4 микросервиса в Go, чтобы сформировать себя для архитектуры микросервисов и перейти на нее.

Однако я боюсь, что столкнусь с некоторыми проблемами, которые связаны с обработкой ошибок.

Даже если я попытаюсь поставить как можно больше проверок, чтобы убедиться, что у меня нет ошибок в моих данных во время выполнения, если это произойдет сбой, я хотел бы отслеживать трассировку стека, но я не уверено том, как я должен интегрировать это .. Кроме того, в первый раз, когда я буду запускать свои микросервисы вообще, если у меня будет странное поведение, такое как добавление, которое не работает, или обновление, получение, что угодно в одном из моих микросервисовКонечно, я буду знать, из какого микросервиса он будет поступать, но как я смогу быстро его узнать, если у меня нет следов?

У меня уже есть идеи, но я хочу что-то создатьтак много общего, как я могу.Я видел pkg/errors, но я не уверен, как он будет работать на разных микросервисах ...

Поскольку я использую обмены Protobuf и gRPC, я знаю, что мне нужно будет передавать stackTrace в сообщенияхТем не менее, мне нужно отобразить эту трассировку стека через каждый микросервис, который я передаю. Так что это много избыточного кода

Может быть, я ошибаюсь, но что я сделал, так это то, что я создал один файл протока микросервисом, поэтомуобъекты (определения структур) не совпадают, не так ли?

У меня была такая идея:

message Status {
    uint32 Code = 1;
    string Service = 2;
    string Method = 3;
    string Message = 4;
    Status InnerStatus = 5;
}

Итак, я получаю код, имя службы, имя метода, сообщение «ящик» и место для размещения подуровня трассировки.Однако, если я хочу поставить две трассировки на одном уровне, логика нарушается.

...