Комментарии 7
Спасибо за статью. Пригодится, чтобы начать этим заниматься
Т.е., например один сервис пишет в очередь MQ/базу данных, а другой читает. Как в этом случае пробрасываете контекст?
Почему взяли Jaeger а не OpenZipkin? Проводили ли какие-то сравнения?
Есть общий стандарт Opentrace
Стандарт называется OpenTracing
Как решаете проблему асинхронного взаимодействия между сервисами?
Пока в этом не было необходимости. Но сделать это можно в худшем варианте просто вручную положив spanID в само сообщение или в заголовки или метаданные сообщения, если есть возможность, а потом при чтении восстановить из него контекст.
В лучшем случае если какие-то готовые библиотеки, например для kafka, для rabbitmq вроде есть из коробки в спринговой обвязке.
Почему взяли Jaeger а не OpenZipkin?
Изначально услышали про jaeger и он вроде как делался смотря на zipkin и dapper и наверно в теории должен был решить какие-то их недостатки. Но на сколько я понимаю большой разницы между ними нет, и нам бы одинаково подошло и то и то. Jaeger написан на go, zipkin на java, мне ближе go (хотя в компании пишем на java).
Плюс сменить одно на другое при необходимости не очень сложно, так как весь код завязывается на opentracing-api а не на конкретную реализацию.
Трассировка сервисов, OpenTracing и Jaeger