为什么卡桑德拉不一致,但HBase是?



在浏览Cassandra和HBase的阅读材料时,我发现Cassandra不一致,但HBase是一致的。没有找到任何合适的阅读材料。

任何人都可以提供有关此主题的任何博客/文章吗?

Cassandra最终是一致的。基于布鲁尔定理(也称为CAP定理),分布式数据系统只能保证实现以下3个特征中的2个:

  • 一致性。
  • 可用性。
  • 分区容错。

这意味着 Cassandra 在其默认配置中可以保证可用和分区容错,并且在实现一致性之前可能会有延迟。但这是可配置的,因为您可以提高任何查询的一致性级别,从而牺牲分区容错。

网络上有多个资源,你应该查找"Cassandra中的最终一致性",你可以从Ed Capriolo的演讲开始,或者quora中的这篇文章

实际上,从1.1版本开始,HBase有两个一致性模型:

Consistency.STRONG是 HBase 提供的默认一致性模型。 如果表的区域复制 = 1,或者在具有 区域副本,但读取是以此一致性完成的,读取 始终由主要区域执行,因此不会有 与之前的行为相比的任何变化,客户始终观察到 最新数据。

如果使用Consistency.TIMELINE执行读取,则读取 RPC 将首先发送到主要区域服务器。短暂过后 间隔(hbase.client.primaryCallTimeout.get,默认为10ms), 如果出现以下情况,还将发送次要区域副本的并行 RPC。 主服务器不响应...

换句话说,强一致性是通过仅允许对执行写入的副本进行读取来实现的,而时间线一致性(参考指南强调区分时间线与最终一致性)行为以低延迟提供高可用性读取,但代价是读取过时数据的机会很小。

最新更新