消费者群体是否可以跨群集中的不同节点?

kel*_*oti 5 apache-kafka

我已经看到很多使用高级使用者(使用者组)在同一进程中使用许多线程来使用主题的示例.你有多个进程(在不同的机器上)拆分分区并且并行使用吗?如果是这样,你有任何例子吗?

Pau*_*l M 3

简短的回答是肯定的。对于高级消费者,每个线程处理一个或多个分区,并使用zookeeper进行协调。由于使用了zookeeper,因此可以将它们分布在不同的进程和机器上。Kafka wiki 有一个使用高级消费者的示例。您可以在多台计算机上运行它以查看其实际情况。当添加或删除消费者时,高级消费者将自动在消费者之间重新平衡。请记住,分区定义了主题的并行级别,因此如果您的消费者线程多于分区,则其中一些线程将处于空闲状态。

还值得注意的是,Kafka 不提供任何类型的分布式框架来跨机器运行消费者应用程序。这就是 Storm 或 Spark 之类的系统有用的地方,因为它们可以从 Kafka 进行消费并管理进行消费的进程。Kafka 背后的人们最近还开源了一个名为Samza的软件包,它在 Hadoop/YARN 上提供更高级别的基于 kafka 的流处理。