Partage de technologie

Traçage distribué à l'aide de Zipkin avec Spring Cloud Sleuth

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.

Qu'est-ce que Zipkin et Spring Cloud Sleuth ?

  • ZipkinIl s'agit d'un système de suivi distribué qui peut nous aider à collecter des données de synchronisation dans une architecture de microservices afin que nous puissions analyser et surveiller les performances du système.
  • Détective des nuages ​​printaniersest un projet Spring Cloud qui fournit des capacités de traçage distribuées automatisées pour les applications Spring Boot et peut être intégré à Zipkin.

Pourquoi avez-vous besoin d’un traçage distribué ?

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 à :

  • Localisez rapidement les goulots d’étranglement en matière de performances.
  • Surveillez les relations d’appel entre les services.
  • Analyser et optimiser les performances du système.

Intégrez Zipkin et Spring Cloud Sleuth

Ci-dessous, nous utiliserons un exemple simple pour montrer comment intégrer Zipkin et Spring Cloud Sleuth dans une application Spring Boot.

1. Créez un projet 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 :

  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. Configurez l'application

existerapplication.propertiesAjoutez la configuration suivante au fichier :

  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-urlSpécifie l'adresse du serveur Zipkin.
  • spring.sleuth.sampler.probabilityRéglez sur 1,0 pour enregistrer toutes les données de trace.

3. Écrivez un exemple de code

Créez un contrôleur REST simple pour simuler les appels de service :

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

Dans cet exemple,/helloLe point de terminaison appellera un autre service/greetingpoint final.

4. Démarrez le serveur Zipkin

Vous pouvez démarrer rapidement un serveur Zipkin via Docker :

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

5. Exécutez l'application

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.

6. Afficher les informations de suivi

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.

Résumer

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.

Les références