Κοινή χρήση τεχνολογίας

Κατανεμημένη ανίχνευση χρησιμοποιώντας Zipkin με Spring Cloud Sleuth

2024-07-12

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

Σε μια αρχιτεκτονική μικροϋπηρεσιών, οι ζεύξεις κλήσεων μεταξύ των υπηρεσιών μπορεί να είναι πολύ περίπλοκες, γεγονός που καθιστά δύσκολη τη θέση του προβλήματος και τη βελτιστοποίηση απόδοσης. Για να λύσουμε αυτό το πρόβλημα, μπορούμε να χρησιμοποιήσουμε ένα κατανεμημένο σύστημα ανίχνευσης για την παρακολούθηση και τη διάγνωση συνδέσμων αιτημάτων σε όλη την αρχιτεκτονική των μικροϋπηρεσιών. Το Zipkin και το Spring Cloud Sleuth είναι δύο πολύ δημοφιλή εργαλεία που μας βοηθούν να πετύχουμε αυτόν τον στόχο.

Τι είναι το Zipkin and Spring Cloud Sleuth;

  • φερμουάρΕίναι ένα κατανεμημένο σύστημα παρακολούθησης που μπορεί να μας βοηθήσει να συλλέξουμε δεδομένα χρονισμού στην αρχιτεκτονική μικροϋπηρεσιών, ώστε να μπορούμε να αναλύουμε και να παρακολουθούμε την απόδοση του συστήματος.
  • Spring Cloud Sleuthείναι ένα έργο Spring Cloud που παρέχει αυτοματοποιημένες δυνατότητες κατανεμημένης ανίχνευσης για εφαρμογές Spring Boot και μπορεί να ενσωματωθεί με το Zipkin.

Γιατί χρειάζεστε κατανεμημένη ανίχνευση;

Σε μια αρχιτεκτονική microservice, ένα αίτημα χρήστη μπορεί να υποβληθεί σε επεξεργασία από πολλές υπηρεσίες. Χωρίς ένα κατανεμημένο σύστημα ανίχνευσης, όταν παρουσιάζεται ένα πρόβλημα, είναι δύσκολο να προσδιοριστεί σε ποια υπηρεσία βρίσκεται το πρόβλημα ή σε ποια σύνδεση κλήσης υπηρεσίας. Τα κατανεμημένα συστήματα ανίχνευσης μπορούν να μας βοηθήσουν:

  • Εντοπίστε γρήγορα τα σημεία συμφόρησης απόδοσης.
  • Παρακολουθήστε τις σχέσεις κλήσης μεταξύ των υπηρεσιών.
  • Αναλύστε και βελτιστοποιήστε την απόδοση του συστήματος.

Ενσωματώστε το Zipkin και το Spring Cloud Sleuth

Παρακάτω θα χρησιμοποιήσουμε ένα απλό παράδειγμα για να δείξουμε πώς να ενσωματώσετε το Zipkin και το Spring Cloud Sleuth σε μια εφαρμογή Spring Boot.

1. Δημιουργήστε ένα έργο Spring Boot

Αρχικά, πρέπει να δημιουργήσουμε ένα έργο Spring Boot. Μπορείτε να χρησιμοποιήσετε το Spring Initializr για να δημιουργήσετε γρήγορα ένα έργο και να προσθέσετε τις ακόλουθες εξαρτήσεις:

  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. Διαμορφώστε την εφαρμογή

υπάρχειapplication.propertiesΠροσθέστε την ακόλουθη διαμόρφωση στο αρχείο:

  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-urlΚαθορίζει τη διεύθυνση του διακομιστή Zipkin.
  • spring.sleuth.sampler.probabilityΟρίστε σε 1.0 για να καταγράψετε όλα τα δεδομένα ίχνους.

3. Γράψτε δείγμα κώδικα

Δημιουργήστε έναν απλό ελεγκτή REST για προσομοίωση κλήσεων υπηρεσίας:

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

Σε αυτό το παράδειγμα,/helloΤο τελικό σημείο θα καλέσει μια άλλη υπηρεσία/greetingτελικό σημείο.

4. Εκκινήστε τον διακομιστή Zipkin

Μπορείτε να ξεκινήσετε γρήγορα έναν διακομιστή Zipkin μέσω του Docker:

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

5. Εκτελέστε την εφαρμογή

Ξεκινήστε την εφαρμογή Spring Boot και επισκεφθείτεhttp://localhost:8080/hello τελικό σημείο. Σε αυτό το σημείο, το Spring Cloud Sleuth θα δημιουργήσει αυτόματα πληροφορίες ανίχνευσης για το αίτημά σας και θα στείλει αυτές τις πληροφορίες στον διακομιστή Zipkin.

6. Προβολή πληροφοριών παρακολούθησης

Ανοίξτε το πρόγραμμα περιήγησής σας και επισκεφθείτεhttp://localhost:9411 , θα δείτε τη διεπαφή ιστού του Zipkin. Εδώ, μπορείτε να δείτε όλες τις πληροφορίες παρακολούθησης, συμπεριλαμβανομένου του χρόνου που απαιτείται για κάθε αίτημα, συνδέσμων κλήσεων κ.λπ.

Συνοψίζω

Ενσωματώνοντας το Zipkin και το Spring Cloud Sleuth, μπορούμε εύκολα να εφαρμόσουμε κατανεμημένη ανίχνευση στην αρχιτεκτονική μικροϋπηρεσιών. Αυτό όχι μόνο μας βοηθά να εντοπίζουμε και να επιλύουμε γρήγορα προβλήματα, αλλά και να βελτιστοποιούμε την απόδοση του συστήματος. Ελπίζω αυτό το ιστολόγιο να σας βοηθήσει να κατανοήσετε και να χρησιμοποιήσετε αυτά τα δύο ισχυρά εργαλεία.

βιβλιογραφικές αναφορές