Live data from Hacker News

Kafka at the low end: how bad can it get?

broot.ca

141–144 of 144 posts

Re: Kafka at the low end: how bad can it get?

#141

Earlier quoted context omitted.

It's just my polite way of saying it's safe enough for most use cases and that you're wrong. The fsync thing is complete FUD by RedPanda. They later introduce write caching[1] and call it an innovation[2]. I notice you also work for them. Nevertheless, those that are super concerned with safety usually run with an RF of 5 (e.g banks). And you can configure Kafka to fsync as often as you want[3] 1 - https://www.redpan…

It is not FUD. It is deterministic. Reproducible on your laptop. Out of all the banks I work with only a handful of use cases use rf=5. Defaults matter, because most people do not change them.

Defauls do matter, in principle. But I think this particular risk is overblown, see my other reply for my thoughts

Re: Kafka at the low end: how bad can it get?

#142
post #7

Earlier quoted context omitted.

NATS https://docs.nats.io/nats-concepts/overview/compare-nats

NATS/WebSockets are good for 1 publisher -> many consumer (pubsub) RabbitMQ is good for 1 producer -> 1 consumer with ack/nack Right?

NATS does much more than pub/sub (with any fan out), it also does queueing in Core NATS (no persistence) and streaming including queuing over streams (with ack/nack/term). Don't be fooled into thinking NATS doesn't do queueing because it doesn't have a "Q" in the name :).

Re: Kafka at the low end: how bad can it get?

#143

Earlier quoted context omitted.

Actually, I used RabbitMQ static routes to feed per-cpu-core single thread bound consumers that restart their process every k transactions, or watchdog process timeout after w seconds. This prevents cross contamination of memory spaces, and slow fragmentation when the parsers get hammered hard. RabbitMQ/Erlang on OTP is probably one of the most solid solutions I've deployed over the years (low service cycle demands.)…

Agree. RabbitMQ is a Swiss Army knife that has a lot of available patterns, scales fairly well, and is very robust. If you don’t know what to choose, start with Rabbit. It will let you figure out which patterns you need and you probably won’t scale out of it. Pay someone to host it. On the other hand, if you know what you need to do and it’s supported by it, NATS is IME the way to go (particularly JetStream).

IMHO NATS is an even better Swiss army knife than Rabbit

Re: Kafka at the low end: how bad can it get?

#144
post #18

Earlier quoted context omitted.

First time I've heard of KIP-932 and it looks very good. The two biggest issues IMO are finding a good Kafka client in the language you need (even for ruby this is a challenge) and easy at-least-once workers. You can over partition and make at-least-once workers happen (if you have a good Kafka client), or you use an http gateway and give up safe at-least-once. Hopefully this will make it easier to build an at-least-…

Do you mind explaining what you mean by not being able to find a "good Kafka client" for Ruby? There are pretty good bindings to librdkafka and frameworks like Karafka ( https://github.com/karafka/karafka/ ) that provide many functionalities, including a Web UI.

Late reply... I don't have my notes anymore on kafka client evals in ruby. When evaluating it was for a former employer. Karafka is very impressive though. Well done on the library.
Post reply on HN