【发布时间】:2020-04-17 23:15:57
【问题描述】:
考虑一个有 4 个节点的集群。
复制因子已设置为 3。
我们提供了一个一致性级别设置为 ALL 的写入查询,但只有一个副本成功写入数据,另外两个从未响应。 (写入时崩溃)
在这种情况下,协调器以TimeOutException 响应,因此我们认为我们的请求未能持续。
然后我们对相同的 row_key 进行读取查询,一致性级别设置为 1,协调器将此请求发送到成功写入上一个请求的同一节点。
我的问题是接下来会发生什么?此读取查询是否返回值?如果是这样,这种行为是否真的有意义,因为我们首先抛出了 UnavailableException?
【问题讨论】:
-
我的回答不正确...我刚刚检查了代码 - 在写入数据之前有一个检查(在
StorageProxy.java中)以检查我们是否能够达到给定的 CL全部。所以在这种情况下,我们不应该向任何节点发送写请求。 -
你说得对,Alex 但我对协调器认为所有节点都很好但其中一些节点在写入操作期间突然崩溃的情况更感兴趣。
-
好的,那就另当别论了,让我取消删除我的答案并修改它。
标签: cassandra nosql cql eventual-consistency