Technologieaustausch

Verteilte Ablaufverfolgung mit Zipkin mit Spring Cloud Sleuth

2024-07-12

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

In einer Microservice-Architektur können die Aufrufverbindungen zwischen Diensten sehr komplex sein, was die Problemlokalisierung und Leistungsoptimierung erschwert. Um dieses Problem zu lösen, können wir ein verteiltes Tracing-System verwenden, um Anforderungslinks in der gesamten Microservices-Architektur zu überwachen und zu diagnostizieren. Zipkin und Spring Cloud Sleuth sind zwei sehr beliebte Tools, die uns dabei helfen, dieses Ziel zu erreichen.

Was ist Zipkin und Spring Cloud Sleuth?

  • ZipkinEs handelt sich um ein verteiltes Trackingsystem, das uns dabei helfen kann, Zeitdaten in der Microservice-Architektur zu sammeln, damit wir die Systemleistung analysieren und überwachen können.
  • Frühlingswolken-Detektivist ein Spring Cloud-Projekt, das automatisierte verteilte Tracing-Funktionen für Spring Boot-Anwendungen bereitstellt und in Zipkin integriert werden kann.

Warum benötigen Sie verteiltes Tracing?

In einer Microservice-Architektur kann eine Benutzeranfrage von mehreren Diensten verarbeitet werden. Ohne ein verteiltes Tracing-System ist es beim Auftreten eines Problems schwierig zu bestimmen, bei welchem ​​Dienst das Problem liegt oder welcher Service-Aufruf-Link vorliegt. Verteilte Rückverfolgungssysteme können uns helfen:

  • Leistungsengpässe schnell lokalisieren.
  • Überwachen Sie die Aufrufbeziehungen zwischen Diensten.
  • Analysieren und optimieren Sie die Systemleistung.

Integrieren Sie Zipkin und Spring Cloud Sleuth

Im Folgenden zeigen wir anhand eines einfachen Beispiels, wie man Zipkin und Spring Cloud Sleuth in eine Spring Boot-Anwendung integriert.

1. Erstellen Sie ein Spring Boot-Projekt

Zuerst müssen wir ein Spring Boot-Projekt erstellen. Mit Spring Initializr können Sie schnell ein Projekt erstellen und die folgenden Abhängigkeiten hinzufügen:

  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. Konfigurieren Sie die Anwendung

existierenapplication.propertiesFügen Sie der Datei die folgende Konfiguration hinzu:

  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-urlGibt die Adresse des Zipkin-Servers an.
  • spring.sleuth.sampler.probabilityAuf 1,0 einstellen, um alle Trace-Daten zu protokollieren.

3. Schreiben Sie Beispielcode

Erstellen Sie einen einfachen REST-Controller, um Serviceaufrufe zu simulieren:

  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 diesem Beispiel,/helloDer Endpunkt ruft einen anderen Dienst auf/greetingEndpunkt.

4. Starten Sie den Zipkin-Server

Sie können einen Zipkin-Server schnell über Docker starten:

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

5. Führen Sie die Anwendung aus

Starten Sie Ihre Spring Boot-Anwendung und besuchen Siehttp://localhost:8080/hello Endpunkt. Zu diesem Zeitpunkt generiert Spring Cloud Sleuth automatisch Tracing-Informationen für Ihre Anfrage und sendet diese Informationen an den Zipkin-Server.

6. Tracking-Informationen anzeigen

Öffnen Sie Ihren Browser und besuchen Siehttp://localhost:9411 , sehen Sie die Weboberfläche von Zipkin. Hier können Sie alle Tracking-Informationen einsehen, einschließlich der für jede Anfrage benötigten Zeit, Anruflinks usw.

Zusammenfassen

Durch die Integration von Zipkin und Spring Cloud Sleuth können wir verteiltes Tracing problemlos in der Microservice-Architektur implementieren. Dies hilft uns nicht nur, Probleme schnell zu lokalisieren und zu lösen, sondern hilft uns auch, die Systemleistung zu optimieren. Ich hoffe, dieser Blog hilft Ihnen, diese beiden leistungsstarken Tools zu verstehen und zu nutzen.

Verweise