Kafka之优先副本

为了能够有效 治理负载失衡 Kafka 引入了优先副本( preferred replica) 的概念

所谓的优先副本是指在 AR 集合列表中的第 1个副本 如上面主题 topic partitions 分区AR 集合(Replicas)为[1,2,0], 那么分区的优先副本即为1 。理想情况下,优先

本就是该分区的 leader 副本,所以也可以称之为 preferred leader。kafka 要确保所有主题的优先本在 Kafka 集群中均匀分布,这样就保证了所有分区 leader 均衡分布 如果 leader 分布过于集中, 就会造成集群负载不均衡

所谓的优先副本选举是指通过一定的方法促使 本选举为 leader ,以此来促进

集群 负载 行为 可以称为“分区平衡”

需要注意 分区平衡并不 Kafka 集群 负载 ,因为还要考虑集群中的分区

分配是否均衡。更进一步,每个分区的 leader 副本的负载是各不相同 的, leader 副本载很高,比如需要承载 30000 负荷, 有些 leader 副本只需承载个位。

就是说 就算集群中的分区分配均衡、 leader 分配均衡 ,也并不能确保整个集群 负载就是

衡的 ,还需要其它指标来进一步的衡量 ,

Kafka 中可以提供分区自动平衡的功能,与此对应的 broker 端参数是 auto.leader

rebalance.enable ,此参数的默认值为 true ,即默认情况下此功能是开启的。如果开启分区

自动平衡的功能,则 Kafka 的控制器会启动一个定时任务,这个定时任务会轮询所有的 broker

节点,计算每个 broker 节点的分区不平衡率( broker 中的不平衡率=非优先副本的 leader 数/

分区总数)是否超过 leader .工 mbalance.per.broker.percentage 参数配置的比值,

默认值为 10% ,如果超过设定的比值则会自动执行优先副本的选举动作以求分区平衡。执行

周期由参数 leader .工mbalance.che ck .inter val seconds 控制,默认值为 00 秒,即

分钟

不过在生产环境中不建议将 aut leader rebalance enable 设置为默认的 true

为这可能引起负面的性能问题,也有可能引起客户端一定时间的阻塞。因为执行的时间无法自

主掌控,如果在关键时期(比如电商大促波峰期)执行关键任务的关卡上执行优先副本的自动

选举操作,势必会有业务阻塞、频繁超时之类的风险 前面也分析过,分区及副本的均衡也不

能完全确保集群整体的均衡,并且集群中 一定程度上的不均衡也是可以忍受的,为防止出现关

键时期“掉链子”的行为,笔者建议还是将掌控权把控在自己的手中,可以针对此类相关的埋

点指标设置相应的告警,在合适的时机执行合适的操作,而这个“合适的操作”就是指手动执

行分区平衡。

Kafka kafka-perferred-replica election.sh 脚本提供了对分区 leader 副本进行重新平衡的功

能。优先副本的选举过程是 个安全的过程, Kafka 客户端可以自动感知分区 leader ji\lj 本的变

更。下面的示例演示了 kafka-perferr创刊plica lec tion.s 脚本的具体用法:

posted on 2020-12-29 16:33  MaXianZhe  阅读(997)  评论(0编辑  收藏  举报

导航