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