Earlier quoted context omitted.
Absolutely, but you can't rely on it to be persistent like Kafka. We use it extensively and are incredibly happy with it, but we follow best practices around not putting state in messages, making changes idempotent, and ensuring that we can always replay a message if needed. We've yet to lose any messages in production, but it could happen and we're okay with the tradeoffs between that and the operational complexity…
Yeah, at-least-once is definitely the way to go, sounds like you've got a good architecture around that. Another nice thing I've heard with Kafka is that it can store all messages since the beginning of time (if you want) and you can replay them to retrieve all your MQ-related state. Does NSQ do that, do you know?
NSQ – A realtime distributed messaging platform designed to operate at scale
41–50 of 57 posts
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#42Earlier quoted context omitted.
Have you ever looked at any proprietary solutions like Google's PubSub? We're running on PubSub for over year now and outside of some unplanned downtimes it's scaling very well. But as we're looking to branch out out of GCP we are looking at Kafka as an alternative. Could you comment on particular problems and challenges that you ran into? For the context, we're currently sending around 60k messages/sec and around 1k…
The biggest issue with PubSub and Amazon's alternative is the cost. Being capped at a per-message cost would be a no go. If you can get away with using PubSub or the like it would be far easier than to manage your own Kafka deployment (correctly). If data loss is unacceptable then Kafka is basically the only open-source solution that is known for not losing data (if done correctly of course). NSQ was great but lacked…
What about RabbitMQ?
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#43Earlier quoted context omitted.
The biggest issue with PubSub and Amazon's alternative is the cost. Being capped at a per-message cost would be a no go. If you can get away with using PubSub or the like it would be far easier than to manage your own Kafka deployment (correctly). If data loss is unacceptable then Kafka is basically the only open-source solution that is known for not losing data (if done correctly of course). NSQ was great but lacked…
> If data loss is unacceptable then Kafka is basically the only open-source solution that is known for not losing data What about RabbitMQ?
You would need to run RMQ in HA mode with multiple brokers to have any chance of not losing data.
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#44Earlier quoted context omitted.
> If data loss is unacceptable then Kafka is basically the only open-source solution that is known for not losing data What about RabbitMQ?
RabbitMQ does not persist messages to disk. A common mistake with RMQ is treating it like something of a database. You would need to run RMQ in HA mode with multiple brokers to have any chance of not losing data.
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#45Earlier quoted context omitted.
Do you have anythings to say about nats.io?
We're using nats for synchronous communication, sending around 10k messages each second through it. Must say that the stability is great, even with larger payloads (over 10MB in size). We're running it in production for couple of weeks now and haven't had any issues. The main limitation is that there is no federation and massive clustering. You can have a pretty robust cluster, but each node can only forward once, wh…
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#46Earlier quoted context omitted.
I think the biggest question is, do you think its feasible to directly start with Kafka instead of NSQ or does Kafka just require a much stronger/larger team to operate than NSQ?
We debated the same question and went with NSQ for now. We might need some of the guarantees that Kafka makes in the longterm or for some specific use cases, but for a no thrills distributed messaging platform that is incredibly simple to operate at scale, NSQ is pretty fantastic. Building client libraries is also a joy. I blogged about it a bit here: https://product.reverb.com/how-to-write-an-nsq-consumer-in-g...
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#47Earlier quoted context omitted.
We're using nats for synchronous communication, sending around 10k messages each second through it. Must say that the stability is great, even with larger payloads (over 10MB in size). We're running it in production for couple of weeks now and haven't had any issues. The main limitation is that there is no federation and massive clustering. You can have a pretty robust cluster, but each node can only forward once, wh…
You mean synchronous communication using request-reply/rpc like?
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#48Earlier quoted context omitted.
Have you ever looked at any proprietary solutions like Google's PubSub? We're running on PubSub for over year now and outside of some unplanned downtimes it's scaling very well. But as we're looking to branch out out of GCP we are looking at Kafka as an alternative. Could you comment on particular problems and challenges that you ran into? For the context, we're currently sending around 60k messages/sec and around 1k…
The biggest issue with PubSub and Amazon's alternative is the cost. Being capped at a per-message cost would be a no go. If you can get away with using PubSub or the like it would be far easier than to manage your own Kafka deployment (correctly). If data loss is unacceptable then Kafka is basically the only open-source solution that is known for not losing data (if done correctly of course). NSQ was great but lacked…
NiFi has come up a few times on HN, but I really don't think it gets the attention it deserves --- I don't know how it would perform against Kafka, NATS, NSQ, *MQ, or other messaging platforms, and unfortunately, I don't have any metrics to share. But when I see that many users are taking these messaging platforms, and building additional tooling/processes to meet needs that are already built into NiFi, I think it shines as a very competitive open-source option.
@TheHydroImpulse: Thank you for sharing your insights in this post, and explaining why your organization made these selections. Have you considered or evaluated NiFi?
(Disclaimer: All posts are my own, and not sponsored by the Department of Defense.)
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#49Earlier quoted context omitted.
The biggest issue with PubSub and Amazon's alternative is the cost. Being capped at a per-message cost would be a no go. If you can get away with using PubSub or the like it would be far easier than to manage your own Kafka deployment (correctly). If data loss is unacceptable then Kafka is basically the only open-source solution that is known for not losing data (if done correctly of course). NSQ was great but lacked…
> If data loss is unacceptable then Kafka is basically the only open-source solution that is known for not losing data What about RabbitMQ?
We reconsidered using it again for a synchronous RPC communication as we were replacing gRPC, but ended up going with nats.io instead. It does have less fearures but we are able to squeze much more juice on a smaller stack.
Re: NSQ – A realtime distributed messaging platform designed to operate at scale
#50Earlier quoted context omitted.
> If data loss is unacceptable then Kafka is basically the only open-source solution that is known for not losing data What about RabbitMQ?
We used RabbitMQ extensively for almost two years but the problems we were encountering along the way weren't worth it. We ended up talking to the dev team too often to solve catastrophic issues that took down our whole production for hours. We reconsidered using it again for a synchronous RPC communication as we were replacing gRPC, but ended up going with nats.io instead. It does have less fearures but we are able…