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

本文详细分析了4种Kafka网络中断和网络分区场景,包括单个broker与leader、controller的网络中断,非controller节点所在AZ隔离以及Controller节点所在AZ隔离。讨论了这些情况下如何影响生产消费、数据一致性以及恢复过程,揭示了可能的数据丢失和不一致问题。建议在设计系统时考虑acks配置以避免数据丢失。
摘要由CSDN通过智能技术生成
摘要:本文主要带来 4 种 Kafka 网络中断和网络分区场景分析。

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 依

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值