我已经看到很多使用高级使用者(使用者组)在同一进程中使用许多线程来使用主题的示例。你有多个进程(在不同的机器上)拆分分区并且并行使用吗?如果是的话,你有任何例子吗?
答案 0 :(得分:3)
简短的回答是肯定的。对于高级使用者,每个线程处理一个或多个分区,并使用zookeeper进行协调。由于使用了zookeeper,因此可以将它们分散到不同的进程和机器中。 Kafka维基有一个example using the high-level consumer。您可以在多台计算机上运行它以查看它的运行情况。当添加或删除消费者时,高级消费者将自动在消费者之间重新平衡。请记住,分区定义了主题的并行度,因此如果您拥有的消费者线程多于分区,则其中一些线程将处于空闲状态。
值得注意的是,Kafka没有提供任何类型的分布式框架来跨机器运行消费者应用程序。这就是Storm或Spark这样的系统很有用的地方,因为它们可以从Kafka消费并管理消耗过程。 Kafka背后的人们最近也开放了一个名为Samza的软件包,它在Hadoop / YARN上提供了更高级别的基于kafka的流处理。