【发布时间】:2014-04-03 10:10:50
【问题描述】:
您好,我是 Cassandra 的新手。我有一个 2 节点 Cassandra 集群。由于前端强加的原因,我需要...
- 两个节点上的所有数据的总复制。
- 最终一致的写入。因此,被写入的节点将立即响应前端的确认。复制时未同步
谁能告诉我这可能吗?它是在 YAML 文件中完成的吗?我知道那里有保持一致性的属性,但我没有看到任何分区器适合我的需要。我在哪里可以设置复制因子?
谢谢
【问题讨论】:
您好,我是 Cassandra 的新手。我有一个 2 节点 Cassandra 集群。由于前端强加的原因,我需要...
谁能告诉我这可能吗?它是在 YAML 文件中完成的吗?我知道那里有保持一致性的属性,但我没有看到任何分区器适合我的需要。我在哪里可以设置复制因子?
谢谢
【问题讨论】:
您在创建键空间期间设置了复制因子。因此,如果您使用(并计划未来使用)单个数据中心设置,您可以像这样使用 cqlsh 创建密钥空间
CREATE KEYSPACE "Excalibur"
WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 3};
查看有关create keyspace 的文档。这在内部如何处理与snitch definition of the cluster and a strategy option defined per keyspace 有关。在上面的 SimpleStrategy 的情况下,这只是假设您的集群的环形拓扑,并将数据顺时针放置在该环中(请参阅this)。
关于一致性,您可以在每次操作期间为客户端/驱动程序中的写入和读取操作提供不同级别的一致性:
Cassandra 通过提供可调一致性扩展了最终一致性的概念——对于任何给定的读取或写入操作,客户端应用程序决定所请求数据的一致性。
如果您在客户端中使用 Java,并且使用 DatatStax Java 驱动程序,您可以使用 set the consistency 级别使用
QueryOptions.setConsistencyLevel(ConsistencyLevel consistencyLevel)
“一个”是默认设置。
希望有帮助
【讨论】:
SimpleStrategy 就足够了。他还应该阅读this