【问题标题】:How Couchbase achieves strong consistencyCouchbase 如何实现强一致性
【发布时间】:2013-03-25 08:13:52
【问题描述】:

我搜索了有关 Couchbase 如何在集群内实现强一致性的解释。这一切都是使用 membase 的结果吗?

【问题讨论】:

标签: couchbase membase


【解决方案1】:

Couchbase 通过强制对特定数据块的所有读取都转到集群中的单个节点来保证强一致性。您无法从副本中读取。如果可以,您最终可能会得到不一致的数据。

使用 2.0 XDCR 时,Couchbase 仅提供最终一致性。

我不会说这是他们对软件的特定设计要求之外的任何“结果”。

this blog 帖子中有一些附加信息。

【讨论】:

    【解决方案2】:

    Couchbase 是 membase 顺便说一句。 Couchbase 是一个产品和一个公司,该公司是 NorthScale (Membase) 和 CouchDB 创始人的合并,因此公司和产品的名称都是 Couchbase。

    更新操作(replace 和 [forced] set)首先更新 RAM 缓存,后续读取为新值,这就是一致性模型。

    Couchbase 是一种“最终持久化”(EP) 架构,其中 CRUD 操作首先更新 RAM 缓存,然后插入 EP 队列以进行磁盘 i/o。同时,当配置副本时,它们会进入副本队列并转移到其他节点。 EP 架构允许即时一致性和超高吞吐量,因为磁盘 i/o 是所有系统中最慢的组件。

    正如 WiredPrairie 所提到的,单个节点负责/激活给定密钥。密钥被散列,散列的结果是它应该存在的特定分区。sdk 维护的 partition->couchbase-node 映射允许它们直接转到每个分区的活动节点。同样,这减少了延迟,因为它不必通过负载平衡器(它由架构本身进行负载平衡),也不会通过“主”节点,每个节点都是主节点,也不会通过一个“分片主”,其工作是将客户端重定向到特定分片。通过绕过所有这些,可以将延迟降至最低。

    【讨论】:

    • 如果有潜在的数据丢失,你怎么能称之为“最终持久化”?此外,视图最终是一致的,而不是即时的。
    【解决方案3】:

    我不认为它是强一致性,因为如果一个节点主动vbucket重启,数据还没有被复制或者还没有持久化,它会丢失数据; 强一致性需要W+R>N,这里R=1,所以我们需要W=N,也就是说所有的replica都应该是ACID; 我们可以称之为假强一致性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 2021-04-08
      相关资源
      最近更新 更多