Gateway Service II. Распределенная трассировка запросов

Распределённая трассировка запросов (Distributed Tracing) — это методика, позволяющая отслеживать запросы, проходящие через различные сервисы. В условиях микросервисов, где система состоит из множества взаимодействующих элементов, распределённая трассировка помогает разработчикам и инженерам понимать, как запросы перемещаются по системе, и выявлять узкие места или проблемы производительности.

Distributed tracing
Источник: Introduction to Brave

Для отслеживания, визуализации и анализа распределенной трассировки микросервисов будет использоваться один из наиболее популярных фреймворков - Zipkin (Distributed Tracing Server). Он хорошо интегрирован в экосистему Spring с помощью библиотеки инструментации Micrometer (фреймворк для сбора метрик в Java-приложениях). Расширение для Micrometer OpenZipkin Brave “из коробки” поддерживает работу с трассировкой через Zipkin, добавляя поддержку контекста трассировки. Для отправки данных трассировки в Zipkin используется библиотека Zipkin Reporter Brave, которая работает вместе с Brave (Instrumentation Library).

Доступ после оплаты курса


Основные компоненты и принципы работы

Конфигурирование трассировок для Zipkin

  • Настройка трассировок в Gateway Service
  • Настройка трассировок в микросервисах

Обновление Docker Deployment всех микросервисов


Просмотр трассировок в Zipkin

Сервер Zipkin предоставляет интерфейс для просмотра трассировок: http://localhost:9411/zipkin

Нажмите на кнопку Run Query. В браузере отобразятся последние 10 совершенных запросов
Количество отображаемых запросов и промежуток времени можно менять в элементах под этой кнопкой.

Раскройте запрос с наибольшим количеством спанов (7), нажав на кнопку SHOW. Кликая на каждый Span (цветную линию), вы получаете больше сведений о нем. Мы видим путь, который прошел этот запрос к Gateway Service по маршруту /v1/menu-aggregate/1 для получения агрегированной информации о блюде с id=1

Вначале запрос обрабатывается Gateway Service, после чего отправляется в Menu Aggregate Service, который в свою очередь отправляет по одному запросу в Menu Service и Review Service. Эта информация, а также время обработки каждого запроса теперь доступна в Zipkin.

Кроме того, во вкладке Dependencies доступна графическая информация о том, как между собой общаются микросервисы:

На этом урок, посвященный началу работы с Gateway Service, завершен. Мы настроили единую точку входа в наше приложение, добавили ограничение количества запросов, а также настроили распределенную трассировку запросов.

Занятие 12: Security, Authorization и Authentication (Keycloak)