当然可以运行一个单节点集群,但我想要某种程度的容错。
目前我可以租两台服务器(8GB RAM,私有(private) VLAN @1GigE),但不能租 3 台。
我的理解是,Cassandra 集群至少需要 3 个节点,因为 2 个节点之间不可能存在多数,解决版本冲突需要多数。哦,等等,我在想“矢量时钟”和 Riak 吗?确认! Cassandra 使用时间戳来解决冲突。
对于 2 个节点,推荐的读/写策略是什么?我通常应该写入所有(两个)节点并从一个(N=2;W=N/2+1;W=2/2+1=2)读取吗?即使是 2 个节点,Cassandra 也会像往常一样使用提示切换,是吗?
这 2 台服务器位于同一个数据中心 FWIW 中。
谢谢!
最佳答案
如果您需要 RF=2、clustersize=2 系统上的可用性,那么您不能使用 ALL,否则当节点出现故障时您将无法写入。
这就是为什么人们推荐 3 个节点而不是 2 个节点的原因,因为这样您就可以进行仲裁读取+写入,并且在单个节点出现故障时仍然具有强一致性和可用性。
只需 2 个节点,您就可以选择是想要强一致性(使用 ALL 写入)还是在面对单个节点故障时的可用性(使用 ONE 写入),但不能两者兼而有之。当然,如果您使用 ONE cassandra 编写,则会根据需要进行提示切换等,以使其最终保持一致。
关于nosql - 对于 Cassandra 集群,我绝对需要至少 3 个节点/服务器还是 2 个就足够了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330562/