Kafka 核心技术与实战:消费者
一、Consuemr Group
Consumer Group 是 Kafka 提供的可扩展且具有容错性的消费者机制。
老版本的 Consumer Group 把位移保存在 ZooKeeper 中。新版本的 Consumer Group 将位移保存在 Broker 端的内部主题中。
Rebalance 本质上是一种协议,规定了一个 Consumer Group 下的所有 Consumer 如何达成一致,来分配订阅 Topic 的每个分区。
举个简单的例子,假设目前某个 Consumer Group 下有两个 Consumer,比如 A 和 B,当第三个成员 C 加入时,Kafka 会触发 Rebalance,并根据默认的分配策略重新为 A、B 和 C 分配分区,如下图所示:

但在 Rebalance 过程中,所有 Consumer 实例都会停止消费,等待 Rebalance 完成。
二、Offsets Topic
__consumer_offsets 在 Kafka 源码中有个更为正式的名字,叫位移主题,即 Offsets Topic。
位移主题的 Key 中应该保存 3 部分内容:<Group ID,主题名,分区号 >
当 Kafka 集群中的第一个 Consumer 程序启动时,Kafka 会自动创建位移主题。如果位移主题是 Kafka 自动创建的,那么该主题的分区数是 50,副本数是 3。
Kafka 使用 Compact 策略来删除位移主题中的过期消息,避免该主题无限期膨胀。

This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content