【发布时间】:2020-12-03 02:47:44
【问题描述】:
考虑五个节点(S1、S2、S3、S4、S5)获取键/值数据。并且发生了以下步骤
- S3 成为领导者,客户端向集群写入等于 2 的密钥
- S3将entry附加到S1,S2,S4,S5,然后S1,S2,S4,S5接受它并将entry写入自己的日志(如图1所示)
- S3 收到多数响应(来自 S1,S2,S4,S5),S3 提交 key 等于 2 的实体,并向客户端发送写入成功消息,然后向 S1,S2,S4,S5 发送提交消息
- S2,S4,S5 收到提交消息并提交成功,但 S1 崩溃。就像图 2 中一样,S1 将有一个未提交的条目。
- 现在,S1 重新启动并成为一个领导者,其 key 等于 2 的未提交条目(如图 3 所示)
经过以上步骤,客户端查询一个条目(key等于2,刚刚写入成功)。但是现在 S1 是领导者,并且 key equal 2 条目未提交。因此,客户将找不到自己刚才写的条目。那么,我在哪里做错了?请帮我 (图片1) (图二) (图三)
【问题讨论】: