【发布时间】:2017-04-03 14:32:25
【问题描述】:
我正在使用 Cassandra 2.2,并且我有一个需要高度一致性的应用程序。
我已经配置了一个具有 3 个节点的数据中心集群。
我的键空间是用 2 的 replication_factor 创建的。
在每个 configuration.yaml 文件中,我设置了 2 个 seed_providers(例如 NODE_1 和 NODE_3)。
重要的是,即使一个节点出现故障,我的应用也应该是全功能的。
目前,当我的应用联系集群时,我遇到了一些一致性和超时问题。
我已经阅读了整个 Cassandra 2.2 文档并得出结论,我的写入操作的最佳 CONSISTENCY LEVEL 应该是 QUORUM 和我的读取操作 ONE,但我仍然存在一些一致性问题。
首先,具有高度一致性是正确的选择吗?
此外,UPDATE 和 DELETE 操作是否被视为写入或读取操作,因为例如带有 WHERE 子句的更新操作仍然必须“读取”数据?我不确定,特别是在 cassandra 的写入工作流的上下文中。
我的第二个问题是写操作期间的超时。一个简单轻量级的INSERT 有时会得到“Cassandra timeout during write query at consistency QUORUM (2 replicas were required but only 1 acknowledged the write)”
或者有些人甚至“... 0 acknoledged”,即使我所有的 3 个节点都已启动。
是否还有其他一些我应该检查的参数,例如 write_request_timeout_in_ms,默认值为 2000 毫秒(这已经是一个很高的值)?
【问题讨论】:
标签: cassandra timeout consistency cassandra-2.2