Apache Kafka
Apache Kafka to rozproszona platforma strumieniowania zdarzeń (event streaming), rozwijana jako projekt Apache Software Foundation, pierwotnie stworzona w LinkedIn. Kafka pełni rolę trwałego, wysokoprzepustowego „kręgosłupa danych”: aplikacje-producenci publikują w niej zdarzenia (np. zamówienie, kliknięcie, odczyt czujnika), a aplikacje-konsumenci odbierają je asynchronicznie, we własnym tempie i niezależnie od siebie. W odróżnieniu od klasycznych kolejek komunikaty nie znikają po odczytaniu — pozostają w dzienniku przez skonfigurowany czas retencji.
Jak działa Apache Kafka?
Podstawową strukturą Kafki jest temat (topic) — nazwany strumień zdarzeń podzielony na partycje. Każda partycja to uporządkowany, niezmienny dziennik (append-only log), w którym kolejne komunikaty dostają rosnące numery offset. Partycje rozkładają się na wiele serwerów (brokerów) tworzących klaster, a replikacja każdej partycji na kilka brokerów zapewnia odporność na awarię pojedynczej maszyny. Konsumenci łączą się w grupy: partycje tematu są rozdzielane między członków grupy, co pozwala skalować przetwarzanie poziomo, a offset zapamiętany per grupa umożliwia wznowienie lektury dokładnie tam, gdzie została przerwana — albo celowe cofnięcie się w historii zdarzeń.
Zastosowanie w praktyce
Kafka sprawdza się wszędzie tam, gdzie liczy się przepustowość i rozprzężenie systemów:
- integracja mikroserwisów — usługi komunikują się zdarzeniami zamiast bezpośrednich wywołań, więc awaria jednej nie blokuje pozostałych;
- agregacja logów i metryk — zdarzenia z setek serwerów spływają do jednego strumienia, skąd trafiają np. do Elasticsearch;
- przetwarzanie strumieniowe — wykrywanie nadużyć, liczniki w czasie rzeczywistym, personalizacja (Kafka Streams, Flink);
- zasilanie hurtowni i data lake — Kafka Connect przenosi dane między bazami a magazynami analitycznymi.
Od strony infrastruktury Kafka lubi szybkie dyski i stabilną sieć — produkcyjne klastry stawia się zwykle na maszynach z NVMe i minimum trzema brokerami, aby replikacja miała sens. Do mniejszych projektów wystarczy pojedynczy broker w trybie KRaft, który od nowszych wersji eliminuje zależność od ZooKeepera.
Powiązane pojęcia
Najczęstsze pytania
Czym Kafka różni się od klasycznej kolejki komunikatów (np. RabbitMQ)?
Klasyczna kolejka usuwa komunikat po odebraniu, a Kafka przechowuje zdarzenia w trwałym dzienniku przez zadany czas — wielu konsumentów może czytać ten sam strumień niezależnie, a nawet cofnąć się w historii. Kafka jest projektowana pod ogromną przepustowość i odtwarzalność, kolejki pod elastyczny routing pojedynczych zadań.
