Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

Apache Kafka — event streaming pro mikroslužby

18. 05. 2016 1 min čtení CORE SYSTEMSai

RabbitMQ nám slouží skvěle pro task queues. Ale pro event-driven architekturu — kde chcete, aby událost dostali všichni zájemci a mohli ji replay-ovat — potřebujete jiný model. Apache Kafka je distribuovaný commit log, ne message queue.

Kafka vs. RabbitMQ

RabbitMQ: zpráva je doručena jednomu konzumentu a smazána. Kafka: zpráva je zapsána do logu a uložena (dny, týdny). Každý konzument čte z logu nezávisle. Replay je možný.

Koncepty

Topics: Logické kanály (order-events, user-events). Partitions: Horizontální škálování — topic rozdělen na partitions. Consumer groups: Konzumenti ve skupině sdílejí partitions. Offsets: Každý konzument si pamatuje, kde v logu skončil.

// Producer
Properties props = new Properties();
props.put("bootstrap.servers", "kafka:9092");
props.put("key.serializer", StringSerializer.class);
props.put("value.serializer", StringSerializer.class);

Producer<String, String> producer = new KafkaProducer<>(props);
producer.send(new ProducerRecord<>("order-events", orderId, orderJson));

Use cases

  • Event sourcing — ukládání událostí místo stavu
  • Data pipeline — proudění dat mezi systémy
  • Log aggregation — centrální sběr logů
  • Stream processing — real-time transformace dat

Provozní zkušenosti

Kafka vyžaduje ZooKeeper pro koordinaci. Cluster se 3 brokery a replication factor 3 je minimum pro produkci. Operačně náročnější než RabbitMQ, ale propustnost je řádově vyšší.

Kafka pro events, RabbitMQ pro tasks

Kafka není náhrada RabbitMQ — je to jiný nástroj pro jiný problém. Event-driven architektura s Kafkou, task queues s RabbitMQ. Oba v našem stacku.

kafkastreamingeventsmicroservices