KafkaHQ
github.com
github.com
EDIT: Also wanted to note that, for Python, there is some support for async clients in Kafka (aiokafka, asynckafka) but I don't see any async libs for Pulsar yet. Maybe I'm missing something.
You can also just use separate topics since they're very lightweight and can be nested under the tenant/namespace hierarchy.
Tiered storage Geo replication Multi-tenancy Massive partition counts Benchmarks have lower latency
Really the question should be why Kafka over Pulsar and the only real answer is it’s been around longer and Confluent are really aggressive with their marketing, as an example you might often hear “why Kafka is more ACID than your database” from Confluent, or “Kafka does exactly once” vs effectively once with idempotent operations.
I find it even more worrying knowing that this project has a lot of very advanced features that look like they’d require a lot of people to maintain...
Have you ever found the 20s failure detection window to be too long? FoundationDB's failure monitor pings hosts approximately once a second, so failures are detected very quickly. If you were willing to dedicate a process in the cluster to failure monitoring, you might be able to shrink that window.
20s is configurable per-client, and gazette lifts this default from etcd. This one number is trying to summarize the tension and trade-off inherent in the (famously hard) problem of distributed failure detection. Network flakes or partitions of a few seconds are all too common and you don't necessarily want to assume failure if one occurs (particularly given the compounding effects of resend timers, etc).
In practice, no, it's not been a problem since clients typically buffer writes anyway, in order to batch many small writes into few larger ones.
And yes, FDB separates the act of detecting a failure from reacting to a detected failure for that reason. In FDB’s case, a 20s network hiccup on a specific process could mean it is better to initiate a recovery anyway. I think for your use case that trade off makes sense as there are lots of journals, whereas FDB only runs a single database for clients to access.
Same way as always - there's some kind of delimiter in the message serialization, and you can "re-sync" by finding that delimiter and hoping to continue reading valid messages. For example, a bad CSV stream can be recovered by finding the next newline and hoping you read correct CSV again.
The problem is just moved to the client library which is layering a notion of messages atop journals, and is not a direct broker concern.
https://blog.cloudera.com/smm-1-2-released-with-powerful-new...
I think I will try again, maybe it's easier now.
Did you use it successfully as something else?