Hold the streaming mental model: events, partitions, delivery semantics
Build the vocabulary before touching a cluster: events instead of rows, partitions instead of tables, at-least-once delivery instead of exactly-once, and the lambda/kappa decision for speed versus correctness. Every later lesson in this series leans on these four ideas.
At a glance
| When | You are new to streaming and need the vocabulary before touching a cluster; A team debate between lambda and kappa needs a decision framework |
|---|---|
| Where | Streaming |
| Why | Every streaming incident traces back to a violated assumption about ordering, delivery, or replay — hold the model before holding the tools. |
Learning objectives
- Explain why ordering and partitions behave the way they do
- Treat at-least-once delivery and replays as the normal case
- Choose between lambda, kappa, and plain batch for a latency and reprocessing need
What you need
- No cluster required — this is a concepts lesson
- The Apache Kafka documentation open beside you
Steps
- Read the map first — the docs cover architecture and design, delivery semantics, the protocol, consumer groups and offsets, operations, and security. (from ref-kafka-docs )
- The design section explains why ordering and partitions behave the way they do; the operations section is the runbook companion. (from ref-kafka-docs )
- Set your expectations for delivery — at-least-once delivery is the norm, replays happen after failure, and consumers must not see duplicates. (from pattern-streaming-dedup-upsert )
- Name the core tradeoff — streaming is fast but hard; batch is simple but slow; you need both speed and correctness. (from pattern-lambda-vs-kappa )
- Learn the two architectures — Lambda runs a batch layer (authoritative, reprocessable) plus a speed layer (approximate, low-latency), merged at query time; Kappa is one streaming path where reprocessing means replaying the log, which requires long log retention and replay safety. (from pattern-lambda-vs-kappa )
- Carry one health probe into every cluster — is lag rising, flat, or falling? Flat at a high number is fine; rising is not. (from skill-kafka-lag-triage )
Check yourself
- You can say why a partition gives per-key ordering and why the design section of the docs is where that behavior is explained.
- Asked whether a nightly batch needs lambda or kappa, you answer with the pattern's own exit — neither, if a nightly batch genuinely meets the SLA.
Worked example
Lambda vs Kappa in one view — from pattern-lambda-vs-kappa
Lambda: source ─┬─ batch (authoritative) ─┐
└─ speed (approx) ─┴─▶ serve
Kappa: source ─▶ stream ─▶ table ─▶ serve (reprocess = replay)
The delivery contract — from pattern-streaming-dedup-upsert
- At-least-once delivery is the norm
- Replays happen after failure
- Consumers must not see duplicates
The three questions — from skill-kafka-lag-triage
1. Is lag rising, flat, or falling? Flat at a high number is fine; rising is not.
2. Is lag even across partitions? Skew means a hot key, not capacity.
3. Is the consumer group stable? Frequent `PreparingRebalance` is the real bug.
Sourced from
Security scan
Last sweep 2026-10-24: 0 finding(s), 0 marked as examples.
Common gotchas
- At-least-once is the norm — replays happen after failure, so consumers must tolerate duplicates from day one.
- Flat lag at a high number is fine; rising is not — do not alert on an absolute lag number.
- Lambda means two code paths and two bugs — the speed layer must stay consistent with the batch layer.
Production considerations
- Keep raw immutable so history is always reprocessable — the modern default is a single lakehouse path with replayable streams, a pragmatic kappa.
- Neither pattern if a nightly batch genuinely meets the SLA — keep it simple.
Diagram
streaming mental model
|
|- events, not rows --> append-only log, ordered per partition
|
|- at-least-once --> replays happen after failure --> consumers dedupe
|
|- batch: simple + slow | stream: fast + hard
|
|- lambda --> batch (authoritative) + speed (approx) --> serve
|- kappa --> one path; reprocess = replay the log
|
--> probe every cluster: is lag rising, flat, or falling?
Registry stats
| Verification | community · Oct 21, 2026 |
|---|---|
| Completeness | 81 |
| Trust multiplier | ×1.25 |
| Composite | 34.15 · adequate |
| Freshness | 3 days since last source check |
| Difficulty | beginner |
| Version | 0.1.0 |
| License | CC-BY-4.0 |
| Security flags | none |
Did this solve your problem?
Hold the streaming mental model: events, partitions, delivery semantics