node.js - Cassandra 向已关闭的 Node 请求数据?

标签 node.js cassandra consistency

设置: 2 个 Node ,Ec2Snitch
1 个 Node UP 54.1xx.1xx.1xx

1 个 Node 宕机 54.1xx.2xx.1xx [故意]

Keyspace 网络拓扑复制因子为 2 (两个 Node 都有数据)

现在我测试了一致性级别 1 的读取。

我收到“尝试查询的所有主机均失败。尝试的第一个主机,54.1xx.2xx.1xx:主机被视为已关闭。请参阅内部错误。”
为已关闭的 Node 获取此信息。

为什么我会收到此异常? Cassandra 不应该自动服务来自已启动 Node 的所有请求吗? [我期待 Cassandra 能够处理它。]

或者我们应该处理一个 DN(正常下降)的 Node 我该如何处理这个问题?

如果我手动将 Down Node 设置为 Up,我会收到所有响应,否则我会在总请求的前 1/4 中收到上述错误。

最佳答案

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

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

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

关于node.js - Cassandra 向已关闭的 Node 请求数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27106390/

相关文章:

javascript - node.js 从 url 下载带有未知扩展名的图像

python - dynamodb 更新非规范化数据并保持一致性

cassandra - 使用 cassandra-cli 或 CQL 更改 cassandra 列族主键

php - CQLSH 客户端 - 模块'对象没有属性'parse_options

nosql - 尝试新的 CQL 3 时 Cassandra 出现错误

database - Oracle(通常是 RDB?)是否拍摄受 DML 影响的表的快照?

c++ - C/C++ 算法在不同平台上从相同的种子生成相同的伪随机数序列?

node.js - 这行代码要找哪个文件

javascript - Firebase 类型错误 : Cannot read property 'val' of undefined

node.js - express.js/sails.js 中的身份验证和 session