Raft算法以超半数写入即确认保存成功, 那如果访问的正好是没写入那个节点,怎么保证一致
假设有A, B, C, D, E 5个节点(当前状态都是x), 客户端发送一个状态更新请求 x->y, 写入了A, B, C三个节点, 然后被确认保存了(A, B, C都committed).
- 如果在D, E还未同步到y的时候(D, E中没有uncommited的状态), 客户端去D拿状态了, 此刻D的状态还是x, 这时候怎么保证一致性?
- 如果D中的y状态尚处于uncommitted, 客户端去D拿状态了, 此时又是怎么处理?
加两个问题:
3 . A是Leader, 5个节点的数据是: A(0), B(0), C(0), D(0), E(0);
写入3并确认, 节点: A(0, 3), B(0, 3), C(0, 3), D(0), E(0);
如果此时A挂了, 在B, C, D, E中重新选举, 那么D, E会成为新Leader吗? 如果E成为了Leader, E的数据并不全, 怎么办?4 . A是Leader, 5个节点的数据是: A(0), B(0), C(0), D(0), E(0);
写入3并确认, 节点: A(0, 3), B(0, 3), C(0, 3), D(0, 3-uncommitted), E(0, 3-uncommitted);
如果此时A挂了, 那么D, E会成为新Leader吗? 如果E成为了Leader, E还有一条uncommitted的数据怎么处理?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Raft 是个强 Leader 模型,只由 Leader 处理客户端请求,就算客户端连接了 Follower,Follower 也会把请求转发给 Leader 处理。
Raft 论文 5.1 节:
第 3 个问题:D、E 不会成为 Leader,因为它们的日志比 B、C 的日志更旧,B 和 C 不会投票给 D 和 E。看最后一句:
