Distribuert sporing med Sleuth/Zipkin
Implementer distribuert sporing med Spring Cloud Sleuth og Zipkin for å følge hendelsesflyter på tvers av flere mikrotjenester.
Distribuert sporing med Sleuth/Zipkin er en gratis leksjon i Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka) på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka), og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka) inneholder totalt 4 leksjoner.
Hvorfor spore distribuerte systemer
I en mikrotjenestearkitektur går én enkelt brukerforespørsel ofte gjennom mange ulike tjenester. Denne distribuerte strukturen gjør det svært vanskelig å følge forespørselens flyt og finne ut hvor problemer oppstår.
Distribuert sporing hjelper Dem med å visualisere hele forespørselens reise gjennom alle involverte tjenester, slik at feilsøking og ytelsesovervåking blir mye enklere.
Trace og span: navigasjonsverktøyene Deres
Distribuert sporing bygger på to sentrale konsepter:
- Trace: Representerer hele forespørselens reise gjennom et system, fra start til slutt. Det er som en fortelling om én operasjon.
- Span: En enkelt, logisk arbeidsenhet i en trace. Hver operasjon (for eksempel en HTTP-forespørsel, et databasekall eller sending av en Kafka-melding) får sin egen span. Span-er har forelder–barn-relasjoner som viser årsak og virkning.
Møt Spring Cloud Sleuth
Spring Cloud Sleuth er et kraftig bibliotek for Spring Boot-applikasjoner som automatisk legger til funksjonalitet for distribuert sporing. Det instrumenterer applikasjonen for å generere, samle inn og videreføre sporingsinformasjon.
- Det legger automatisk til trace- og span-ID-er i loggene Deres.
- Det viderefører disse ID-ene på tvers av tjenestegrenser (HTTP, meldinger og så videre).
Det betyr at De i de fleste tilfeller slipper å håndtere trace-ID-er manuelt!
Kom i gang: Legg til Sleuth og Zipkin
For å integrere Spring Cloud Sleuth i Spring Boot-prosjektet Deres legger De til følgende avhengigheter i pom.xml:
spring-cloud-starter-sleuth: Det sentrale biblioteket for sporing.spring-cloud-sleuth-zipkin: Integrerer med Zipkin for visualisering av sporingsforløp.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>Minimal Sleuth-konfigurasjon
Etter at De har lagt til avhengighetene, er en minimal konfigurasjon i application.properties vanligvis nok til å komme i gang. Sleuth oppdager og konfigurerer seg selv automatisk.
Angi URL-en til en Zipkin-server for å sende sporingsforløp dit:
spring.application.name=my-kafka-producer-app
spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1.0Sporing på tvers av Kafka-meldinger
En av Sleuths viktigste funksjoner er muligheten til å videreføre sporingskontekst gjennom meldingssystemer som Kafka. Når De bruker Spring sin KafkaTemplate til å sende meldinger:
- Sleuth setter automatisk inn trace- og span-ID-er i topptekstene til Kafka-meldingen.
- Når en
@KafkaListenermottar meldingen, henter Sleuth ut disse topptekstene og fortsetter sporingen ved å koble produsentens span til konsumentens span.
Dette oppretter en sammenhengende trace, også på tvers av asynkrone Kafka-meldingsflyter.
Zipkin: Se sporingsforløpene Deres
Mens Sleuth genererer og viderefører sporingsdata, er Zipkin systemet for distribuert sporing som samler inn, lagrer og visualiserer disse dataene. Det tilbyr et brukergrensesnitt der De kan:
- Søke etter sporingsforløp etter tjenestenavn, tidsstempel eller trace-ID.
- Se en Gantt-diagramrepresentasjon av et sporingsforløp, som viser rekkefølgen og varigheten til span-ene.
- Identifisere ytelsesflaskehalser og feil på tvers av mikrotjenestene Deres.
Start Zipkin lokalt
For lokal utvikling og testing kan De enkelt kjøre en Zipkin-server ved hjelp av Docker. Dette gir en rask måte å se sporingsforløpene på uten et komplisert oppsett.
docker run -d -p 9411:9411 openzipkin/zipkinProdusent med Sleuth-instrumentering
Her er en enkel Spring Boot Kafka-produsent. Når Sleuth og Zipkin er konfigurert (som vist i tidligere scener), vil Sleuth automatisk legge til sporingshoder i Kafka-meldingen når De kjører dette. De vil se traceId og spanId i applikasjonsloggene og i Zipkin-grensesnittet.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class SleuthKafkaProducerApplication {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
private static final String TOPIC = "my-traceable-topic";
public static void main(String[] args) {
SpringApplication.run(SleuthKafkaProducerApplication.class, args);
}
@GetMapping("/send")
public String sendMessage(@RequestParam("message") String message) {
kafkaTemplate.send(TOPIC, message);
return "Message sent with trace context: " + message;
}
}Hurtigsjekk: Sporingskonsepter
Når en Spring Boot-applikasjon med Spring Cloud Sleuth sender en melding til Kafka, hvilke av følgende påstander om sporingsinformasjon er riktige?
Leksjonsoppsummering: Spor flyten Deres
De har lært om distribuert sporing, en viktig teknikk for å forstå komplekse samspill mellom mikrotjenester. Vi har gått gjennom:
- Konseptene Trace (hele forespørselens reise) og Span (en individuell operasjon).
- Hvordan Spring Cloud Sleuth automatisk instrumenterer Spring Boot-applikasjoner, inkludert Kafka-produsenter og -konsumenter, for å videreføre sporingskonteksten.
- Rollen til Zipkin når det gjelder å samle inn og visualisere disse sporingsforløpene, slik at De får uvurderlig innsikt i systemets virkemåte.
Med disse verktøyene kan De effektivt overvåke og feilsøke hendelsesdrevne mikrotjenester!
Lær deg Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka) med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Distribuert sporing med Sleuth/Zipkin» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka), inkludert «Distribuert sporing med Sleuth/Zipkin», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka) inneholder totalt 4 leksjoner.
Hva lærer jeg i «Distribuert sporing med Sleuth/Zipkin»?
Implementer distribuert sporing med Spring Cloud Sleuth og Zipkin for å følge hendelsesflyter på tvers av flere mikrotjenester. Du øver på Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka) med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka)?
Ingen tidligere erfaring er nødvendig. Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka) på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Distribuert sporing med Sleuth/Zipkin»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka)-leksjonen?
Ja. Alle Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka)-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Kafka-metrikker (JMX) og helsesjekker
- Integrasjon med Prometheus og Grafana
- Distribuert sporing med Sleuth/Zipkin
- Overvåking av consumer lag og konfigurering av varsler