I'm building an app that is constantly appending to a buffer while many readers consume from this buffer independently (write-once-read-many / WORM). At first I thought of using Apache Kafka, but as I prefer an as-a-service option I started investigating AWS Kinesis Streams + KCL and it seems I can accomplish this task with them.
Basically I need 2 features: ordering (the events must be read in the same order by all readers) and the ability to choose the offset in the buffer from where the reader starts consuming onwards.
Now I'm also evaluating Google Cloud Platform. As I am reading the documentation it seems that Google Pub/Sub is suggested as the equivalent to AWS Kinesis Stream, but at a more detailed level these products seem a lot different:
If I got it right, PubSub cannot be considered a Kinesis equivalent. Perhaps if used together with Google Dataflow? I must confess that I still can't see how.
So, is PubSub an alternative to Kinesis? If not, is there a Google Cloud Product that would fulfill my requirements?
Thanks!
Like Apache Kafka, Amazon Kinesis is also a publish and subscribe (pub/sub) messaging solution. However, it is offered as a managed service in the AWS cloud, and unlike Kafka cannot be run on-premises. The Kinesis Producer continuously pushes data to Kinesis Streams.
Like many of the offerings from Amazon Web Services, Amazon Kinesis software is modeled after an existing Open Source system. In this case, Kinesis is modeled after Apache Kafka. Kinesis is known to be incredibly fast, reliable and easy to operate.
Performance-wise, Kafka has a clear advantage over Kinesis. Let's not forget that Kafka consistently gets better throughput than Kinesis. Kafka can reach a throughput of 30k messages per second, whereas the throughput of Kinesis is much lower, but still solidly in the thousands.
Azure Event Hubs and Amazon Kinesis are two competing cloud services that serve the same purpose – reliably collect and process massive amounts of data with low latency and at low cost. Although both services provide similar functionality, there are significant differences to be aware of when architecting a solution.
A rather convoluted solution but it might help:
Hope that helps.
Pub/Sub now supports ordering natively. As for the requirement that a subscription (~consumer group in Kafka) exist before you consume, it's very rarely a problem for users. If nothing else, you can create snapshots which allow you to reset a new subscription to the state of any other existing subscription.
This is a bit late, but @Renan, if you are still watching would love to hear how you ended up building your system.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With