News for hackers. Stuff that matters.
Re:GCP and Confluent partner to deliver a managed Apache Kaf... by manigandham on Tuesday May 22, 2018 @09:11PM (#17130810)
I thought you used it at Fivetran? It's a logging system where you send messages as a key/value of bytes to a topic, which is just a logical group of partition files spread over the nodes as master + replicas.

Consumers read from the topic (the underlying partitions) and maintain the offset last read themselves, allowing for easy replay, strict ordering within a single partition, and completely disconnected pacing from producers. The optional "key" for each message allows for compaction so only the latest key/value pair is kept in a topic.

It's definitely not a database but works well for replicating them, as well as doing most of the work of a typical message queue / service bus system.

Re:GCP and Confluent partner to deliver a managed Apache Kaf... by georgewfraser on Tuesday May 22, 2018 @09:23PM (#17130860)
Nope, no Kafka at Fivetran, nearly all the sources we pull from are intrinsically batch, support retry, and come out of the source already partitioned by user. Our internal architecture is basically just a farm of batch processors.

We have been hearing more and more about people using Kafka to support streaming analytics. I haven't spent a ton of time studying it, I was under the impression that it was just a giant queue, but ordering + retention is basically a database in the way I think about it.

Re:GCP and Confluent partner to deliver a managed Apache Kaf... by dvlsg on Wednesday May 23, 2018 @03:42AM (#17132069)
If consumers need to keep track of their own offsets, do you run into complications when trying to run multiple instances of the same consumer? Or do you typically run single processes when consuming a specific topic?
Re:GCP and Confluent partner to deliver a managed Apache Kaf... by manigandham on Wednesday May 23, 2018 @04:02AM (#17132176)
This is what partitions are for. They are used to scale out both publishing and consumption by assigning each consumer a single partition. This logic used to be complicated client-side code but now is included into Kafka itself, along with automatic offset saving on some interval (saved as entries in another topic).

Also consumers can be in a "consumer group" so you can have multiple clusters of consumers each reading the entire log separately, but shared within each cluster.

Also I'd recommend looking at Apache Pulsar for a next-generation architecture that combines Kafka's log semantics with the low-latency routing and individual message acknowledgements of message queues: https://pulsar.incubator.apache.org/