kafka的High Level Consumer Rebalance

前言

kafka的consumer分为High Level Consumer和Low Level Consumer。本文主要讲High Level Consumer Rebalance,至于High Level Consumer和Low Level Consumer Rebalance的具体内容可以参考这篇博文(https://blog.csdn.net/Poppy_Evan/article/details/86551101)。

Consumer启动及Rabalance流程

1、High Level Consumer启动时将其ID注册到其Consumer Group下,在Zookeeper上的路径为/consumers/[consumer group]/ids/[consumer id]
2、在/consumers/[consumer group]/ids上注册Watch
3、在/brokers/ids上注册Watch
4、如果Consumer通过Topic Filter创建消息流,则它会同时在/brokers/topics上也创建Watch
5、强制自己在其Consumer Group内启动Rebalance流程

Consumer Rebalance算法

1、将目标Topic下的所有Partirtion排序,存于P T
2、对某Consumer Group下所有Consumer排序,存于C G ,第i个Consumer记为C i
3、N=size(P T )/size(C G ) ,向上取整
4、解除C i 对原来分配的Partition的消费权(i从0开始)
5、将第 i∗N 到(i+1)∗N−1个Partition分配给C 

Consumer Rebalance算法缺陷

1、Herd Effect 任何Broker或者Consumer的增减都会触发所有的Consumer的Rebalance

2、Split Brain 每个Consumer分别单独通过Zookeeper判断哪些Broker和Consumer宕机,同时Consumer在同一时刻从Zookeeper“看”到的View可能不完全一样,这是由Zookeeper的特性决定的。

3、调整结果不可控 所有Consumer分别进行Rebalance,彼此不知道对应的Rebalance是否成功。每个consumer都要自己去做监控,自己去做Rebalance,这样会耗费一些机器的性能。每个consumer都自己去做决策,会造成整个集群行为不一致。

4、因为注册了大量的watch,只要有watch被fire consumer都会进行一次rebalance。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值