1
我们有2个节点的Cassandra集群。复制因子为1,一致性级别为1.我们不使用复制,因为我们插入的数据对于每条记录都非常大。 当在该节点中执行写操作时,Cassandra如何在节点关闭时作出反应?我们使用Java客户端的Hector API。我的理解是,Cassandra将执行写入正在运行的其他节点。cassandra如何在节点执行写操作并且节点发生故障时作出反应
我们有2个节点的Cassandra集群。复制因子为1,一致性级别为1.我们不使用复制,因为我们插入的数据对于每条记录都非常大。 当在该节点中执行写操作时,Cassandra如何在节点关闭时作出反应?我们使用Java客户端的Hector API。我的理解是,Cassandra将执行写入正在运行的其他节点。cassandra如何在节点执行写操作并且节点发生故障时作出反应
不,使用CL.ONE时,如果插入的数据属于击落节点的令牌范围,则不会执行写操作。一致性级别定义了多少个副本节点必须响应接受请求。
如果您希望能够写入,即使副本节点已关闭,您也需要使用CL.ANY。 ANY会确保协调员为请求存储提示。提示存储在System.Hints表中。复制品再次回来后,所有提示将被处理并发送到即将到来的节点。
编辑
您会收到以下错误:
com.datastax.driver.core.exceptions.UnavailableException: Not enough replica available for query at consistency ONE (1 required but only 0 alive)
换句话说,写请求将在OP描述的情况返回一个错误。 – Brandon
谢谢Zerd和Brandon。 Hector API不会引发任何异常,但日志会显示有关节点关闭状态的警告消息。当我关闭节点2时,Hector API抛出异常。我正在使用cassandra 2.0.5版本和hector 1.1版本 –