我对QUORUM写入选择多个DC情况下写入的节点有点困惑。
例如,假设我有一个3 DC群集,每个DC中有3个节点,并且复制因子为2,因此实现QUORUM所需的副本数量为3.注意:这仅仅是一个示例我制定了我的问题,而不是实际的配置。
我的问题如下:在编写的情况下,如何将这3个副本分布在群集中的所有DC上?所有3个副本都可能在同一个DC中结束吗?Cassandra QUORUM编写一致性级别和多个DC
回答
一致性水平确定在其上写必须确认返回给客户端应用程序
即使在低浓度水平之前成功副本的数量,写仍发送给所有副本的书面关键,甚至是其他数据中心的复制品。一致性级别只是确定需要多少副本来响应他们收到的写入。
来源:http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html
所以如果设置一致性级别设置为QUORUM
。我假定每个DC的RF都是2.所以QUORUM是3. 因此,所有的写操作仍然发送每个DC的所有副本(3 * 2 = 6节点)并等待3节点成功后,它将发送确认到客户端
复制是在关键空间级别定义的。因此,例如,
create keyspace test with replication = { 'class' : 'NetworkTopologyStrategy', 'DC1' : 2, 'DC2' : 2, 'DC3' : 2 };
正如你可以清楚地看到每个DC将持有该密钥空间的两个数据副本,而不是更多。您可以将同一群集中的另一个密钥空间定义为仅在一个DC中复制,而不是在另一个DC中复制。所以它的灵活性。
现在为了保持一致性,每个DC有3个DC和RF = 2,您有6个数据副本。根据Quorum的定义,这6位成员中的大多数(即RF/2 + 1)在声明写入成功之前需要确认写入。所以4个节点需要响应这里的法定人数写,这4个成员可能是来自任何DC的节点的组合。记住计算法定人数的复制品数量,而不是总数。 DC中的节点。
在附注中,在Cassandra中,RF = 2与RF = 1一样好。为了简化,让我们设想一个3节点的单个DC情况。当RF = 2时,有两个数据副本,并且为了实现法定数((RF = 2)/ 2 + 1),2个节点需要确认写入。所以两个节点总是必须可用。即使一个节点出现故障,写入也将开始失败。事件另一个节点可以在这里提示,但你的法定读取肯定会失败。 在这种情况下,节点故障的容错等于零。
您可以使用local_quorum加速写入而不是仲裁速度。它在速度上牺牲了一致性。欢迎来到“最终一致性”。
同意。 OP应该在这里使用LOCAL_QUORUM。 – Aaron
- 1. Cassandra在多节点集群上编写一致性级别
- 2. Cassandra一致性级别和复制因子
- 3. 读写操作的不同一致性级别
- 4. 使用Kundera Cassandra设置一致性级别
- 5. 一致性级别:QUORUM或QUOROM spring-data-cassandra?
- 6. 如何设置Spring Data中的一致性级别Cassandra XML config
- 7. Cassandra如何设置默认一致性 - 集群级别
- 8. 如何处理4个节点中的QUORUM一致性,2个DC Cassandra集群
- 9. Kubernetes:多个DC中的Petset Cassandra
- 10. Cassandra在写入时失败(两个节点,RF = 1,ANY写入一致性级别)
- 11. Cassandra作为嵌入式服务和自定义一致性级别
- 12. Cassandra一致性问题
- 13. cassandra中的一致性
- 14. Cassandra阅读不一致性
- 15. 一致性级别的未知代码#
- 16. URL重写一个级别?
- 17. 如何使用node.js驱动程序设置Cassandra中的一致性级别?
- 18. Cassandra的CAS功能如何与一致性级别进行交互?
- 19. Cassandra的写入性能方面的一致性水平
- 20. Cassandra与MongoDB的交易一致性和多租户?
- 21. MongoDB和写/读一致性
- 22. 实现一致性级别后复制失败
- 23. 卡桑德拉多相DC:需要写在本地和从任何DC
- 24. adobe acrobat dc文档级别javascript
- 25. Cassandra的轻量级的事务处理Paxos一致性算法
- 26. 一致性级别法定人数和一个用于插入后读取
- 27. 在CQL查询中更改Helenus一致性级别
- 28. Cassandra在一致性写入查询期间失败LOCAL_QUORUM
- 29. 顺序一致性和最终一致性有什么区别?
- 30. 无法达到一致性级别LOCAL_ONE info = {required_replicas 1 alive_replicas:0,一致性:LOCAL_ONE}
是的,有可能数据是从同一个DC读取/写入的。如果您认为在多个DC的情况下应该使用QUORUM或不使用QUORUM。但是,在后台节点修复过程将开始,它将使用每个数据中心的最新值更新节点。 – Bigby