Kafka is a platform which stream data (e.g logs, metrics ) etc between different apps.
Kafka serves and stores data using a publish-subscribe pattern in topics (more or less the equivalent of a folder in a file system) with built-in replication and partition. Each topic can have different partitions and the producer's event will be saved into a partition according to their tag. A broker is the host of those topic, the topic can be distrubuted in mutiple borkers (mutiple machines)
a producer is an inbound data connection that writes data into a topic, whereas a consumer is an outbound data connection. For example, a program that listens to IoT sensors and writes to a Kafka topic would be a producer, and an application making decisions based on this data would be a consumer.
- You can easily establish remote communication & send your data easily across a network
- Different systems use different platforms & languages and messaging systems provide you a common paradigm independent of any platform or language.
- You can establish an Asynchronous communication & send messages, so that the sender doesn’t have to wait for the receiver to process the messages.
- You can also ensure the Reliable communication. Even when the receiver and the network is not working properly, your messages shouldn’t get lost.