Apache Kafka

Apache Kafka is een gedistribueerd publish-subscribe berichtensysteem dat gegevens ontvangt van ongelijksoortige bronsystemen en de gegevens in realtime beschikbaar maakt voor doelsystemen. Kafka is geschreven in Scala en Java en wordt vaak geassocieerd met real-time event stream processing voor big data.

Net als andere message brokers systemen, faciliteert Kafka de asynchrone uitwisseling van gegevens tussen processen, applicaties en servers. In tegenstelling tot andere berichtensystemen heeft Kafka echter een zeer lage overhead, omdat het geen consumentengedrag bijhoudt en berichten verwijdert die zijn gelezen. In plaats daarvan bewaart Kafka alle berichten gedurende een bepaalde tijd en maakt de consument verantwoordelijk voor het bijhouden welke berichten zijn gelezen.

Kafka software draait op een of meer servers en elk knooppunt in een Kafka cluster wordt een broker genoemd. Kafka gebruikt Apache ZooKeeper om clusters te beheren; de taak van de broker is om producerende applicaties te helpen gegevens naar topics te schrijven en consumententoepassingen om van topics te lezen. Topics worden verdeeld in partities om ze beter beheerbaar te maken en Kafka garandeert een sterke ordening voor elke partitie. Omdat berichten in een bepaalde volgorde in een partitie worden geschreven en in dezelfde volgorde worden gelezen, wordt elke partitie in wezen een commit-logboek dat kan fungeren als een single source of truth (SSoT) voor de gebeurtenissen van een gedistribueerd systeem.

De codebase van Kafka, die oorspronkelijk bij LinkedIn werd ontwikkeld om een mechanisme te bieden voor parallelle belasting in Hadoop-systemen, werd in 2011 een open-sourceproject onder de Apache Software Foundation. In 2014 startten de ontwikkelaars bij LinkedIn die Kafka creƫerden een bedrijf genaamd Confluent om Kafka-implementaties te vergemakkelijken en Kafka-as-a-service-producten op bedrijfsniveau te ondersteunen. Versie 5.0 van het Confluent Platform, dat in 2018 commercieel werd uitgebracht, verbetert de afhandeling van applicatieclient failover voor disaster recovery (DR) en vermindert de afhankelijkheid van de programmeertaal Java voor data streaming analytics-applicaties.