4 种 Kafka 网络中断和网络分区场景分析

本文分析了Kafka在不同网络中断场景下的行为,包括单个broker与leader、controller的网络问题,非controller节点和Controller节点所在AZ隔离。网络中断可能导致元数据不一致、分区双主、数据丢失或延迟。详细讨论了数据一致性问题及其解决方案,对于acks配置和故障恢复策略有重要启示。
摘要由CSDN通过智能技术生成

###1. 单个 broker 节点和 leader 节点网络中断
网络中断前:
broker-1 和 broker-0(leader)间的网络中断后,单边中断,zk 可用(zk-1 为 leader,zk-0 和 zk-2 为 follower,zk-0 会不可用,但 zk 集群可用,过程中可能会引起原本连在 zk-0 上的 broker 节点会先和 zk 断开,再重新连接其他 zk 节点,进而引起 controller 切换、leader 选举等,此次分析暂不考虑这种情况),leader、isr、controller 都不变

az2 内的客户端无法生产消费(metadata 指明 leader 为 broker-0,而 az2 连不上 broker-0),az1/3 内的客户端可以生产消费,若 acks=-1,retries=1,则生产消息会失败,error_code=7(REQUEST_TIMED_OUT)(因为 broker-1 在 isr 中,但无法同步数据),且会发两次(因为 retries=1),broker-0 和 broker-2 中会各有两条重复的消息,而 broker-1 中没有;由于 broker-0 没有同步数据,因此会从 isr 中被剔除,controller 同步 metadata 和 leaderAndIsr,isr 更新为 [2,0]
网络恢复后,数据同步,更新 isr
##2. 单个 broker 节点和 controller 节点网络中断
broker 和 controller 断连,不影响生产消费,也不会出现数据不一致的情况
而当发生 leader 和 isr 变化时,controller 无法将 leader 和 isr 的变化更新给 broker,导致元数据不一致

broker-0 故障时,controller(broker-2)感知,并根据 replicas 选举新的 leader 为 broker-1,但因为和 broker-1 网络中断,无法同步给 broker-1,broker-1 缓存的 leader 依然是 broker-0,isr 为 [1,2,0];当客户端进行生产消费时,如果从 broker-2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值