两个数据中心的一致性策略

时间:2013-02-08 13:26:42

标签: cassandra

当所有节点都启动时,读取的容错和快速的最佳写/读策略是什么?

我在每个数据中心都有2个副本,起初我正在考虑使用QUORUM进行写入,使用LOCAL_QUORUM进行读取,但如果一个节点崩溃,则读取将失败。

我想出的另一个策略是使用QUORUM进行写入,使用TWO进行读取。它应该在正常条件下快速工作(因为我们将首先从最近的节点获得结果),并且当任何节点崩溃时它将工作得更慢。

  1. 这是建议使用一致性级别TWO还是出于其他目的的情况?
  2. 你什么时候使用CL THREE?
  3. 您是否有更好的策略来进行一致性和容错写入/读取?

1 个答案:

答案 0 :(得分:2)

如果您想要一致性或可用性,首先必须选择。如果你选择了一致性,那么你需要有R + W> N,其中R是您读取的节点数,W是您写入的节点数,N是副本数。

然后,如果您希望读/写总是跨越多个数据中心,则必须选择。

一旦做出这些选择,您就可以选择一致性级别(或者它将由您决定)。

例如,如果您确定需要一致性,并且不希望写入/读取跨越多个数据中心,那么您可以在LOCAL_QUORUM(在您的情况下为2)读取并在ONE处写入,或者反之亦然。

每个直流2个副本是一个奇怪的选择。通常,您希望执行LOCAL_QUORUM,每个数据中心有3个副本。这使您只能使用数据中心内的节点进行读写,但允许1个节点关闭。