首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当一个副本关闭时读(具有一致性级别的所有)

当一个副本关闭时读(具有一致性级别的所有)
EN

Stack Overflow用户
提问于 2015-10-09 02:30:58
回答 1查看 255关注 0票数 4

TL;博士

如果副本节点下降,而新的分区映射不可用,那么具有一致性的读取级别= ALL会失败吗?

示例:

给出了这个机场集群的设置:

  • 3个物理节点: A、B、C
  • 副本=2
  • 读取一致性级别= ALL (读取参考两个保存数据的节点)

和这一系列事件:

  • 一个数据"DAT“存储在两个节点,A和B中。
  • 节点B下降。
  • 在B关闭后,读取请求("request 1")将立即执行,并且所有操作都是一致的。
  • 1秒后,生成一个新的分区映射。集群现在知道B已经消失了。
  • "DAT“现在在节点C中被复制(以保留replicas=2)。
  • 另一个读取请求(“请求2")以一致的方式执行。

说“请求2”会成功是合理的。

“请求1”会成功吗?会否:

( a)成功是因为尝试了两次读取,即使一个节点关闭了?

( b)失败是因为一个节点被关闭,意味着只有一个"DAT“副本可用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-09 03:11:59

请求1和请求2将成功。一致性级别策略的行为在这里描述:https://discuss.aerospike.com/t/understanding-consistency-level-overrides/711

读/写一致性级别的要点是,它们仅在集群中存在多个给定分区的版本时应用。如果集群中只有一个给定分区的版本,那么无论一致性级别如何,读/写只会到达单个节点。

  1. 所以给出A,B,C的一个飞机群,其中A是主,B是分区1的副本。
  2. 假设B失败,C现在是分区1的副本。分区1接收写,分区键被更改。
  3. 现在,B被重新启动并返回到集群。B上的分区1现在将不同于A和C。
  4. 读取一致地到达节点A以获取分区1上的密钥,现在集群中有两个版本的该分区。我们将从节点A和B读取记录,并返回最新版本(读取不会失败)。

时间间隔

  1. 迁移现在已经完成,对于分区1,A是主分区,B是副本,C不再有分区。
  2. 由于只有一个版本的分区1,所以节点A在没有咨询节点B的情况下响应客户端。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33028946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档