2

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

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

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

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

1 回答 1

2

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

然后,您必须选择是否希望读取/写入始终跨越多个数据中心。

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

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

每个 dc 2 份是一个奇怪的选择。通常你想做 LOCAL_QUORUM,每个数据中心有 3 个副本。这使您可以仅使用数据中心内的节点进行读写,但允许 1 个节点关闭。

于 2013-02-09T06:30:00.787 回答