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