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一定已经同步到本地,数据必然是最新的。
10 -
慕粉3722061
2023-03-31
chatgpt回答:
00 -
noppt
2021-12-02
在follower的读,会向leader发送请求,对比下自己提交的记录是不是大于等于leader上的提交记录,是就返回,不是就不返回吧。个人理解
00
相似问题
