当前只读状态:是_Raft 只读(read-only)优化

本文探讨了Raft协议中针对只读操作的优化,包括使用readIndex和时钟(lease read)方法,以提高数据读取效率和一致性。readIndex通过等待心跳确认确保最新数据,而lease read利用选举超时时间提供一定时间内无需网络请求的读服务。此外,还讨论了TiKV的解决方案,结合两种方法动态调整租期。
摘要由CSDN通过智能技术生成

036e2761e9e028d1c93ff175142f1ed9.png

Raft 只读操作优化

为什么需要优化只读操作

raft是一个为分布式集群达成一致性的协议。对于集群需要保证一致性的数据,每次一操作其实都要确认此操作是否在集群中达成了一致。从是否会改变数据的角度,操作就分两个只读操作写操作。只读操作顾名思义就是不会对数据做任何的改动。写操作包含了增删改等需要修改数据的操作,通俗说就是这次操作处理完后,数据有可能跟操作前不一样。

正是因为只读操作不对数据进行修改,所以raft可以优化只读操作。

  1. 因为只要客户端请求的是现集群真正的leader,那么获取到的数据就不会有错误。一个只读操作没有必要征求整个raft集群的共识。毕竟使用raft达成一个操作的共识还需要多节点网络请求与log持久化落磁盘等开销。
  2. 在恢复和安装快照,或者是raft集群加入新节点同步log与数据的时,因为只读操作并没有改变数据,所以不需要还原这些操作也能保持数据的完整与一致,提高数据恢复的效率。

如何优化

优化只读操作的核心就是保证此时请求到该集群leader确实是能够向集群中法定人数的节点commit log成功。否则用户可能会读到陈旧的数据信息,无法保证线性一致。

用论文[1]中的话说就是

  1. leader必须拥有最新被提交的日志的信息
  2. 在处理只读请求前,leader必须确认自己是否已经被替换掉了

围绕这一核心目标࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值