Выбор ответа Senior Трейсы и OpenTelemetry обновлено
Трейсинг через очередь
Вопрос
Сервис A кладёт сообщение в Kafka, сервис B обрабатывает его через час. Как правильно связать работу B с запросом A?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Контекст в заголовках сообщения, B делает CONSUMER-спан со ссылкой. OpenTelemetry определяет семантику сообщений: контекст едет в заголовках, потребитель создаёт CONSUMER-спан.
Варианты ответа
- Никак: трейсинг работает только для синхронных HTTP-вызовов
- Контекст в заголовках сообщения, B делает CONSUMER-спан со ссылкойправильный ответ
- Положить trace_id в тело сообщения и вручную склеить трейсы в бэкенде
- Держать спан A открытым до окончания обработки сообщения в B
Разбор
OpenTelemetry определяет семантику сообщений: контекст едет в заголовках, потребитель создаёт CONSUMER-спан. Для пакетной обработки или долгой задержки часто используют span link вместо родителя, чтобы не растягивать исходный трейс на час. Трейсинг асинхронного обмена поддерживается, ручная склейка не нужна, а час открытого спана ломает данные о длительности.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.