【问题标题】:Cassandra: Low availability for higher consistencyCassandra:低可用性以获得更高的一致性
【发布时间】:2021-07-19 22:50:41
【问题描述】:

Cassandra 提供可调的一致性。因此,如果用户要求更高级别的一致性,那么在返回成功响应之前,相应地需要更多节点响应。有据可查的是,更高的一致性也意味着更低的可用性。

那么随着一致性的提高,可用性降低的原因是什么?一个节点在写入过程中是否会被阻塞,从而无法用于其他操作?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    假设您有一个三节点集群。作为客户端,您决定以一致性级别quorum 进行读/写。这需要两个节点的确认。这意味着即使集群中的一个节点出现故障,您也可以读取/写入集群。

    现在你决定读/写一致性ALL。这需要所有 3 个节点进行确认。这意味着您需要所有 3 个节点都启动才能成功读取或写入。

    因此,将一致性级别从 quorum 提高到 ALL 会导致集群可用性降低。如果将一致性降低到ONE,您可以承受两个节点的停机。因此,降低一致性级别会提高集群的可用性。

    【讨论】:

      【解决方案2】:

      对于它背后的理论,寻找 CAP 定理。简而言之:在网络分区的情况下,您需要在可用性(每个请求都得到一个非错误响应)和一致性之间进行权衡;你不能两者兼得。

      如果您想要提高一致性级别,则需要增加复制因子,以便需要更多的 ACK 才能使读/写被视为成功。

      如果太多机器发生故障,则不可能有足够数量的 ACK,操作完成并返回错误响应,因此系统变得不可用。

      【讨论】:

        猜你喜欢
        • 2020-12-13
        • 1970-01-01
        • 2013-09-12
        • 2018-06-11
        • 2017-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多