Open-source stream-processing software platform by Apache Software Foundation
Written in Scala and Java
Aims to provide - Unified, High-throughput, low-latency platform for handling real-time data feeds.
Storage layer - massively scalable pub/sub message queue designed as a distributed transaction log (highly valuable for enterprise infrastructures to process streaming data)
Kafka connects to external systems (for data import/export) via Kafka Connect and provides Kafka Streams, a Java stream processing library
Design is heavily influenced by transaction logs. (based on commit log)
Fault tolerant highly available queue used in publisher-subscriber or streaming application
It can deliver message exactly once and also it keeps all the messages ordered inside a partition of a topic
Horizontally scalable, fault-tolerant, wicked fast
Focuses on real-time analysis, not batch jobs
Streams and streams only
Except streams are also tables (sometimes)
No cluster required
Not just only a messaging framework but also a computation framework
The Producer API allows an application to publish a stream of records to one or more Kafka topics.
The Consumer API allows an application to subscribe to one or more topics and process the stream of records produced to them.
The Streams API allows an application to act as a stream processor, consuming an input stream from one or more topics and producing an output stream to one or more output topics, effectively transforming the input streams to output streams.
The Connector API allows building and running reusable producers or consumers that connect Kafka topics to existing applications or data systems. For example, a connector to a relational database might capture every change to a table.