Apache Kafka je open-sourcová softwarová platforma pro zpracování streamování, kterou vyvinula Apache Software Foundation. Je napsaná ve Scale a Javě. Projekt se snaží o vytvoření sjednocené platformy s vysokou průchodností a nízkou latencí pro zpracování datových toků v reálném čase.
Jeho úložná vrstvá je v podstatě masivně škálovatelná fronta zpráv, která je navržena jako rozložený log transakcí. Tím je tato platforma velmi užitečná pro podnikovou infrastrukturu, která zpracovává streamování dat. Navíc se Kafka připojuje k externím systémům pro import a export dat skrze Kafka Cnnect a nabízí Kafka Streams, což je knihovna v Javě pro zpracování streamování.
Apache Kafka je platforma založená na logování commitů a umožňuje uživatelům se k ní přihlásit a publikovat data libovolnému počtu systémů nebo aplikací v reálném čase. Může se jednat o aplikace typu správy párování pasažérů a řidičů na Uberu, analytiky v reálném čase a předvídající údržby jako u British Gas a jejich chytrých domácností nebo jako služby v reálném čase na LinkedInu.
Kafka ukládá zprávy, které přicházejí z procesů, které se nazývají producers. Data mohou být rozdělena do různých partition s různými topic. V rámci partition, zprávy jsou seřazeny podle svojí pozice v rámci partition, indexovány a ukládány společně pod časovým štítkem. Ostatní procesy, které se nazývají consumer, mohou zprávy z partition číst. Pro zpracování streamování nabízí Kafka Streams API, které umožňuje psát aplikace v Javě, které konzumují data z Kafky a píší výsledky zpět. Apache Kafka rovněž funguje s externími systémy na zpracování streamování jako je Apache Apex, Apache Flink, Apache Spark nebo Apache Storm.
Kafka běží na klusteru jednoho nebo více serverů, které se nazývají brokers a partitiony všech topic jsou rozloženy mezi uzly klusterů. Partitiony mohou být replikované. Architektura umožňuje, aby Kafka dodávala masivní stream zpráv. Proto nahradila některé konvenční systémy na posílání zpráv jako je JMS, AMQP nebo další.
Kafka podporuje dva typy topiců: běžné a kompaktní. Běžné mohou být nakonfigurovány tak, aby měly nastavený retenční čas nebo prostorové omezení. Pokud jsou záznamy starší nežli daný retenční čas nebo prostor, který zabírají, přesahuje prostor daný pro partition, Kafka má právo starší data smazat pro uvolnění místa.
Defaultně jsou témata konfigurována s retenčním časem 7 dní, ale je možné je ukládat i nekonečně dlouho. Kompaktní témata nejsou nastavena na retenční čas ani časové omezení. Místo toho jsou pozdější zprávy považovány za aktualizace starších zpráv se stejným klíčem a garantuje, že nikdy nesmaže nejnovější zprávu s daným klíčem. Uživatelé mohou zprávy smazat úplně tím, že všechny zprávy nahradí hromadně null hodnotou.