繁体   English   中英

Cassandra写一致性级别ALL澄清

[英]Cassandra write consistency level ALL clarification

根据Datastax 的Cassandra文档

“如果协调器无法写入足够多的副本来满足请求的一致性级别,则它将引发Unavailable Exception并且不执行任何写入。”

这是否意味着在写入过程中,由写入更新的数据将不可用于读取请求? 我的意思是可能4/5个节点已成功向协调器发送了SUCCESS,这意味着它们的数据已更新。 但是第5个尚未完成。 现在,如果有读取请求进入并转到这4个节点之一,它将仍然显示旧数据,直到协调器从第5个节点收到确认并标记新数据有效为止?

如果协调器在尝试写入之前知道它不可能达到一致性,则它将在执行写入之前立即使请求失败。 (在给出的报价中对此进行了说明)

但是,如果协调器认为在尝试时有足够的节点达到其配置的一致性级别,它将开始向其对等方发送数据。 如果对等方之一未返回成功,则请求将失败,您将进入一种状态,其中失败的节点具有旧数据,而通过的节点具有新数据。

如果出现读取请求,则无论它是旧的还是新的,它都会显示在到达的节点上找到的数据。

让我们以您的榜样进行演示。

如果您有5个节点并且具有复制3。这意味着这5个节点中的3个将具有您已发送的写入。 但是,三个节点之一将故障返回给协调器。 现在,如果您以一致性级别ALL阅读。 您将读取所有三个节点,并且将始终获得新的写入(最新时间戳始终为赢)。

但是,如果您以一致性级别ONE阅读,则有1/3的机会会得到旧值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM