Raft算法以超半数写入即确认, 那如果访问的正好是没写入那个节点,怎么保证一致

来源:4-2 etcd功能与原理(下)

痕六

2021-02-21

假设有A, B, C, D, E 5个节点(当前状态都是x), 客户端发送一个状态更新请求 x->y, 写入了A, B, C三个节点, 然后被确认保存了.
如果在D, E还未同步到y的时候, 客户端去D拿状态了, 此刻D的状态还是x, 这时候怎么保证一致性?

写回答

3回答

小鱼儿老师

2021-06-30

同学好,etcd是最终一致性协议,所以一定会发生你所说的情况。


从工程角度,可以通过线性读方式保证总是能读取到最新数据,大概原理就是承载客户端请求的etcd节点写入一条raft log并等待这条raft log被集群提交,那么此时之前的raft log一定已经同步到本地,数据必然是最新的。

1
0

慕粉3722061

2023-03-31

chatgpt回答:
//img.mukewang.com/szimg/6426fa8509e2608809701117.jpg

0
0

noppt

2021-12-02

在follower的读,会向leader发送请求,对比下自己提交的记录是不是大于等于leader上的提交记录,是就返回,不是就不返回吧。个人理解

0
0

Go语言开发分布式任务调度 轻松搞定高性能Crontab

分布式系统设计+高并发细节处理,一次性让你“晋级”到位

1136 学习 · 177 问题

查看课程