Cassandra 提供可调的一致性。因此,如果用户要求更高级别的一致性,则在返回成功响应之前,将需要相应更多的节点进行响应。有据可查的是,更高的一致性也意味着更低的可用性。
那么随着一致性的提高,可用性降低的原因是什么?当写入正在进行时,节点是否会被阻塞,从而无法进行其他操作?
最佳答案
考虑一下您有一个三节点集群的情况。作为客户端,您决定以一致性级别仲裁
进行读/写。这需要两个节点的确认。这意味着即使集群中的一个节点已关闭,您也可以读取/写入集群。
现在您决定以一致性方式读取/写入ALL
。这需要所有 3 个节点都确认。这意味着您需要所有 3 个节点都启动才能成功读取或写入。
因此,将一致性级别从quorum
提高到ALL
会导致集群的可用性降低。如果将一致性降低到ONE
,则可以承受两个节点的故障。因此,降低一致性级别会提高集群的可用性。
关于Cassandra:低可用性以获得更高的一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68439628/