【问题标题】:What's the point of using Hinted Handoff in Cassandra, especially for consistency>ANY?在 Cassandra 中使用 Hinted Handoff 有什么意义,尤其是为了一致性>ANY?
【发布时间】:2017-09-12 17:28:50
【问题描述】:

在 Cassandra 中,提示切换 (HH) 仅在可以满足一致性级别时发生。此外,提示对客户来说是不可读的。在一致性级别 > ANY 的情况下,使用 HH 既不能提高写入可用性,也不能提高读取可用性。由于在线副本不足以满足一致性要求,请求仍然失败。
使用提示切换有什么意义?以交易能力换业绩? 为什么不直接将 failed-and-back 节点与其他副本节点同步(即重新复制)?

【问题讨论】:

    标签: database cassandra replication consistency


    【解决方案1】:

    提示切换只是额外的反熵度量。也就是说,当节点重新联机时,您不必立即进行修复,并且数据会保持一致(如果有轻微的中断)。

    我想一直使用复制来处理这个问题太复杂了,因为您必须以某种方式标记尚未复制的数据等。基本上您将再次获得类似于提示切换的东西。

    官方文档中的一些内容: https://docs.datastax.com/en/cassandra/2.1/cassandra/dml/dml_about_hh_c.html#concept_ds_ifg_jqx_zj__extreme-write-availability

    基本上是在发生轻微中断时最大化集群的写入吞吐量。它是可配置的,如果您描述的读写都涉及高一致性级别,您可以禁用它。

    另外,您必须运行“重新复制”,即无论如何都要修复。因为提示切换并不能真正解决所有问题。

    我个人在 R-CL: ONE, W-CL: ONE, RF: 2, NODES: 3 的情况下使用它们。它们非常有帮助,因为我们在维护和滚动重启集群时保持了写入吞吐量。所以我会说它在 W-CL 的情况下效果很好

    又是这样的观点:

    https://blog.threatstack.com/scaling-cassandra-lessons-learned

    其实只要在配置中禁用它们即可。在长时间的中断或负载峰值期间丢失数据太容易了,如果一个节点由于负载峰值而关闭,您只会将问题传递给环,最终导致多个或所有节点关闭。我们在 Cassandra 上从未遇到过这种情况,但在其他支持提示切换的系统上却遇到过。

    【讨论】:

    • 非常感谢您的回答!我还有几个问题。 HH 如何最大化写入吞吐量?为什么 Cassandra 要求人们手动进行修复,而不是安排定期的自动修复(如读取修复)?
    • 基本上修复是一项昂贵的操作,因为所有数据都必须与 merkle 树进行比较,因此留给管理员安排。甚至还有像github.com/spotify/cassandra-reaper 这样的自动执行工具。这个过程或多或少应该在 gc_grace 期间运行一次以保持数据一致。最大化是间接完成的。当一个节点出现故障时,它不接受写入。如果协调节点在节点恢复后保存它们(廉价操作),那么整个集群中的写入记录数量与该节点一直在那里一样。
    猜你喜欢
    • 2017-05-11
    • 2018-05-23
    • 2011-02-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多