Обмен технологиями

Распределенная трассировка с использованием Zipkin и Spring Cloud Sleuth.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

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

Что такое Зипкин и Сыщик Весенних Облаков?

  • ЗипкинЭто распределенная система отслеживания, которая может помочь нам собирать данные о времени в микросервисной архитектуре, чтобы мы могли анализировать и контролировать производительность системы.
  • Весенний Облачный Сыщик— это проект Spring Cloud, который предоставляет возможности автоматизированной распределенной трассировки для приложений Spring Boot и может быть интегрирован с Zipkin.

Зачем нужна распределенная трассировка?

В микросервисной архитектуре запрос пользователя может обрабатываться несколькими службами. Без распределенной системы трассировки при возникновении проблемы трудно определить, в каком сервисе проблема или в каком канале вызова службы. Распределенные системы трассировки могут помочь нам:

  • Быстро находите узкие места в производительности.
  • Отслеживайте отношения вызовов между службами.
  • Анализируйте и оптимизируйте производительность системы.

Интегрируйте Zipkin и Spring Cloud Sleuth

Ниже мы будем использовать простой пример, чтобы показать, как интегрировать Zipkin и Spring Cloud Sleuth в приложение Spring Boot.

1. Создайте проект Spring Boot.

Сначала нам нужно создать проект Spring Boot. Вы можете использовать Spring Initializr, чтобы быстро создать проект и добавить следующие зависимости:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.cloud</groupId>
  8. <artifactId>spring-cloud-starter-sleuth</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.springframework.cloud</groupId>
  12. <artifactId>spring-cloud-starter-zipkin</artifactId>
  13. </dependency>
  14. </dependencies>

2. Настройте приложение

существоватьapplication.propertiesДобавьте в файл следующую конфигурацию:

  1. spring.application.name=my-service
  2. server.port=8080
  3. spring.zipkin.base-url=http://localhost:9411
  4. spring.sleuth.sampler.probability=1.0
  • spring.zipkin.base-urlУказывает адрес сервера Zipkin.
  • spring.sleuth.sampler.probabilityУстановите значение 1.0, чтобы регистрировать все данные трассировки.

3. Напишите пример кода

Создайте простой контроллер REST для имитации вызовов служб:

  1. import org.springframework.web.bind.annotation.GetMapping;
  2. import org.springframework.web.bind.annotation.RestController;
  3. import org.springframework.web.client.RestTemplate;
  4. @RestController
  5. public class MyController {
  6. private final RestTemplate restTemplate;
  7. public MyController(RestTemplate restTemplate) {
  8. this.restTemplate = restTemplate;
  9. }
  10. @GetMapping("/hello")
  11. public String hello() {
  12. String response = restTemplate.getForObject("http://localhost:8081/greeting", String.class);
  13. return "Hello, " + response;
  14. }
  15. }

В этом примере/helloКонечная точка вызовет другую службу/greetingконечная точка.

4. Запустите сервер Zipkin.

Быстро запустить сервер Zipkin можно через Docker:

docker run -d -p 9411:9411 openzipkin/zipkin

5. Запустите приложение

Запустите приложение Spring Boot и посетитеhttp://localhost:8080/hello конечная точка. На этом этапе Spring Cloud Sleuth автоматически сгенерирует информацию трассировки для вашего запроса и отправит эту информацию на сервер Zipkin.

6. Просмотр информации об отслеживании

Откройте браузер и посетитеhttp://localhost:9411 , вы увидите веб-интерфейс Zipkin. Здесь вы можете просмотреть всю информацию об отслеживании, включая время, затраченное на каждый запрос, ссылки на звонки и т. д.

Подведем итог

Интегрировав Zipkin и Spring Cloud Sleuth, мы можем легко реализовать распределенную трассировку в микросервисной архитектуре. Это не только помогает нам быстро обнаруживать и решать проблемы, но также помогает оптимизировать производительность системы. Я надеюсь, что этот блог поможет вам понять и использовать эти два мощных инструмента.

Рекомендации