目录
1、优先副本的选举
2、分区重分配
3、复制限流
4、修改副本因子
分区使用多副本机制保证可靠,leader副本对外提供读写服务,follower副本只负责在内部进行消息同步。
在创建topic时,该topic的分区和副本会尽可能均匀分布到各个broker节点上,对应的leader副本也比较均匀。

Kafka集群的一个broker中最多只能有同一个分区的一个副本,我们可以将leader副本所在的broker节点叫作分区的leader节点,而follower副本所在的broker节点叫作分区的follower节点
将brokerId为2的节点重启,那么主题topic-partitions新的分布信息如下
可以看到原本分区1的leader节点为2,现在变成了0,如此一来原本均衡的负载变成了失衡:节点0的负载最高,而节点1的负载最低。
优先副本就是AR集合列表中的第一个副本,理想情况下,优先副本就是该分区的leader副本,也可以称为preferred leader。
所谓的优先副本的选举是指通过一定的方式促使优先副本选举为leader副本,以此来促进集群的负载均衡,这一行为也可以称为“分区平衡
分区重分配(将宕机节点的分区副本迁移到其他可用节点上,将旧主题分区分配到新增broker节点上)
通过某种方式能够将该节点上的分区副本迁移到其他的可用节点上。
kafka-reassign-partitions.sh 脚本的使用分为 3 个步骤:首先创建需要一个包含主题清单的JSON 文件,其次根据主题清单和 broker 节点清单生成一份重分配方案,最后根据这份方案执行具体的重分配动作。
1、先通过控制器为每个分区添加新副本(增加副本因子),新的副本将从分区的leader副本复制所有的数据。复制完成后,控制器将旧副本从副本清单中移除
复制限流
分区重分配的本质在于数据复制,先增加新的副本,再进行数据同步,最后删除旧的副本。
- 处于业务高峰期的时候。减小重分配的粒度,以小批次的方式来操作是一种可行的解决思路
- 集群中某个主题或某个分区的流量在某段时间内特别大,那么只靠减小粒度是不足以应对的,这时就需要有一个限流的机制,可以对副本间的复制流量加以限制来保证重分配期间整体服务不会受太大的影响
No comments yet.