Spring Cloud Sleuth: трассировка ссылок распределенных запросов

Java
Spring Cloud Sleuth: трассировка ссылок распределенных запросов

Адрес фактического проекта электронной коммерции SpringBoot (20k+star):GitHub.com/macro-positive/…

Резюме

Spring Cloud Sleuth – это инструмент для отслеживания вызовов между сервисами в распределенной системе. Он может визуально отображать процесс вызова запроса. В этой статье мы подробно расскажем о его использовании.

Введение в Spring Cloud Sleuth

По мере того, как наша система становится все больше и больше, взаимосвязь вызовов между различными службами также становится все более и более сложной. Когда клиент инициирует запрос, запрос проходит через несколько служб и, наконец, возвращает результат. Каждая проходящая служба может испытывать задержки или ошибки, что приводит к сбою запроса. В настоящее время нам нужен инструмент отслеживания ссылки на запрос, который поможет нам уточнить служебную ссылку вызова запроса и решить проблему.

Добавить трассировку ссылки запроса в службу

Мы продемонстрируем эту функцию через вызов службы между пользовательской службой и ленточной службой.Когда мы вызываем интерфейс ленточной службы, ленточная служба вызывает интерфейс, предоставляемый пользовательской службой, через RestTemplate.

  • Во-первых, добавьте поддержку функции отслеживания ссылок запросов в пользовательский сервис и ленточный сервис;

  • Добавьте связанные зависимости для пользовательской службы и ленты-службы:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
  • Измените файл application.yml и настройте адрес доступа к zipkin-серверу для сбора логов:
spring:
  zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      probability: 0.1 #设置Sleuth的抽样收集概率

Интегрируйте Zipkin для получения и анализа логов

Zipkin — это проект Twitter с открытым исходным кодом, который можно использовать для получения и анализа журнала отслеживания ссылок запросов, созданного в Spring Cloud Sleuth.Он предоставляет веб-интерфейс, который помогает нам визуально просматривать информацию отслеживания ссылок запросов.

  • SpringBoot 2.0 и выше больше не нужно собирать zipkin-сервер сам по себе, мы можем скачать zipkin-сервер по этому адресу:repo1.maven.org/maven2/IO/…

  • После завершения загрузки запустите zipkin-server с помощью следующей команды:

java -jar zipkin-server-2.12.9-exec.jar

  • Запустите eureka-sever, ленточную службу, пользовательскую службу:

  • Интерфейс для многократного вызова ленточной службы (Sleuth — это сбор образцов)http://localhost:8301/user/1, после вызова проверьте домашнюю страницу Zipkin и обнаружите, что там уже есть информация об отслеживании ссылок;

  • Нажмите View Details, чтобы визуально увидеть ссылку вызова запроса и время, затраченное на прохождение каждой службы:

Хранение информации о трассировке с Elasticsearch

Если мы перезапустим zipkin-сервер, то обнаружим, что вся информация об отслеживании, сохраненная только что, потеряна. Видно, что она хранится в памяти. Иногда нам нужно сохранить всю информацию. Вот пример сохранения в Elasticsearch. чтобы продемонстрировать вниз эту функцию.

Установить эластичный поиск

  • Загрузите zip-пакет Elasticsearch 6.2.2 и распакуйте его в указанный каталог, адрес загрузки:woohoo.elastic.co/capable/download…

  • Запустите elasticsearch.bat в каталоге bin, чтобы запустить Elasticsearch.

Измените параметры запуска для хранения информации в Elasticsearch.

  • Используйте следующую команду для запуска, вы можете сохранить информацию об отслеживании в Elasticsearch, и она не будет потеряна после перезапуска;
# STORAGE_TYPE:表示存储类型 ES_HOSTS:表示ES的访问地址
java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=localhost:9200 
  • После этого вам необходимо перезапустить службу пользователя и службу ленты, чтобы они вступили в силу.После перезапуска интерфейс службы ленты вызывается несколько раз.http://localhost:8301/user/1;

  • Если вы установили инструмент визуализации Elasticsearch Kibana, вы можете увидеть, что информация об отслеживании была сохранена в нем:

Справочник по дополнительным параметрам запуска

GitHub.com/open zip kin/…

используемые модули

springcloud-learning
├── eureka-server -- eureka注册中心
├── user-service -- 提供User对象CRUD接口的服务
└── ribbon-service -- ribbon服务调用测试服务

Адрес исходного кода проекта

GitHub.com/macro-positive/…

публика

проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на общедоступный номерПолучите это прямо сейчас.

公众号图片