Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka) · leksjon

Distribuert sporing med Sleuth/Zipkin

Implementer distribuert sporing med Spring Cloud Sleuth og Zipkin for å følge hendelsesflyter på tvers av flere mikrotjenester.

Leksjon 3 av 411 trinn

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

Sporing 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 @KafkaListener mottar 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/zipkin

Produsent 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!

Gratis å komme i gang

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

  1. Kafka-metrikker (JMX) og helsesjekker
  2. Integrasjon med Prometheus og Grafana
  3. Distribuert sporing med Sleuth/Zipkin
  4. Overvåking av consumer lag og konfigurering av varsler
← Tilbake til Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka)