2013-04-03 39 views
3

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

+0

“强一致性”是什么意思? – Ari

+0

我的意思是立即一致的情况下写。在这个官方Riak比较它是完全一致的http://docs.basho.com/riak/1.2.1/references/appendices/comparisons/Riak-Compared-to-Couchbase/ – ftraian

回答

6

Couchbase IS membase btw。 Couchbase是一家产品和一家公司,该公司是NorthScale(Membase)和CouchDB创始人的合并,公司和产品的名称都是Couchbase。

更新操作(替换和[强制]设置)首先更新RAM缓存,后续读取是新值,这是一致性模型。

Couchbase是一个“最终持久化”(EP)体系结构,其中CRUD操作首先更新RAM高速缓存并插入到EP队列中以用于磁盘I/O。同时,当配置副本时,它们进入副本队列并被传输到其他节点。由于磁盘I/O是所有系统中速度最慢的组件,因此EP架构可实现即时一致性和超高吞吐量。

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

+0

你怎么能称之为“最终坚持”如果有潜在的数据丢失?而且观点最终是一致的,而不是直接的。 –

5

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

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

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

有一些额外的信息在this blog后。

1

我不认为它是一致性强,因为如果一个节点活动vbucket重新启动,数据没有被复制或没有保存,它会丢失数据; 强一致性需要W + R> N,这里R = 1,所以我们需要W = N这意味着所有的副本应该是ACID; 我们可以称之为假强一致性

+0

在这一点上,它最终也不会持续 – user2530422