Kafka vs ZeroMQ: What are the differences?
Developers describe Kafka as "Distributed, fault tolerant, high throughput pub-sub messaging system". Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design. On the other hand, ZeroMQ is detailed as "Fast, lightweight messaging library that allows you to design complex communication system without much effort". The 0MQ lightweight messaging kernel is a library which extends the standard socket interfaces with features traditionally provided by specialised messaging middleware products. 0MQ sockets provide an abstraction of asynchronous message queues, multiple messaging patterns, message filtering (subscriptions), seamless access to multiple transport protocols and more.
Kafka and ZeroMQ can be primarily classified as "Message Queue" tools.
Some of the features offered by Kafka are:
- Written at LinkedIn in Scala
- Used by LinkedIn to offload processing of all page and other views
- Defaults to using persistence, uses OS disk cache for hot data (has higher throughput then any of the above having persistence enabled)
On the other hand, ZeroMQ provides the following key features:
- Connect your code in any language, on any platform.
- Carries messages across inproc, IPC, TCP, TPIC, multicast.
- Smart patterns like pub-sub, push-pull, and router-dealer.
"High-throughput" is the primary reason why developers consider Kafka over the competitors, whereas "Fast" was stated as the key factor in picking ZeroMQ.
Kafka and ZeroMQ are both open source tools. Kafka with 12.5K GitHub stars and 6.7K forks on GitHub appears to be more popular than ZeroMQ with 5.28K GitHub stars and 1.56K GitHub forks.
According to the StackShare community, Kafka has a broader approval, being mentioned in 501 company stacks & 451 developers stacks; compared to ZeroMQ, which is listed in 35 company stacks and 12 developer stacks.