Шаблон “Распределенная трассировка”¶
Назначает каждому внешнему запросу уникальный идентификатор и отправляет данные о его перемещениях по системе от одного сервиса к другому на центральный сервер, который предоставляет визуализацию и возможность анализа.
Также сервис может включать этот идентификатор в свои логи, что позволяет проанализировать всю историю прохождения запроса.

Распределенная трассировка состоит из двух частей: библиотеки инструментирования, которую использует каждый сервис, и сервера распределенной трассировки.
Использование библиотеки инструментирования¶
Библиотека инструментирования управляет следами (traces) и интервалами (spans). Также включает в исходящие запросы трассировочную информацию, такую как идентификаторы текущего и родительского следов. Например, один из стандартов для передачи трассировочной информации, B3 применяет заголовки наподобие X-B3-TraceId и X-B3-ParentSpanId. Тем самым создается иерархия следов, которая передается серверу распределенной трассировки.
Библиотека может вызываться напрямую в коде сервиса, однако более элегантный подход - применение перехватчиков или аспектно-ориентированного программирования.
О сервере распределенной трассировки¶
Библиотека шлет следы на сервер распределенной трассировки, тот собирает их в единую иерархию и сохраняет в БД. Одним из популярных серверов распределенной трассировки является Open Zipkin. Другим вариантом можно считать AWS X-ray.
Ссылки¶
https://microservices.io/patterns/observability/distributed-tracing.html
Дата создания : 19 июля 2022 г.