Cassandra从一个已关闭的节点请求数据?

时间:2014-11-24 13:48:26

标签: node.js cassandra consistency

设定: 2个节点,Ec2Snitch
1节点UP 54.1xx.1xx.1xx

1节点向下54.1xx.2xx.1xx [故意]

Keyspace NetworkTopology复制因子2 (两个节点都有数据)

现在我测试了一致性等级为1的读数。

我得到“所有主机尝试查询失败。第一台主机尝试,54.1xx.2xx.1xx:主机被视为DOWN。请参阅innerErrors。”
为正常停止的节点获取此信息。 / p>

为什么我得到这个例外? Cassandra不应该自动服务来自Node的所有请求吗? [我当时希望卡桑德拉能够处理它。]

或者我们应该处理DN(Down Normal)节点 我该如何处理?

如果我手动使Down节点Up,我得到所有响应,否则我会在前1/4的总请求中得到上述错误。

1 个答案:

答案 0 :(得分:1)

Cassandra的DataStax Node.js驱动程序中的默认负载平衡策略为TokenAwarePolicy with DCAwareRoundRobinPolicy as child policy。 DCAwareRoundRobinPolicy默认设置为使用0个远程节点。

如果本地节点发生故障,您可以将其更改为使用每个远程数据中心的1个节点。

var localDc = "east1";
var remoteNodes = 1;
var options = { 
  policies: {loadBalancing: new DCAwareRoundRobinPolicy(localDc, remoteNodes)}
};
var client = new Client(options);