Выбор ответа Senior Трейсы и OpenTelemetry обновлено

Трейсинг через очередь

Вопрос

Сервис A кладёт сообщение в Kafka, сервис B обрабатывает его через час. Как правильно связать работу B с запросом A?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Контекст в заголовках сообщения, B делает CONSUMER-спан со ссылкой. OpenTelemetry определяет семантику сообщений: контекст едет в заголовках, потребитель создаёт CONSUMER-спан.

Варианты ответа

  1. Никак: трейсинг работает только для синхронных HTTP-вызовов
  2. Контекст в заголовках сообщения, B делает CONSUMER-спан со ссылкойправильный ответ
  3. Положить trace_id в тело сообщения и вручную склеить трейсы в бэкенде
  4. Держать спан A открытым до окончания обработки сообщения в B

Разбор

OpenTelemetry определяет семантику сообщений: контекст едет в заголовках, потребитель создаёт CONSUMER-спан. Для пакетной обработки или долгой задержки часто используют span link вместо родителя, чтобы не растягивать исходный трейс на час. Трейсинг асинхронного обмена поддерживается, ручная склейка не нужна, а час открытого спана ломает данные о длительности.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.