【问题标题】:Datastax consistency数据一致性
【发布时间】:2016-04-03 10:41:00
【问题描述】:

我们在五个节点上安装了 Datastax,在五个节点上启用了搜索,复制因子为 3。将 590 行添加到表中并从节点 1 中选择后,它检索到 590。当从其他节点中选择时,数字从570 到 585 行。

我尝试在 cqlsh 上使用 CONSISTENCY QUORUM,但没有任何改变。并且 CONSISTENCY QUORUM 不支持 solr_query。

有没有办法确保写入 Cassandra 的所有数据都按原样释放?

【问题讨论】:

  • 如果要保证一致性,公式为(nodes_written + nodes_read) > replication_factor。你可以阅读here
  • 感谢 LHWizard,关于我的情况,nodes_written 是五个,nodes_reads 也是五个?或者我该如何计算它们?
  • 您通常会在客户端中指定一致性级别 (CL),因此如果您在 CL = quorum 时写入,则至少 2 个节点(当您的 RF = 3 时为 quorum)必须确认写入。如果您随后在 CL = quorum 处读取,则至少 2 个节点必须确认请求才能成功。这里我们的节点写入 = 2,节点读取 = 2,RF = 3。因此 2 + 2 > 3 和一致性是有保证的。

标签: datastax consistency


【解决方案1】:

正如 LHWizard 所提到的,如果您使用 (nodes_written + nodes_read) > RF 的一致性级别,您将确保立即一致性。

在您的情况下,您可以尝试在读取时使用 CONSISTENCY ALL,以便在返回之前检查所有节点(即使写入 CL 为 ONE,这也会立即保持一致)。这实际上应该触发对不一致节点的读取修复,并且丢失的数据将流式传输到这些节点。

你说得对,solr 查询只能在 CL ONE 上读取。如果您需要更高的一致性要求,则需要提高写入的 CL 以达到您的需要。

【讨论】:

  • 谢谢 Alec,我怎样才能提高写入的 CL?写入的 CL 是否与复制因子不同?
  • 是的,一致性级别是在查询时设置的。你设置它就像你在你的问题中提到的那样,在 cqlsh 中输入 CONSISTENCY QUORUM、CONSISTENCY ALL、CONSISTENCY ONE 等。级别列表在这里docs.datastax.com/en/cassandra/2.0/cassandra/dml/…
猜你喜欢
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多