мой блог:Программист смеется и смеется, добро пожаловать в блог!
Предыдущая главаБазовое руководство по SpringCloud (11) — Введение в отслеживание цепочки вызовов SleuthСреди них мы представим, что Spring Cloud Sleuth реализует печать информации о ссылке вызова в распределенной среде, На этой основе в этой главе Zikpin будет объединен для создания полной системы отслеживания данных в реальном времени.
предисловие
Zipkin — это распределенная система трассировки, которая используется для сбора и диагностики проблем с задержкой системы в системе микросервисов.Основная функция — собирать и находить эти проблемы.Spring Cloud Sleuth реализует Dapper (документ о распределенной системе трассировки Google), генерирует A ряд данных отслеживания, конечно, также может интегрировать Zipkin, агрегировать журналы в Zipkin, собирать и хранить Zipkin и предоставлять такие функции, как запрос
1. Введение в Zipkin
Zipkin в основном состоит из 4 частей, как показано ниже:
- Коллекционер: Коллекционер
- Хранилище: хранилище, по умолчанию используется хранилище памяти, мы можем изменить его на базу данных, такую как Mysql и т. д.
- Запрос: Предоставьте RESTful API для предоставления запроса
- Веб-интерфейс: отдельные компоненты пользовательского интерфейса
2. Быстрое использование
Zipkin делится на сервер и клиент, сервер — это отдельный сервис Zipkin, который используется для сбора и отображения информации, а клиент — это компонент каждого микросервиса в микросервисной архитектуре, и мы его настраиваем в каждом компоненте. URL-адрес адреса подключения сервера Zipkin может передавать информацию отслеживания в Zipkin. Передача использует HTTP-запросы, и, конечно, ее также можно изменить на шину сообщений.
2.1 Создайте сервер Zipkin
Создайте новый проект Maven и введите зависимости zipkin в pom, zipkin-server — это зависимость на стороне сервера, а zipkin-autoconfigure-ui — веб-зависимость:
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>2.11.9</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>2.11.9</version>
</dependency>
Создайте класс запуска: SleuthServeApplication и добавьте аннотацию @EnableZipkinServer, чтобы разрешить запуск службы Zipkin:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import zipkin2.server.internal.EnableZipkinServer;
@SpringBootApplication
@EnableZipkinServer
public class SleuthServeApplication {
public static void main(String[] args) {
SpringApplication.run(SleuthServeApplication.class, args);
}
}
Настройте applicaiton.yml, обратите внимание, что если не добавить management.metrics.web.server.auto-time-requests=false, то при запросе веб-интерфейса будет ошибка, а значит автоматический мониторинг отключен;
server:
port: 8242
management:
metrics:
web:
server:
auto-time-requests: false
После запуска проекта запросите http://localhost:8242/, и появится следующая страница:
Статус отслеживания ссылок можно запрашивать на основе имени службы, диапазона и других условий.
2.2. Соберите информацию о клиенте на сервер Zipkin
После создания сервера Zipkin нам необходимо настроить соответствующую информацию в клиенте (разработка компонентов микросервиса). Давайте рассмотрим наши компоненты сервиса:
- Реестр Eureka: eureka-server
- Поставщик услуг: 2 экземпляра поставщика серверов
- Потребитель службы: 1 экземпляр сервера-потребителя
В предыдущей главе мы представили зависимости сыщика для каждого компонента:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
Теперь также добавьте весеннюю зависимость Cloud sleuth от поддержки Zipkin для каждой службы.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
Затем настройте в application.yml сервис-провайдера: сервер-провайдер и сервис-потребитель: сервер-потребитель:
spring:
zipkin:
base-url: http://localhost:8242/
enabled: true
sleuth:
sampler:
probability: 1.0
- spring.zipkin.base-url: URL-адрес подключения к серверу zipkin
- spring.zipkin.enabled: позволяет включить zipkin
- spring.sleuth.sampler.probability: указывает частоту дискретизации, 1.0 указывает, что лог полностью доставлен на сервер
Далее запускаем все сервисы и сервер Zipkin, и вызываем интерфейс потребителя сервиса через интерфейс потребителя сервиса:
http://localhost:5168/hystrix/sayHello?name=test, интерфейс успешно вернул информацию, а журнал также распечатал информацию о цепочке вызовов:
Мы увидели запрос через веб-интерфейс сервера zipkin:
Примечание. Текущий метод передачи данных — HTTP.
После двойного щелчка будет отображена конкретная информация о цепочке вызовов.Это отображение полной трассировки на веб-странице.Эта цепочка вызовов прошла через потребителя услуги.
Hystrix, зачем идти через Hyxtrix, мы знаем, что Hystrix поддерживает пул потоков для каждого ресурса, поэтому существует отдельный Span
, и через поставщика услуг, чтобы мы могли видеть зависимость вызова службы:
Нажмите на название приложения, мы также можем увидеть дополнительную информацию, время запроса и другую информацию:
2.3 Другая поддержка
- По умолчанию Spring Cloud Sleuth предоставляет поддержку Feign, которую можно отключить, установив srping.sleuth.feign.enabled=false через TraceFeignClientAutoConfigration.
- Для звонков Zuul также поддерживается отслеживание звонков, и поддержку можно отключить, установив spring.sleuth.zuul.enabled=false
3. Интегрируйте MYSQL
Zipkin по умолчанию хранит данные в памяти.В производственной среде предприятия нам необходимо сохранить эти данные, и мы также можем интегрировать их с Mysql:
В файле pom сервера Zipkin добавляем следующие зависимости:
<!--自动注入配置-->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-storage-mysql</artifactId>
<version>2.11.9</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--spring boot 数据源-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
Конфигурация application.yml:
server:
port: 8242
management:
metrics:
web:
server:
auto-time-requests: false
spring:
datasource:
username: root
url: jdbc:mysql://localhost:3306/zipkin
password: 123456
driver-class-name: com.mysql.jdbc.Driver
schema: classpath:/mysql.sql
//项目启动时候 初始化数据库
initialization-mode: always
zipkin:
storage:
type : mysql
mysql:
host : localhost
port : 3306
username : root
password : 123456
//数据库名称
db : zipkin
Уведомление:
- Текущая версия SpringCloud: Greenwich.SR3
- zipkin-autoconfigure-storage-mysql: когда эта зависимость введена в проект и настроено zipkin.storage.type=mysql, компоненты, связанные с Zipkin, будут автоматически собраны: zipkin2.autoconfigure.storage.mysql.ZipkinMySQLStorageProperties через zipkin.storage. mysql Префикс может настроить свойства mysql, БД по умолчанию — zipkin, а база данных — локальная.
После запуска проекта в базе данных mysql будут созданы три таблицы: zipkinаннотации, зипкинspans, zipkin_dependencies сохраняют связанную информацию, когда мы инициируем запрос, вся информация будет записана в базу данных: 
С помощью описанного выше процесса информация об отслеживании может быть сохранена в базе данных.
4. Резюме
Основываясь на предыдущей главе, эта глава объединяет Spring Cloud Sleuth и Zipkin для реализации решения для отслеживания распределенных ссылок. В то же время информация может храниться в Mysql в соответствии с требованиями. Конечно, мы также можем сохранить ее в другом хранилище. систем, таких как elasticsearch и т. д., нам нужно определить его самостоятельно.
----END----
Итак, это обмен этой проблемой, вы также можете подписаться на официальный аккаунт: Программист Сяосяошэн, обратите внимание на более интересный контент!
Базовое руководство по SpringCloud (1) — Микросервисы и SpringCloud
Базовое руководство по SpringCloud (2) — Service Discovery Eureka
Базовый учебник по SpringCloud (3) - Eureka Advanced
Базовое руководство по SpringCloud (4) — Начало работы с Центром конфигурации
Базовое руководство по SpringCloud (6) — Лента балансировки нагрузки
Базовое руководство по SpringCloud (7) — Имитация декларативного вызова службы
Базовое руководство по SpringCloud (8) — Hystrix Fuse (часть 1)
Базовое руководство по SpringCloud (9) — Мониторинг службы Hystrix (часть 2)
Базовое руководство по SpringCloud (10) — Шлюз служб Zull
Базовое руководство по SpringCloud (11) — Введение в трассировку цепочки вызовов Sleuth
Больше интересного контента, ждите...
Эта статья опубликована в блогеOpenWriteвыпуск!