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.
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:
Im Folgenden zeigen wir anhand eines einfachen Beispiels, wie man Zipkin und Spring Cloud Sleuth in eine Spring Boot-Anwendung integriert.
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:
- <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>
existierenapplication.properties
Fügen Sie der Datei die folgende Konfiguration hinzu:
- 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
Gibt die Adresse des Zipkin-Servers an.spring.sleuth.sampler.probability
Auf 1,0 einstellen, um alle Trace-Daten zu protokollieren.Erstellen Sie einen einfachen REST-Controller, um Serviceaufrufe zu simulieren:
- 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;
- }
- }
In diesem Beispiel,/hello
Der Endpunkt ruft einen anderen Dienst auf/greeting
Endpunkt.
Sie können einen Zipkin-Server schnell über Docker starten:
docker run -d -p 9411:9411 openzipkin/zipkin
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.
Ö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.
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.