Streaming
Apache Kafka — distribuovaná streamovací platforma
Apache Kafka je standard pro event streaming. Miliony zpráv za sekundu, garantovaná doručitelnost a neomezená škálovatelnost.
Architektura a koncepty
Kafka je distribuovaný commit log — zprávy persistentně ukládá a umožňuje opakované čtení.
Koncepty
- Topic — logický kanál
- Partition — fyzické rozdělení pro paralelismus
- Consumer Group — automatické rozdělení partition
- Broker — server v clusteru
from confluent_kafka import Producer, Consumer
import json
producer = Producer({'bootstrap.servers': 'kafka:9092'})
producer.produce('orders', key=b'123', value=json.dumps(order).encode())
producer.flush()
consumer = Consumer({
'bootstrap.servers': 'kafka:9092',
'group.id': 'processor',
'auto.offset.reset': 'earliest',
})
consumer.subscribe(['orders'])
while True:
msg = consumer.poll(1.0)
if msg: process(json.loads(msg.value()))
Best practices
- Replication factor 3
- Idempotentní producent
- Schema Registry — verzování schémat
Shrnutí
Kafka je základ event-driven architektury. Topics, partitions a consumer groups pro škálovatelné real-time pipeline.