Vindusbehandling og tilstandsfulle aggregasjoner i Kafka Streams
Lær å utføre tidsvindusbaserte aggregasjoner og administrere state stores i Kafka Streams for å beregne løpende antall, summer og metrikker over hendelsesstrømmer.
Vindusbehandling og tilstandsfulle aggregasjoner i Kafka Streams er en gratis leksjon i Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka) på CoddyKit. Dette er leksjon 4 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.
Tilstandsbevarende og tilstandsløs
Operasjoner som map og filter er tilstandsløse. Aggregeringer som telling eller summering krever tilstand som bevares mellom poster.
Kafka Streams administrerer denne tilstanden for deg i lokale tilstandslagre.
Gruppere en strøm
Før du aggregerer, grupperer du poster etter nøkkel med groupByKey eller groupBy.
KGroupedStream<String, Order> grouped =
orders.groupBy((key, order) -> order.getCustomerId());Telle per nøkkel
En enkel aggregering er å telle bestillinger per kunde. Resultatet er en KTable som støttes av et tilstandslager.
KTable<String, Long> counts = grouped.count();Generell aggregering
Bruk aggregate for egendefinert akkumulering. Du oppgir en initialiseringsfunksjon og en funksjon som legger til verdier.
KTable<String, Double> totals = grouped.aggregate(
() -> 0.0,
(key, order, sum) -> sum + order.getAmount());Introdusere vinduer
Ofte ønsker du aggregeringer over et tidsvindu, for eksempel bestillinger de siste 5 minuttene. Kafka Streams støtter tumbling-, hopping- og sesjonsvinduer.
Tumbling-vinduer
Et tumbling-vindu har fast størrelse og overlapper ikke med andre vinduer. Hver post tilhører nøyaktig ett vindu.
grouped
.windowedBy(TimeWindows.ofSizeWithNoGrace(Duration.ofMinutes(5)))
.count();Hopping-vinduer
Hopping-vinduer har en størrelse og et mindre fremskritt, slik at de overlapper. En post kan falle inn i flere vinduer.
TimeWindows.ofSizeAndGrace(Duration.ofMinutes(5), Duration.ofSeconds(30))
.advanceBy(Duration.ofMinutes(1));Sesjonsvinduer
Sesjonsvinduer grupperer poster som er adskilt av perioder uten aktivitet – ideelt for brukerøkter der aktiviteten kommer i utbrudd og deretter tar pauser.
grouped
.windowedBy(SessionWindows.ofInactivityGapWithNoGrace(Duration.ofMinutes(10)))
.count();Feiltoleranse for tilstandslager
Tilstandslagre støttes av kompakterte changelog-topics i Kafka. Hvis en instans svikter, bygges tilstanden opp igjen fra changelog-en på en annen instans.
Interaktiv spørring av tilstand
Interactive Queries lar deg lese verdier fra tilstandslagre direkte fra applikasjonen og eksponere aggregeringer via et REST-endepunkt uten en ekstern database.
ReadOnlyKeyValueStore<String, Long> store =
streams.store(StoreQueryParameters.fromNameAndType(
"counts", QueryableStoreTypes.keyValueStore()));Slik henger det sammen
Tilstandsbevarende aggregeringer med vinduer gjør rå hendelsesstrømmer om til oppdaterte måltall. Grupper etter nøkkel, velg en vindustype, aggreger, og eksponer eventuelt tilstanden via interaktive spørringer.
Kjapp sjekk
Test forståelsen din av vinduer.
Oppsummering
Du har lært om vinduer og tilstandsbevarende aggregeringer.
- Grupper med
groupByKeyfør du aggregerer. - Bruk
countelleraggregatetil å bygge en KTable. - Tumbling-, hopping- og sesjonsvinduer håndterer tid på ulike måter.
- Tilstandslagre er feiltolerante ved hjelp av changelog-topics.
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 «Vindusbehandling og tilstandsfulle aggregasjoner i Kafka Streams» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Avansert Spring Boot 4: hendelsesdrevet arkitektur (Kafka), inkludert «Vindusbehandling og tilstandsfulle aggregasjoner i Kafka Streams», 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 «Vindusbehandling og tilstandsfulle aggregasjoner i Kafka Streams»?
Lær å utføre tidsvindusbaserte aggregasjoner og administrere state stores i Kafka Streams for å beregne løpende antall, summer og metrikker over hendelsesstrømmer. 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 4 av 4.
Hvor lang tid tar leksjonen «Vindusbehandling og tilstandsfulle aggregasjoner i Kafka Streams»?
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
- Introduksjon til Kafka Streams
- Strømbehandling med KStream og KTable
- Bygging av en enkel strømmeapplikasjon
- Vindusbehandling og tilstandsfulle aggregasjoner i Kafka Streams