kafka集群topic重新分配leader

1.案例

当kafka集群的broker节点宕机重启后,此broker节点的partition分区的leader节点会被选举为其它broker节点,此broker节点恢复后就会导致配分不均衡

  

 可以看到所有partition的leader节点都在broker id为1的节点上,原来是平均分配到3个broker节点上,replicas项的首位就是表示原来的leader节点在哪个broker节点上

2.解决方法

观察isr列表是否三个broker节点都在,以保证三个broker节点数据一致性

bin/kafka-topics.sh --describe --bootstrap-server 10.1.60.114:9092 --topic apex

在任意kafka集群的broker节点执行以下命令,若有多个分区要重新选举则更改--partition项执行

/etc/kafka/kafka/bin/kafka-leader-election.sh --bootstrap-server 10.1.60.114:9092 --topic test --partition 1 --election-type preferred

--partition为指定要重新选举的分区号

--election-type为选举模式,可以是preferredunclean

preferred选举模式下,选举过程中会首先尝试将leader选举为ISR列表中的一个副本。这是因为ISR副本与leader副本保持同步,因此它们的数据是一致的,可以保证不会发生数据丢失。如果ISR列表中没有可用的副本,则会将leader选举为非ISR副本。非ISR副本与leader副本可能存在数据不一致的情况,因此在选举非ISR副本为新leader时,可能会发生数据丢失

unclean模式下,则会将leader选举为分区中的任何一个副本,而不考虑其是否与leader同步。这种类型的选举可能会导致数据丢失,因此应该谨慎使用

总之,preferred选举模式的工作原理是优先选举与leader副本同步的ISR副本作为新的leader,以保证数据的一致性和可靠性

重新选举一般都是选举为replica项的第一个broker id为leader,即原来的broker节点

 

 可以看到partition的leader都被分配回了原来的broker节点上

不用担心重新选举其它节点为leader节点后数据会不一致

在Kafka中,ISR副本是与leader副本保持同步的副本,它们的数据是一致的。当一个ISR副本被选举为新的leader时,它会从上一个leader副本处继续消费消息,因此不会出现重复消费的情况

 当一个ISR副本失去同步时,它就会从ISR列表中删除,此时就需要重新选举一个新的leader。如果选举过程中选举为非ISR副本,那么可能会出现数据丢失或重复消费的情况。因此,在选举新的leader时,应该优先选择ISR副本,以保证数据的一致性和可靠性

ISR中所有的副本在任意时刻都与leader的数据是一致的,这是Kafka提供的数据可靠性保证之一

当生产者向Kafka发送消息时,只有当消息被ISR列表中的所有副本都成功地写入后,才会向生产者返回成功的响应。这意味着ISR列表中的所有副本都已经成功地复制了消息,因此它们的数据是一致的。当消费者从ISR副本中读取消息时,它们也可以保证读取到与leader副本相同的数据

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值