Real-Time Messaging Solution – Kafka vs Diffusion
June 1, 2016 | Peter Hughes
Apache Kafka has grown in prominence since it was originally developed by LinkedIn back in 2011 and a number of notable companies are now using the solution including, Netflix, Spotify and Uber.
Apache Kafka is described as a “high-throughput, distributed, publish-subscribe messaging system” and according to an article in datanami, “Open source projects like Kafka are gaining traction in large enterprises as companies seek to leverage the stable platform’s ability to scale while speeding access to data.”
Here at Push Technology we describe our realtime messaging solution, Diffusion, as realtime data integration and a distribution platform designed for enterprise.
At a high level, the two solutions share a number of similarities in some of their features:
Publish/ Subscribe Messaging Model
Both Kafka and Diffusion have moved away from typical request/ response messaging models, where the consumer (the user reading the data) has to request the information update, to a publish/ subscribe model. Here the consumer is subscribed to the information they want to be updated on, and so every time the data changes, the information is streamed to the client.
In Kafka, this is actually a pull request from the client – allowing the platform to achieve high levels of throughput.
For Diffusion, we push the data to clients that have subscribed – but send only the binary deltas to achieve the same high throughput rates.
The concept of decoupled architecture is basically separating the front end application from the backend. It’s adding a layer between what the producer creates and what the consumer sees, which can allow developers to spend more time building reactive applications, rather than worrying about the data delivery infrastructure.
For Kafka, decoupling comes in basically where the producers (write data to topics) don’t have to know about all of the downstream processing that has to happen and does everything in realtime.
Here at Push Technology, we also follow the same decoupling concept, so you can integrate your systems and provide a familiar interface for your application developers. Using our ‘Reactive Data Layer’, you can deliver a robust, scalable, realtime architecture that ensures your apps have the flexibility they need to adapt as digital requirements evolve. Our unique Reactive Data Layer approach also offers improved IT agility, reduces development costs, simplifies data resources and removes app dependencies on back-end systems.
Diffusion reduces load from backend systems, and maintains <100ms application response time, even with more than 100k connections.
Kafka is also scalable; in fact according to Joe Stein, Founder of Big Data Open Source Security, the technology is far superior to RabbitMQ that “will fall over if you throw a couple of gigabytes per second at it.”
How is Kafka Used?
Generally, Kafka is used in 2 ways. Firstly, it is used as a data pipeline – getting your data from place to place. You pour data in one side and it flows out to everywhere else in your organization. The second use case is for stream processing – building applications that respond to data in realtime. In finance it could be all about detecting fraud, realtime risk, market data and market activity. In retail, it’s about inventory, stock, pricing. It’s really about taking a bunch of applications that run maybe once a day in batch, and making them much more real-time.
It sounds pretty similar to Diffusion, right? In fact, there is one massive difference that makes these solutions complementary.
In a nutshell Neha Narkhede, one of Kafka’s creators said, “what Kafka allows you to do is move data across the company and make it available as a continuously free-flowing stream within seconds to people who need to make use of it… at scale.”
Have you picked up on the one major separation?
Kafka works within an organization. For example, it’s working with Uber. But this will be within Uber’s enterprise – between its internal systems, but not out over the Internet to customers. Kafka is a good replacement to a more traditional message broker. It has better throughput, built-in partitioning, replication, and fault-tolerance which make it a good solution for large scale message processing applications. However this is all within an enterprise. The real magic that Diffusion can bring to the table is outside of the enterprise – across the internet and the unreliable networks.
With Diffusion – and its unique approach to streaming data – developers are armed with realtime messaging that offers the best data efficiency – we guarantee it… By providing simple unified SDKs for front and backend developers, Push Technology enables scalable, realtime data distribution, while adapting to network conditions and dealing with unpredictable disconnects. Not only can you utilize realtime messaging within an organization, Diffusion takes you one step further – out over the internet.
If you would like to learn more about our realtime messaging solutions and how you can deliver real-time app experiences to your employees with an enterprise, or your customers outside of the enterprise, check us out here or talk to us today to see how we can help you.