kafka之rebalance

[toc]

为什么

妈耶,升级到wordpress 5.0后,连编辑器都不会用了🤣😂🤣 这个添加表情的功能还不错(是windowns10的),Gutenberg

kafka

kafka里面一个topic的消息只能被一个消费者消费,如果有多个消费者存在的情况下,kafka会设置一个topic里面的一个partition的数据只会被某一个特定消费者消费,

例如: 对于一个topic有三个消费者,对于10个partition,那么kafka可能会给一个消费者分三个partition,然后分完这十个。

触发rebanlance

消费者消费上面分配的特定的partition,但是如果消费者异常了(无法消费信息了),kafka经过检测机制,就会重新分配partition,把坏的消费者本来应该处理的partition,再分配给其他的消费者,在此期间好的消费者无法进行消息消费,直到rebanlance结束。 这样会导致业务出现延时。

partition分配策略

  1. 将目标 topic 下的所有 partirtion 排序,存于PT
  2. 对某 consumer group 下所有 consumer 排序,存于 CG,第 i 个consumer 记为 Ci
  3. N=size(PT)/size(CG),向上取整
  4. 解除 Ci 对原来分配的 partition 的消费权(i从0开始)
  5. 将第iN到(i+1)N-1个 partition 分配给 Ci

例如:10个partition,3个consumer,i=0..2,n=4,

参考博客


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注