Kafka is a distributed publish-subscribe messaging system - designed to be fast, scalable, and durable. Kafka maintains messages in topics. Producers write data to topics and consumers read from topics. Kafka is a distributed system, topics are partitioned and replicated across multiple nodes.
A lot of good use cases and information can be found in the documentation for Apache Kafka.
Kafka is distributed and designed for high throughput. A single Kafka broker can handle hundreds of megabytes of reads and writes per second from thousands of clients. Each broker can handle terabytes of messages without performance impact.
Messaging decouple your processes and creates a highly scalable system. Instead of building one large application, is it beneficial to decouple different parts of your applicationand only communicate between them asynchronously with messages. That way different parts of your application can evolve independently, be written in different languages and/or maintained by separated developer teams. In comparison to many messaging systems, Kafka has better throughput. It has built-in partitioning, replication, and fault-tolerance which makes it a good solution for large scale message processing applications.
According to Kafka, the original use case for Kafka was to track site activity - tracking the activity of customers on websites, included page views, searches, or other actions users may take. This kind of activity tracking often require a very high volume of throughput, as many activity messages are generated for each user page view.
A lot people today, use Kafka as a log solution - typically collect physical log files off servers and puts them in a central place for processing. With Kafka you can publish an event for everything happening in your application. Other parts can subscribe to these events and take appropriate actions.
User activity could be published by the application servers to central topics (e.g one topic for a page view). The consumer can subscribe from the topic and show monitoring usage in real-time.
Kafka scales perfectly vertically and there is no upper limit to how many messages you can publish/subscribe.
Smartkafka automates every part of setup, running and scaling of Apache Kafka. We have support staff available 24/7 to help in any event or with any questions. Smartkafka let developers focus on the core part of their applications, instead of managing and maintaining servers.