В этой статье в основном рассказывается о компоненте отслеживания служб Zipkin, а Spring Cloud Sleuth интегрирует компонент Zipkin.
1. Введение
Добавьте SELUTH в ClassPath приложения Spring Boot (см. Ниже для примеров Maven и Gradle), и вы увидите данные корреляции, собираемых в журналах, если вы ведете запросы.
―Cerpted с официального сайта
Основная функция Spring Cloud Sleuth заключается в предоставлении решений для отслеживания в распределенных системах и совместимо с Zipkin. Вам нужно только ввести соответствующие зависимости в файл POM.
2. Отслеживание и анализ обслуживания
В архитектуре микросервиса услуги делятся на услуги. Интерфейс, подвергающийся воздействию внешнего мира, может потребовать, чтобы многие услуги для сотрудничества для выполнения этой функции интерфейса. Если у какой -либо услуги на ссылке есть проблемы или тайм -ауты сети, это приведет к сбою интерфейсного вызова. Поскольку бизнес продолжает расширяться, звонок между услугами станет все более и более сложным.
По мере того, как все больше и больше услуг доступны, анализ цепочек вызовов становится все более и более сложным. Отношения вызовов между ними могут быть следующими:
Iii. Условия
SPAN: Основная единица работы. Например, отправка RPC в недавно созданном промежутке эквивалентна отправке запроса ответа в RPC. Пролет уникально идентифицируется 64-битным идентификатором, а след представлен еще одним 64-битным идентификатором. SPAN имеет другую информацию о данных, такую как Digest, события TimeStamp, аннотации значения ключей (теги), идентификатор SPAN и идентификатор прогресса (обычно IP -адрес).
Пролет постоянно начинается и останавливается, и в то же время записывает информацию о времени. Когда вы создаете пролет, вы должны остановить его в какой -то момент в будущем.
След: структура дерева, состоящая из серии пролетов. Например, если вы запускаете проект распределенных больших данных, вам может потребоваться создать трассировку.
Аннотация: используется для записи существования события во времени, и некоторые основные аннотации используются для определения начала и окончания запроса.
Графилизировать процесс использования аннотации Zipkin в одной системе:
4. Строительный проект
После объяснения основных знаний давайте возьмем реальную работу. Случай в этой статье в основном состоит из трех проектов: сервера-ципкин, который в основном использует функции Zipkinserver для сбора данных вызовов и отображения их; сервис-хи, который выявляет интерфейс HI снаружи; сервис-мия, которая выявляет интерфейс Мии снаружи; Эти две службы могут быть названы друг другу; И только после того, как их называют, Server-Zipkin будет собирать данные, поэтому они называются отслеживанием службы.
4.1 Создание сервера-Zipkin
Создайте проект Spring-Boot с именем Server-Zipkin и введите зависимости в своем POM:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-server</artifactId> </dependency> <dependency> <groupId> io.zipkin.java </GroupId> <ArtifactId> Zipkin-autoconfigure-ui </artifactid> </depervice> </depertive> </dependency> <dehydending> <groupid> org.springframework.cloud </GroupD> <ratifactid> spring-dependencies </artifactid> </GroupD> <artifactId> spring-cloud. <Тип> pom </type> <cerpope> import </scope> </dependency> </dependencies> </deperencymanagement>
В классе входа в программу добавьте аннотацию @enablezipkinserver, чтобы включить функцию Zipkinserver:
@SpringbootApplication@enablezipkinserverpublic class serverzipkinapplication {public static void main (string [] args) {SpringApplication.run (serverzipkinapplication.class, args); }}В приложении файла конфигурации. Myml указывает сервисный порт как:
Server.port = 9411
4.2 Создать Service-Hi
В своем введении POM первоначальная зависимость-Spring-Cloud-Starter-Zipkin, код заключается в следующем:
<depertiendions> <dependency> <groupid> org.springframework.boot </GroupId> <straCactId> Spring-Boot-Starter-web </artifactid> </deploydency> <!-compile ('org.springframework.cloud:spring-cloud-starter-zipkin')-> <dergeprame> <group orgpring foud-starter-zipkin ')-> <deryse> <groupford> org. <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependency> </dependency> </dependency> <dependencyManagement> <dependency> <dependency> <groupId> org.springframework.cloud </GroupId> <artifactId> spring-cloud-зависимости </artifactid> <sersion> dalston.rc1 </version> <sype> pom </type> </scope> import </rack> </repection> </jepertive> </sepectymanagement>В своем приложении файла конфигурации. Myml укажите адрес сервера Zipkin, и заголовок указан путем настройки «spring.zipkin.base-url»:
server.port = 8988spring.zipkin.base-url = http: // localhost: 9411spring.application.name = service-hi
Это нормально, чтобы представить зависимость от весеннего клуба-звезды-зриски и Set Spring.zipkin.base-Url.
Внешний интерфейс экспозиции:
@SpringBootApplication@RestControllerPublic Class ServiceHiaPlicalation {public static void main (string [] args) {SpringApplication.run (serviceHiaPlication.class, args); } private Static Final Logger log = logger.getLogger (serviceHiaPlicalation.class.getName ()); @Autowired private resttemplate resttemplate; @Bean public resttemplate getResttemplate () {return new RestTemplate (); } @RequestMapping ("/hi") public String callHome () {log.log (level.info, «Вызов Trace Service-Hi»); return resttemplate.getForObject ("http: // localhost: 8989/miya", string.class); } @RequestMapping ("/info") public String info () {log.log (level.info, «Вызов Trace Service-Hi»); вернуть "I'm Service-Hi"; } @Bean Public AlwaysSampler DefaultsAmpler () {return new Alwesssampler (); }}4.3 Создать сервис-мия
Процесс создания вредит Service-Hi, вводит те же зависимости и настраивает Spring.zipkin.base-Url.
Внешний интерфейс экспозиции:
@SpringBootApplication@RestControllerPublic Class ServiceMiyaApplication {public static void main (string [] args) {SpringApplication.run (ServiceMiyaApplication.class, args); } private static final logger log = logger.getLogger (ServiceMiyaApplication.class.getName ()); @Requestmapping ("/hi") public String home () {log.log (level.info, "hi называется"); вернуть "Привет, я Мия!"; } @RequestMapping ("/miya") public String info () {log.log (level.info, "Информация называется"); return resttemplate.getForObject ("http: // localhost: 8988/info", string.class); } @Autowired private resttemplate resttemplate; @Bean public resttemplate getResttemplate () {return new RestTemplate (); }}4.4 Запустите проект, продемонстрировать и отслеживать
Запустите три вышеуказанные проекты в свою очередь, откройте браузер для доступа: http: // localhost: 9411/, и появится следующий интерфейс:
Посетите: http: // localhost: 8989/miya, браузер появляется: я сервис-хи
Затем откройте интерфейс http: // localhost: 9411/и нажмите «Зависимости», чтобы обнаружить зависимости службы:
Нажмите «Найдите следы, чтобы увидеть данные конкретных служб, звонящих друг другу:
Загрузите исходный код этой статьи: https://github.com/forezp/springcloudlearning/tree/master/chapter9
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.