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.
What is Kafka?
What is ZeroMQ?
Want advice about which of these to choose?Ask the StackShare community!
What tools integrate with Kafka?
What tools integrate with ZeroMQ?
Front-end messages are logged to Kafka by our API and application servers. We have batch processing (on the middle-left) and real-time processing (on the middle-right) pipelines to process the experiment data. For batch processing, after daily raw log get to s3, we start our nightly experiment workflow to figure out experiment users groups and experiment metrics. We use our in-house workflow management system Pinball to manage the dependencies of all these MapReduce jobs.
Our platform is based on interconnected services with a custom RPC protocol based on ZeroMQ and inspired by ZeroMQs LPP/MDP protocols.
Building out real-time streaming server to present data insights to Coolfront Mobile customers and internal sales and marketing teams.