【发布时间】:2017-08-03 11:24:31
【问题描述】:
Cassandra 的每一行都有一个主副本,并且根据集群配置在多个节点上进行复制。我想了解可能导致行级别数据冲突的情况,尤其是当每一行只有一个主副本时。一些例子会很有帮助。
【问题讨论】:
-
在写入行方面没有主副本区别。对主键进行散列确定具有主要责任的节点,然后将数据同时发送到所有节点。根据一致性级别,在 1、quorum 或所有节点都已回复后将响应发送给客户端。
Cassandra 的每一行都有一个主副本,并且根据集群配置在多个节点上进行复制。我想了解可能导致行级别数据冲突的情况,尤其是当每一行只有一个主副本时。一些例子会很有帮助。
【问题讨论】:
Cassandra 中没有主副本的概念。根据您的主键和散列算法(随机或 mumur3)将每一行散列成一个令牌,并且负责该令牌的节点获取数据的第一个副本。根据您的复制因子(副本数),环中的其他节点会获得其他副本。
如果您将 RF 设置为 1,则包含该数据的节点可能会关闭(损坏)并且您将无法检索该数据。作为最佳实践,您应该在生产环境中从 RF=3 开始,然后根据您的需要更改 RF。 RF 为 1 可用于测试目的。
希望对您有所帮助!
【讨论】: