2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Dans une architecture de microservices, les liens d'appel entre les services peuvent être très complexes, ce qui rend difficile la localisation des problèmes et l'optimisation des performances. Pour résoudre ce problème, nous pouvons utiliser un système de traçage distribué pour surveiller et diagnostiquer les liens de requêtes dans l'ensemble de l'architecture des microservices. Zipkin et Spring Cloud Sleuth sont deux outils très populaires qui nous aident à atteindre cet objectif.
Dans une architecture de microservices, une demande d'utilisateur peut être traitée par plusieurs services. Sans système de traçage distribué, lorsqu'un problème survient, il est difficile de déterminer à quel service le problème réside ou quel lien d'appel de service. Les systèmes de traçage distribués peuvent nous aider à :
Ci-dessous, nous utiliserons un exemple simple pour montrer comment intégrer Zipkin et Spring Cloud Sleuth dans une application Spring Boot.
Tout d’abord, nous devons créer un projet Spring Boot. Vous pouvez utiliser Spring Initializr pour créer rapidement un projet et ajouter les dépendances suivantes :
- <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>
existerapplication.properties
Ajoutez la configuration suivante au fichier :
- 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
Spécifie l'adresse du serveur Zipkin.spring.sleuth.sampler.probability
Réglez sur 1,0 pour enregistrer toutes les données de trace.Créez un contrôleur REST simple pour simuler les appels de service :
- 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;
- }
- }
Dans cet exemple,/hello
Le point de terminaison appellera un autre service/greeting
point final.
Vous pouvez démarrer rapidement un serveur Zipkin via Docker :
docker run -d -p 9411:9411 openzipkin/zipkin
Démarrez votre application Spring Boot et visitezhttp://localhost:8080/hello
point final. À ce stade, Spring Cloud Sleuth générera automatiquement des informations de traçage pour votre demande et enverra ces informations au serveur Zipkin.
Ouvrez votre navigateur et visitezhttp://localhost:9411
, vous verrez l'interface Web de Zipkin. Ici, vous pouvez afficher toutes les informations de suivi, y compris le temps nécessaire à chaque demande, les liens d'appel, etc.
En intégrant Zipkin et Spring Cloud Sleuth, nous pouvons facilement implémenter le traçage distribué dans une architecture de microservices. Cela nous aide non seulement à localiser et à résoudre rapidement les problèmes, mais également à optimiser les performances du système. J'espère que ce blog vous aidera à comprendre et à utiliser ces deux outils puissants.