一个春天卡夫卡消费者可以在多台机器上运行同一个groip吗?

时间:2016-02-04 23:46:47

标签: spring-integration apache-kafka

Kafka说,偏移量是由消费者管理的,同一组的消费者应该有尽可能多的消费者。
Spring集成表示高级别消费者中的消费者流数量是同一组的分区数量 那么,春天kafka消费者代码可以在同一组的多个服务器上运行吗?如果是,那么偏移如何知道服务器之间不会发生冲突?

1 个答案:

答案 0 :(得分:1)

根据kafka doc,如果实施了http://kafka.apache.org/documentation.html#introduction),则每个消息都由该组中的一个消费者使用。每个消费者可以在一台机器上运行。两个消费者也可以在同一台机器上运行。在这种情况下,每个消费者可以是一个过程。

一个群组可以包含多个消费者。可以通过一些算法在一个组中的所有消费者之间分配分区。消费者数量可以大于或小于分区数量。

抵消可以通过zookeeper进行管理。但到目前为止,并非所有功能都已在某些客户端实施。

至于你的用例,事实上,kafka可能是“至少一次交付系统”。 Kafka可以通过禁用生产者的重试或在处理一批消息之前提交其偏移量来进行最多一次交付。实施“一次性交付系统”非常困难,这需要合作。但是卡夫卡提供抵消。所以有可能。有关详细信息,请参阅http://kafka.apache.org/documentation.html#semanticshttp://ben.kirw.in/2014/11/28/kafka-patterns/https://dzone.com/articles/kafka-clients-at-most-once-at-least-once-exactly-o等。

根据我的个人经验,我花了很多时间确保我的kafka系统完全是一次交付系统。但是当服务器关闭时,一些消息可以被消耗两次。但我的测试是在独立的kafka服务器上进行的,总是在生产中使用kafka cluter。所以,我认为它可以被视为一次性系统。