15

当然可以运行一个单节点集群,但我想要某种程度的容错。

目前我可以租两台服务器(8GB RAM,私有 VLAN @1GigE),但不能租 3 台。

我的理解是,Cassandra 集群至少需要 3 个节点,因为 2 个节点之间不可能存在多数,解决版本冲突需要多数。哦,等等,我在想“矢量时钟”和 Riak 吗?确认!Cassandra 使用时间戳来解决冲突。

对于 2 个节点,推荐的读/写策略是什么?我通常应该写入所有(两个)节点并从一个(N=2;W=N/2+1;W=2/2+1=2)读取吗?即使是 2 个节点,Cassandra 也会像往常一样使用提示切换,是吗?

这 2 台服务器位于同一个数据中心 FWIW 中。

谢谢!

4

1 回答 1

24

如果您需要 RF=2、clustersize=2 系统上的可用性,那么您不能使用 ALL,否则当节点出现故障时您将无法写入。

这就是为什么人们推荐 3 个节点而不是 2 个节点的原因,因为这样您就可以进行仲裁读取+写入,并且在单个节点出现故障时仍然具有强一致性和可用性。

只需 2 个节点,您就可以选择是想要强一致性(使用 ALL 写入)还是在面对单个节点故障时的可用性(使用 ONE 写入),但不能两者兼而有之。当然,如果您使用 ONE cassandra 编写,则会根据需要进行提示切换等,以使其最终保持一致。

于 2010-02-25T15:18:19.113 回答