本文是《Raft 实战系列——理论篇》的最后一文,首先介绍 Raft 协议场景采用“写主读从”、“写主读主”两种模式均无法保障线性一致性的原因;其次介绍基于 Raft 协议实现工程系统时,如何来保证线性一致性;最后介绍 Raft 针对一致性所做的读性能优化的具体策略。
系列前文快速链接:
在前面5篇文章中,我们分别介绍了《Raft 基本概念》、《Raft 选主机制》、《Raft 基于日志复制实现状态机机制》、《Raft 选主及状态机维护的安全性》、《Raft 集群变更防脑裂 & 解决数据膨胀》,《线性一致性概念介绍》,系统学习 Raft 协议建议从头阅读。
------------
1. 线性一致性基础
数据一致性是为提升系统可用性所采用多副本机制所带来的新问题。在上文《Raft 实战番外篇——线性一致性》中我们重点解析了线性一致性的模型及挑战,对线性一致性不了解的同学,先阅读上文再学习下面内容会更容易理解吸收~
2. Raft 线性一致性读
2.1 写主读从缺陷分析
某次写操作的日志尚未被复制到一少部分 follower,但 leader 已经将其 commit。 某次写操作的日志已经被同步到所有 follower,但 leader 将其 commit 后,心跳包尚未通知到一部分 follower。
2.2 写主读主缺陷分析
2.3 Raft Log Read
3. Raft 读性能优化
3.1 Read Index
Leader 在收到客户端读请求时,记录下当前的 commit index,称之为 read index。 Leader 向 followers 发起一次心跳包,这一步是为了确保领导权,避免网络分区时少数派 leader 仍处理请求。 等待状态机至少应用到 read index(即 apply index 大于等于 read index)。 执行读请求,将状态机中的结果返回给客户端。
3.2 Lease Read
3.3 Follower Read
保证在读取时的最新 commit index 已经被 apply。 保证在读取时 leader 仍拥有领导权。
文章转载自Q的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1270次阅读
2025-03-13 11:40:53
【专家观点】罗敏:从理论到真实SQL,感受DeepSeek如何做性能优化
墨天轮编辑部
1269次阅读
2025-03-06 16:45:38
2025年2月国产数据库大事记
墨天轮编辑部
994次阅读
2025-03-05 12:27:34
2025年2月国产数据库中标情况一览:GoldenDB 3500+万!达梦近千万!
通讯员
875次阅读
2025-03-06 11:40:20
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
452次阅读
2025-03-13 14:38:19
AI的优化能力,取决于你问问题的能力!
潇湘秦
422次阅读
2025-03-11 11:18:22
优炫数据库成功应用于国家电投集团青海海南州新能源电厂!
优炫软件
339次阅读
2025-03-21 10:34:08
达梦数据与法本信息签署战略合作协议
达梦数据
291次阅读
2025-03-06 09:26:57
国产化+性能王炸!这套国产方案让 3.5T 数据 5 小时“无感搬家”
YMatrix
275次阅读
2025-03-13 09:51:26
磐维数据库对外门户全新升级!
磐维数据库
241次阅读
2025-03-04 15:32:59