Compartilhamento de tecnologia

Rastreamento distribuído usando Zipkin com Spring Cloud Sleuth

2024-07-12

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

Em uma arquitetura de microsserviços, os links de chamadas entre serviços podem ser muito complexos, o que dificulta a localização do problema e a otimização do desempenho. Para resolver esse problema, podemos usar um sistema de rastreamento distribuído para monitorar e diagnosticar links de solicitação em toda a arquitetura de microsserviços. Zipkin e Spring Cloud Sleuth são duas ferramentas muito populares que nos ajudam a atingir esse objetivo.

O que é Zipkin e Spring Cloud Sleuth?

  • ZipkinÉ um sistema de rastreamento distribuído que pode nos ajudar a coletar dados de tempo na arquitetura de microsserviços para que possamos analisar e monitorar o desempenho do sistema.
  • Detetive da Nuvem da Primaveraé um projeto Spring Cloud que fornece recursos de rastreamento distribuído automatizado para aplicativos Spring Boot e pode ser integrado ao Zipkin.

Por que você precisa de rastreamento distribuído?

Numa arquitetura de microsserviços, uma solicitação do usuário pode ser processada por vários serviços. Sem um sistema de rastreamento distribuído, quando ocorre um problema, é difícil determinar em qual serviço o problema está ou em qual link de chamada de serviço. Os sistemas de rastreamento distribuído podem nos ajudar:

  • Localize rapidamente gargalos de desempenho.
  • Monitore os relacionamentos de chamada entre serviços.
  • Analise e otimize o desempenho do sistema.

Integre Zipkin e Spring Cloud Sleuth

Abaixo usaremos um exemplo simples para mostrar como integrar Zipkin e Spring Cloud Sleuth em uma aplicação Spring Boot.

1. Crie um projeto Spring Boot

Primeiro, precisamos criar um projeto Spring Boot. Você pode usar Spring Initializr para criar rapidamente um projeto e adicionar as seguintes dependências:

  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. Configure o aplicativo

existirapplication.propertiesAdicione a seguinte configuração ao arquivo:

  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-urlEspecifica o endereço do servidor Zipkin.
  • spring.sleuth.sampler.probabilityDefina como 1.0 para registrar todos os dados de rastreamento.

3. Escreva um código de exemplo

Crie um controlador REST simples para simular chamadas de serviço:

  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. }

Neste exemplo,/helloO endpoint chamará outro serviço/greetingponto final.

4. Inicie o servidor Zipkin

Você pode iniciar rapidamente um servidor Zipkin através do Docker:

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

5. Execute o aplicativo

Inicie seu aplicativo Spring Boot e visitehttp://localhost:8080/hello ponto final. Neste ponto, o Spring Cloud Sleuth gerará automaticamente informações de rastreamento para sua solicitação e enviará essas informações ao servidor Zipkin.

6. Visualize informações de rastreamento

Abra seu navegador e visitehttp://localhost:9411 , você verá a interface web do Zipkin. Aqui, você pode visualizar todas as informações de rastreamento, incluindo o tempo necessário para cada solicitação, links de chamadas, etc.

Resumir

Ao integrar o Zipkin e o Spring Cloud Sleuth, podemos implementar facilmente o rastreamento distribuído na arquitetura de microsserviços. Isso não apenas nos ajuda a localizar e resolver problemas rapidamente, mas também a otimizar o desempenho do sistema. Espero que este blog ajude você a compreender e usar essas duas ferramentas poderosas.

Referências