
Kafka is known as the best streaming platform, it has the capability to handle data in a pull mechanism, making it highly performant. Kafka provides capabilities to segregate data via topics, it supports binary data and text data. It has the capability to distribute data to partitions, a notion of shards. Kafka has consumers - Kafka streams which are built on the principles of Kafka to give better performance. We considered replacing Storm with Kafka streams and could achieve all the required functionalities. Kafka provides various tune-ups to achieve HA. Review collected by and hosted on G2.com.
One thing I observed is we cannot switch off replication in a multi-node setup. Suppose I want only load distribution, but it's okay if I lose data. I don't want any replication. If any partition-assigned node goes down, Kafka should identify and reassign the partitions at some point to other nodes; instead, it goes on toss expecting ISR to be available. Another point is when any node goes down, it takes a while to reassign the primary partitions and make Kafka available, though there is a config to set the time to trigger rebalancing, usually it kicks the rebalancing, but the rebalancing itself takes a lot of time. Review collected by and hosted on G2.com.

