繁体   English   中英

消费者的Kafka主题和分区分配

[英]Kafka Topic and Partition allocation for consumer

我刚开始研究kafka,我需要使用sarama go pkg开发一个消费者客户端,客户端应该是消费者组的一部分,需要从两个主题A和B中读取,客户端需要从一些分区中读取任何平衡策略分配给它的主题 A 和 B 它需要从所有分区中读取(B 有点像广播主题)。

工作流程:

  • 消费群xx。
  • 我有两个主题 A 和 B,每个有 6 个分区 [0,1,2...5]。
  • 我在xx中有两个消费者C1和C2,数据应该这样读取:
    C1 从 A:[0,1,2] 和 B:[0,1,2,3,4,5,6] 读取
    C2 从 A:[3,4,5] 和 B:[0,1,2,3,4,5,6] 读取

注意:如果添加了新客户端,则应重新平衡 A 中的分区,并读取 B 中的所有分区。

我尝试实施我的自定义平衡策略但失败了,请让我知道这是否可以完成以及如何做到这一点。

对于同一消费者组中的任何消费者,多个消费者不可能监听任何重叠的分区。 换句话说,除非您将 C2 消费者移动到其自己的唯一组,否则无法监听主题 B 的所有分区,而不管主题 A 的消费者组的再平衡策略如何。

您需要在服务中同时实现分区消费者和组消费者。

1. 团体消费者

使用 Group Consumer 消费来自主题“A”的消息。 您可以在 Sarama 库中实现ConsumerGroup接口。 您的消费者“C1”和“C2”都需要作为一个组订阅主题“A”(使用相同的客户端 ID)。

2.分区消费者

使用分区消费者来消费主题“B”中的消息。 为此,请使用 Sarama 库中的Consumer接口。 “C1”和“C2”需要在启动和重新平衡之后订阅所有分区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM