2013-12-17 111 views
4

我见过很多使用高级消费者(消费者群体)在同一进程中使用多个线程来消费话题的示例。你可以有多个进程(在不同的机器上)拆分分区并并行使用?如果是这样,你有什么例子吗?消费群体可以跨群集中的不同节点吗?

回答

3

简短的回答是肯定的。对于高级用户,每个线程处理一个或多个分区,并使用zookeeper进行协调。由于使用zookeeper,因此可以将它们分散到不同的进程和机器中。卡夫卡维基有一个example using the high-level consumer。您可以在多台机器上运行该程序以查看其运行情况。当消费者被添加或移除时,高级消费者将自动重新平衡消费者。请记住,分区定义了主题的并行性级别,因此如果您的消费者线程多于分区,那么其中一些线程将处于空闲状态。

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