моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
В микросервисной архитектуре связи вызовов между службами могут быть очень сложными, что затрудняет обнаружение проблем и оптимизацию производительности. Чтобы решить эту проблему, мы можем использовать распределенную систему трассировки для мониторинга и диагностики ссылок на запросы по всей архитектуре микросервисов. Zipkin и Spring Cloud Sleuth — два очень популярных инструмента, которые помогают нам достичь этой цели.
В микросервисной архитектуре запрос пользователя может обрабатываться несколькими службами. Без распределенной системы трассировки при возникновении проблемы трудно определить, в каком сервисе проблема или в каком канале вызова службы. Распределенные системы трассировки могут помочь нам:
Ниже мы будем использовать простой пример, чтобы показать, как интегрировать Zipkin и Spring Cloud Sleuth в приложение Spring Boot.
Сначала нам нужно создать проект Spring Boot. Вы можете использовать Spring Initializr, чтобы быстро создать проект и добавить следующие зависимости:
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-sleuth</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-zipkin</artifactId>
- </dependency>
- </dependencies>
существоватьapplication.properties
Добавьте в файл следующую конфигурацию:
- spring.application.name=my-service
- server.port=8080
-
- spring.zipkin.base-url=http://localhost:9411
- spring.sleuth.sampler.probability=1.0
spring.zipkin.base-url
Указывает адрес сервера Zipkin.spring.sleuth.sampler.probability
Установите значение 1.0, чтобы регистрировать все данные трассировки.Создайте простой контроллер REST для имитации вызовов служб:
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.client.RestTemplate;
-
- @RestController
- public class MyController {
-
- private final RestTemplate restTemplate;
-
- public MyController(RestTemplate restTemplate) {
- this.restTemplate = restTemplate;
- }
-
- @GetMapping("/hello")
- public String hello() {
- String response = restTemplate.getForObject("http://localhost:8081/greeting", String.class);
- return "Hello, " + response;
- }
- }
В этом примере/hello
Конечная точка вызовет другую службу/greeting
конечная точка.
Быстро запустить сервер Zipkin можно через Docker:
docker run -d -p 9411:9411 openzipkin/zipkin
Запустите приложение Spring Boot и посетитеhttp://localhost:8080/hello
конечная точка. На этом этапе Spring Cloud Sleuth автоматически сгенерирует информацию трассировки для вашего запроса и отправит эту информацию на сервер Zipkin.
Откройте браузер и посетитеhttp://localhost:9411
, вы увидите веб-интерфейс Zipkin. Здесь вы можете просмотреть всю информацию об отслеживании, включая время, затраченное на каждый запрос, ссылки на звонки и т. д.
Интегрировав Zipkin и Spring Cloud Sleuth, мы можем легко реализовать распределенную трассировку в микросервисной архитектуре. Это не только помогает нам быстро обнаруживать и решать проблемы, но также помогает оптимизировать производительность системы. Я надеюсь, что этот блог поможет вам понять и использовать эти два мощных инструмента.