优选副本的选举

33 阅读1分钟

分区使用多副本机制来提升可靠性,但只有leader副本对外提供读写服务,而fallower副本只负责在内部进行消息的同步。如果一个分区的leader副本不可用,那么就意味着整个分区变得不可用,此时就需要kafka从剩余的follower副本中挑选一个新的leader副本来继续对外服务,

所谓的优先副本的选举是指通过一定的方式促使优先副本选举为leader副本,以此来促进集群的负载均衡,这一行为也可以称为"分区平衡"。

在Kafka中,可以提供分区自动平衡的功能,与此对应的broker端参数是auto.leader.rebalance.enable,此参数的默认值为true,即默认情况下,此功能是开启的,如果开启分区自动平衡的功能,则Kafka的控制器会启动一个定时任务,这个定时任务会轮询所有的broker节点,计算每个broker节点的分区不平衡率是否超过了leader.imbalance.per.broker.percentage参数配置的值,默认值是10%,如果超过设定得比值则会自动执行优选副本的选举动作以求分区平衡。

不过生产环境中不建议将auto.leader.rebalance.enable设置为true,因为这可能引起负面的性能问题,也有可能引起客户端一定时间的阻塞。