Condivisione della tecnologia

Tracciamento distribuito utilizzando Zipkin con Spring Cloud Sleuth

2024-07-12

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

In un'architettura di microservizi, i collegamenti delle chiamate tra i servizi possono essere molto complessi, il che rende difficile l'individuazione del problema e l'ottimizzazione delle prestazioni. Per risolvere questo problema, possiamo utilizzare un sistema di tracciamento distribuito per monitorare e diagnosticare i collegamenti delle richieste in tutta l'architettura dei microservizi. Zipkin e Spring Cloud Sleuth sono due strumenti molto popolari che ci aiutano a raggiungere questo obiettivo.

Cos'è Zipkin e Spring Cloud Sleuth?

  • CernieraÈ un sistema di tracciamento distribuito che può aiutarci a raccogliere dati temporali nell'architettura dei microservizi in modo da poter analizzare e monitorare le prestazioni del sistema.
  • Detective delle nuvole primaveriliè un progetto Spring Cloud che fornisce funzionalità di tracciamento distribuito automatizzato per le applicazioni Spring Boot e può essere integrato con Zipkin.

Perché è necessaria la tracciabilità distribuita?

In un'architettura di microservizi, una richiesta dell'utente può essere elaborata da più servizi. Senza un sistema di tracciamento distribuito, quando si verifica un problema, è difficile per noi determinare in quale servizio si trova il problema o quale collegamento di chiamata al servizio. I sistemi di tracciabilità distribuiti possono aiutarci:

  • Individua rapidamente i colli di bottiglia nelle prestazioni.
  • Monitorare le relazioni di chiamata tra i servizi.
  • Analizzare e ottimizzare le prestazioni del sistema.

Integra Zipkin e Spring Cloud Sleuth

Di seguito utilizzeremo un semplice esempio per mostrare come integrare Zipkin e Spring Cloud Sleuth in un'applicazione Spring Boot.

1. Crea un progetto Spring Boot

Innanzitutto, dobbiamo creare un progetto Spring Boot. Puoi utilizzare Spring Inizializr per creare rapidamente un progetto e aggiungere le seguenti dipendenze:

  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. Configurare l'applicazione

esistereapplication.propertiesAggiungi la seguente configurazione al file:

  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-urlSpecifica l'indirizzo del server Zipkin.
  • spring.sleuth.sampler.probabilityImpostare su 1.0 per registrare tutti i dati di traccia.

3. Scrivi il codice di esempio

Crea un semplice controller REST per simulare le chiamate di servizio:

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

In questo esempio,/helloL'endpoint chiamerà un altro servizio/greetingpunto finale.

4. Avvia il server Zipkin

Puoi avviare rapidamente un server Zipkin tramite Docker:

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

5. Eseguire l'applicazione

Avvia l'applicazione Spring Boot e visitahttp://localhost:8080/hello punto finale. A questo punto, Spring Cloud Sleuth genererà automaticamente le informazioni di tracciamento per la tua richiesta e invierà queste informazioni al server Zipkin.

6. Visualizza le informazioni di tracciamento

Apri il browser e visitahttp://localhost:9411 , vedrai l'interfaccia web di Zipkin. Qui puoi visualizzare tutte le informazioni di tracciamento, incluso il tempo impiegato per ciascuna richiesta, i collegamenti alle chiamate, ecc.

Riassumere

Integrando Zipkin e Spring Cloud Sleuth, possiamo facilmente implementare la tracciabilità distribuita nell'architettura dei microservizi. Questo non solo ci aiuta a individuare e risolvere rapidamente i problemi, ma ci aiuta anche a ottimizzare le prestazioni del sistema. Spero che questo blog ti aiuti a comprendere e utilizzare questi due potenti strumenti.

Riferimenti