【发布时间】:2015-10-09 02:30:58
【问题描述】:
TL;DR
如果一个副本节点宕机了,新的分区映射还不可用,一致性级别=ALL的读取会失败吗?
示例:
鉴于此 Aerospike 集群设置:
- 3 个物理节点:A、B、C
- 副本 = 2
- 读取一致性级别 = ALL(读取会咨询保存数据的两个节点)
还有这一系列事件:
- 一段数据“DAT”存储到两个节点A和B
- 节点 B 宕机。
- 在 B 发生故障后,立即执行读取请求(“请求 1”),并保持 ALL 一致性。
- 约 1 秒后,生成一个新的分区图。集群现在知道 B 已经消失了。
- “DAT”现在在节点 C 处复制(以保留副本 = 2)。
- 另一个读取请求(“请求 2”)以一致性 ALL 执行。
可以说“请求 2”会成功。
“请求 1”会成功吗?会不会:
a) 由于尝试了两次读取而成功,即使一个节点已关闭?
b) 因为一个节点宕机而失败,意味着只有 1 个“DAT”副本可用?
【问题讨论】:
标签: aerospike