需求: Module1发布数据,module2消费数据。
在这里,我可以有多个module2实例,其中一个节点应该充当领导者,使用来自主题的数据,并处理这些数据并将其添加到其内存中。该节点负责将其在内存中的内容复制到充当被动节点的其余module2实例中。这里的一个要求是处理顺序应该保持不变。
如何在Kakfa中设计这个?我的想法是Module1发布到sample_topic (只有一个分区),module2的每个实例都将使用消费者组名称并订阅sample_topic。由于同一消费者组的任何实例都可以接收消息,因此领导者的概念不可用。
有没有办法实现领导理念?类似于经纪人在kafka中的工作方式。
发布于 2021-09-11 18:15:36
正如您在问题中指出的-这不是消费者群体的默认行为。
消费者组将在每个消费者之间分配分区,您将不会收到相同的消息。
你似乎需要的是一种管理global state的方法,也就是说,你希望所有的消费者都知道并引用相同的数据。
也许有一种方法可以用consumer API来解决这个问题--但我建议你去研究一下Kafka Streams API。
更具体地说,在Kafka Streams中有一个名为GlobalKTable的an interface
A
KTable在所有正在运行的Kafka Streams实例之间分发数据,而GlobalKTable拥有每个实例上所有数据的完整副本。
您也可以让每个消费者从单个消费者组订阅相同的主题,除非要求消费者组必须相同才能进行伸缩。
https://stackoverflow.com/questions/69142415
复制相似问题