人生第一份工作■Kafka架构原理,也就这么回事( 三 )
数据可靠性保证
为保证 Producer 发送的数据 , 能可靠地发送到指定的 Topic , Topic 的每个 Partition 收到 Producer 发送的数据后 , 都需要向 Producer 发送 ACK(ACKnowledge 确认收到) 。
如果 Producer 收到 ACK , 就会进行下一轮的发送 , 否则重新发送数据 。
本文插图
①副本数据同步策略
何时发送 ACK?确保有 Follower 与 Leader 同步完成 , Leader 再发送 ACK , 这样才能保证 Leader 挂掉之后 , 能在 Follower 中选举出新的 Leader 而不丢数据 。
多少个 Follower 同步完成后发送 ACK?全部 Follower 同步完成 , 再发送 ACK 。
本文插图
②ISR
采用第二种方案 , 所有 Follower 完成同步 , Producer 才能继续发送数据 , 设想有一个 Follower 因为某种原因出现故障 , 那 Leader 就要一直等到它完成同步 。
这个问题怎么解决?Leader维护了一个动态的 in-sync replica set(ISR):和 Leader 保持同步的 Follower 集合 。
当 ISR 集合中的 Follower 完成数据的同步之后 , Leader 就会给 Follower 发送 ACK 。
如果 Follower 长时间未向 Leader 同步数据 , 则该 Follower 将被踢出 ISR 集合 , 该时间阈值由 replica.lag.time.max.ms 参数设定 。 Leader 发生故障后 , 就会从 ISR 中选举出新的 Leader 。
③ACK 应答机制
对于某些不太重要的数据 , 对数据的可靠性要求不是很高 , 能够容忍数据的少量丢失 , 所以没必要等 ISR 中的 Follower 全部接受成功 。
所以 Kafka 为用户提供了三种可靠性级别 , 用户根据可靠性和延迟的要求进行权衡 , 选择以下的配置 。
本文插图
Ack 参数配置:
- 0:Producer 不等待 Broker 的 ACK , 这提供了最低延迟 , Broker 一收到数据还没有写入磁盘就已经返回 , 当 Broker 故障时有可能丢失数据 。
- 1:Producer 等待 Broker 的 ACK , Partition 的 Leader 落盘成功后返回 ACK , 如果在 Follower 同步成功之前 Leader 故障 , 那么将会丢失数据 。
- -1(all):Producer 等待 Broker 的 ACK , Partition 的 Leader 和 Follower 全部落盘成功后才返回 ACK 。 但是在 Broker 发送 ACK 时 , Leader 发生故障 , 则会造成数据重复 。
本文插图
LEO:每个副本最大的 Offset 。 HW:消费者能见到的最大的 Offset , ISR 队列中最小的 LEO 。
Follower 故障:Follower 发生故障后会被临时踢出 ISR 集合 , 待该 Follower 恢复后 , Follower 会 读取本地磁盘记录的上次的 HW , 并将 log 文件高于 HW 的部分截取掉 , 从 HW 开始向 Leader 进行同步数据操作 。
等该 Follower 的 LEO 大于等于该 Partition 的 HW , 即 Follower 追上 Leader 后 , 就可以重新加入 ISR 了 。
Leader 故障:Leader 发生故障后 , 会从 ISR 中选出一个新的 Leader , 之后 , 为保证多个副本之间的数据一致性 , 其余的 Follower 会先将各自的 log 文件高于 HW 的部分截掉 , 然后从新的 Leader 同步数据 。
注意:这只能保证副本之间的数据一致性 , 并不能保证数据不丢失或者不重复 。
Exactly Once 语义
将服务器的 ACK 级别设置为 -1 , 可以保证 Producer 到 Server 之间不会丢失数据 , 即 At Least Once 语义 。
推荐阅读
- [请叫我绅士]就上山去找大师问,随后恍然大悟,开心笑话:一位青年找不到工作
- 『烨然聊科技』走上人生巅峰后,现生活怎么样了?,支付宝大爷因名字成网红
- 『专场』没找到工作?广东为期100天的网络招聘会来了
- 云安全联盟区块链安全工作组启动,e签宝助力推动区块链安全发展
- 『悠萌影视』月薪大概多少?内部员工工资揭秘,研究生和本科生到国家电网工作
- 『砍柴网』有道翻译官推出检疫特别版 助力全国百万公安民警跨境检疫工作
- [西北信息报社]陕西出台《决定》加强检察公益诉讼工作
- 重组后第一份年报出炉 TCL科技如何“提质增效”
- 『抓好』一起为大地添绿(统筹抓好改革发展稳定各项工作)
- 【三江源国家】青海自然保护地体系示范省建设工作取得积极进展
