Å velge en partisjonieringsstrategi — hvordan hendelser distribueres over en topics partisjoner — er en viktig Kafka-designbeslutning som påvirker ordning, parallellisme og lastfordeling. Partisjonnøkkelen og antallet partisjoner må velges nøye.
Hvordan partisjonering fungerer
A producer's message goes to a partition based on:
→ with a KEY → hash(key) → determines the partition (same key → same partition consistently)
→ no key → distributed (round-robin / sticky) across partitions
→ the KEY choice determines ordering and distribution
Velge partisjonnøkkelen
The KEY determines two crucial things:
✓ ORDERING → all events with the same key go to the same partition → ordered together
(e.g. key=userId → all of a user's events are ordered)
✓ DISTRIBUTION → keys should spread evenly across partitions (good cardinality) → balanced load
PITFALLS:
✗ LOW cardinality / skewed keys → HOT partitions (one partition overloaded) → bottleneck
✗ Wrong ordering scope → if you need per-X ordering, key by X (but that limits parallelism
within X)
→ choose a key giving the ORDERING you need AND EVEN distribution
Velge antall partisjoner
✓ MORE partitions → more consumer parallelism (throughput), but more overhead/rebalancing
✓ Plan for GROWTH → partition count is hard to reduce; adding partitions breaks key→partition
mapping (ordering) → size for future scale upfront
✓ Rough guide: enough partitions for peak consumer parallelism (target throughput / per-consumer)
Hvorfor det betyr noe
Å forstå hvordan du velger en partisjonieringsstrategi er verdifullt fordi det er en viktig Kafka-designbeslutning som påvirker ordning, parallellisme og last, så det er relevant for å designe Kafka-topics godt.
Partisjonering er sentralt i Kafka, og å velge strategien (nøkkel og antall) påvirker systemet betydelig.
Å forstå hvordan partisjonering fungerer — meldinger går til en partisjon basert på nøkkelen (hash av nøkkelen, så samme nøkkel går konsistent til samme partisjon) eller distribueres round-robin uten en nøkkel — klargjør mekanismen.
Å forstå hvordan du velger partisjonnøkkelen er den avgjørende beslutningen: nøkkelen bestemmer ordning (alle hendelser med samme nøkkel går til samme partisjon og ordnes sammen, f.eks. nøkkelet brukerId for å ordne en brukers hendelser) og distribusjon (nøklene må fordeles jevnt over partisjoner for balansert last), med viktige fallgruver som lav-kardinalitet eller skjeve nøkler som forårsaker hot partitions (overbelastet, en flaskehals) og å velge feil ordningsomfang.
Veiledningen om å velge en nøkkel som gir nødvendig ordning og jevn distribusjon er den viktige ferdigheten.
Å forstå hvordan du velger antall partisjoner — flere partisjoner muliggjør mer consumer-parallellisme (gjennomstrømning) men med overhead, planlegging for vekst (siden partisjonantallet er vanskelig å redusere og å legge til partisjoner bryter nøkkel-til-partisjon-kartlegging og dermed ordning, så du dimensjonerer for fremtidig skala på forhånd), og grovt dimensjonerer for maksimal consumer-parallellisme — reflekterer antallsbeslutningen som påvirker skalérbarhet.
Disse partisjoneringsbeslutningene (nøkkel for ordning/distribusjon, antall for parallellisme/vekst) er viktige fordi de er konsekvensielle og vanskelige å endre senere, og påvirker direkte ordningskorrekthet, lastbalanse og skalérbarhet.
Ettersom partisjonering er en sentral, konsekvensielt Kafka-designbeslutning (som påvirker ordning, parallellisme og last) som er vanskelig å endre senere, og siden å forstå hvordan du velger partisjonnøkkelen (for ordning og jevn distribusjon, unngå hot partitions) og antall (for parallellisme og vekst) er viktig for å designe topics godt, er å forstå hvordan du velger en partisjonieringsstrategi verdifullt, praktisk relevant Kafka-kunnskap — en viktig, konsekvensielle designbeslutning som påvirker ordning, lastfordeling og skalérbarhet, som krever nøye valg av partisjonnøkkel og antall, og er sentralt for å designe Kafka-topics som ordner korrekt, balanserer last og skalerer.
