Event Streaming
Event streaming is a way to record and distribute facts as they happen, so many systems can react now or read the same history later.
itDistributed systems, messaging, and integration | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: Event Streaming
Event streaming is what happens when a system stops sending a fact to one waiting recipient and writes it down where several readers can find it. An order is placed, a payment is authorized, or a sensor reports a reading. The fact becomes an event, and the producer can then get out of the way. This is courteous. It also prevents the producer from becoming the world's least popular switchboard.
The useful trick is retention. A work queue often removes a message after somebody handles it. A retained stream keeps records long enough for a new consumer to read old events, for an existing consumer to rebuild a view, or for a bug fix to have something to work with besides regret. That makes a stream closer to a shared history than a row of errands.
The history has compartments. A topic groups related events, and a partition is one ordered subdivision of that topic. Use a stable key when one customer's or order's events need to stay together. More partitions allow more parallel processing, which is excellent news for throughput and less excellent news for anyone expecting one grand universal order. That order does not appear merely because the topic name looks authoritative.
Consumers keep a reading position called an offset or cursor. A consumer group shares work among its members, while separate groups each get their own view of the same events. This is how one order event can lead to fulfillment, a notification, analytics, and fraud checks without the order service knowing the cast list.
The awkward part is failure, because it always arrives carrying paperwork. At-least-once delivery can repeat an event. A broker transaction has a boundary, but it does not automatically make a separate database or payment API repeat-safe. Give events stable identifiers and make the destination operation idempotent when possible. The Practice tab puts that rule under a lamp with a local broker and duplicate records.
Read the Intro for the full model and its limits. Use Slides when the producer-to-consumer shape needs to stay in your head. Keep the Cheatsheet nearby for delivery, partition, and recovery decisions. The Quiz checks the vocabulary, while Field Notes covers the costs that wait behind the cheerful words replay and parallelism. The point is not to worship the stream. It is to know when several independent reactions and readable history are worth the operational work.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://kafka.apache.org/intro/
Supports
- Events, producers, consumers, topics, partitions, brokers, and retained event history
- Per-partition ordering, key-based partition placement, consumer groups, and independent consumers
- Event streaming as publish, store, and process
- https://kafka.apache.org/documentation/#semantics
Supports
- At-most-once, at-least-once, and exactly-once delivery semantics
- Idempotent producers and transactional processing boundaries
- https://kafka.apache.org/documentation/#design
Supports
- Persistence, replication, and distributed design considerations
- https://cloudevents.io/
Supports
- CloudEvents as a specification for describing event data in a common way
- Event-data portability across services and platforms
- https://docs.nats.io/nats-concepts/what-is-nats
Supports
- NATS as a messaging system with publish and subscribe concepts
- https://github.com/manuzhang/awesome-streaming
Supports
- Curated ecosystem discovery for streaming frameworks and applications
- https://github.com/samber/awesome-olap
Supports
- Curated entries for Apache Pulsar, NATS JetStream, Apache Flink, and related streaming tools
- https://debezium.io/
Supports
- Debezium as an open-source change data capture platform that emits change events
- https://flink.apache.org/
Supports
- Apache Flink as a framework for stateful stream processing
- https://pulsar.apache.org/
Supports
- Apache Pulsar as a distributed messaging and streaming platform
- https://www.rabbitmq.com/streams.html
Supports
- RabbitMQ Streams as persistent append-only log streams
- https://incubator.apache.org/projects/kafka.html
Supports
- Kafka entered the Apache Incubator in July 2011 and graduated in October 2012.
- https://blogsarchive.apache.org/foundation/entry/the-apache-software-foundation-announces21
Supports
- Apache Kafka 1.0.0 shipped in November 2017 with exactly-once semantics improvements.
- https://pulsar.apache.org/blog/2022/05/11/apache-pulsar-community-welcomes-500th-contributor/
Supports
- Apache Pulsar was committed to open source in 2016 and became an Apache Top-Level Project in September 2018.
- https://blogsarchive.apache.org/kafka/entry/what-s-new-in-apache6
Supports
- Apache Kafka 3.0 introduced KRaft improvements in September 2021.
- https://blogsarchive.apache.org/kafka/entry/what-rsquo-s-new-in
Supports
- Apache Kafka 3.3 marked KRaft production ready for new clusters in October 2022.
- https://blogsarchive.apache.org/kafka/entry/what-s-new-in-apache9
Supports
- Apache Kafka 3.4 introduced early-access ZooKeeper-to-KRaft migration in February 2023.
- https://engineering.linkedin.com/kafka/running-kafka-scale
Supports
- Operational lessons from LinkedIn about tiered Kafka, auditing completeness, and end-to-end delivery checks.
- https://engineering.linkedin.com/apache-kafka/how_we_re-improving-and-advancing-kafka-linkedin
Supports
- LinkedIn operational experience with quotas, consumer lag monitoring, replication lag, and schema coordination.
- https://docs.confluent.io/cloud/current/overview.html
Supports
- Confluent Cloud as a managed Kafka service.
- https://docs.redpanda.com/current/get-started/
Supports
- Redpanda as a Kafka-compatible streaming platform.
- https://docs.nats.io/nats-concepts/jetstream
Supports
- JetStream persistence and replay capabilities for NATS.
- https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html
Supports
- Amazon MSK as a managed Apache Kafka service.
