我在博客中遇到了上述内容 http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_about_hh_c.html
令人困惑。所以,假设我有 5节点集群,其中 RF为3 且写入一致性为 Quorum ,即2个节点< / p>
现在,如果我尝试为给定的特定数据写出三个副本节点中的一些,那么两个就会失效。那么,这是否意味着cassandra不会存储提示(因为它知道它不能满足给定的法定人数的一致性)?并立即拒绝写入或者它会为他们存储提示并作出回应成功吗?
有人可以详细说明一下吗?
答案 0 :(得分:2)
如果您有RF = 3且2个节点已关闭或无法及时为请求提供服务,则写入请求将失败,并且不会存储提示的切换。只有在满足请求的一致性等级(CL)并且您处于提示的切换窗口内时,才会存储提示的切换。唯一的例外是使用CL = ANY写的请求。
答案 1 :(得分:1)
这里有两种不同的机制。让我举个例子来澄清一下。
假设我有一个 3个节点的群集,其中 3个复制且一致性 Quorum(2)。 这意味着当我写入数据库时,我将得到两个响应以满足我的查询。
在满足查询后,节点必须将此写入发送到第3个节点。处理查询的节点尝试将写入发送到第3个节点。该节点当前不可用,这导致节点改为写入提示切换。然后它将成功返回给客户端。
注意在满足一致性后发生暗示切换。提示的切换确保写入到达包含副本的所有节点。
现在您发布的文章中提到了这个的一个例外情况。 一致性级别ANY 是一个一致性级别,只要有一个可以提供请求的节点,就可以通过编写提示切换来满足该级别。