2010-02-24 23 views
10

当然可以运行单个节点集群,但我想要一定程度的容错。对于Cassandra集群,我绝对需要至少3个节点/服务器还是2个足够?

目前我能负担得起租用两台服务器(8GB RAM,私有VLAN @ 1GigE),而不是3

我的理解是,3个节点是需要的卡桑德拉集群的最低,因为有之间不存在可能多数2个节点,并且需要大部分用于解决版本冲突。哦,等等,我是在想“矢量钟”还是Riak?确认! Cassandra使用时间戳来解决冲突。

对于2个节点,建议的读/写策略是什么?我应该通常写入所有(两个)节点并从一个(N = 2; W = N/2 + 1; W = 2/2 + 1 = 2)读取? Cassandra会像往常一样使用hinted-handoff,即使是2个节点,是吗?

这两台服务器位于相同的数据中心FWIW中。

谢谢!

回答

18

如果你需要一个RF = 2,clustersize = 2的系统可用性,那么你就不能使用所有或当一个节点出现故障,你将无法写。

这就是为什么人推荐3个节点,而不是2,因为这样你可以做法定读取写入+,而且还有既坚固一致性和可用性,如果一个节点出现故障。

只有2个节点,您可以选择是否希望在单个节点故障(使用ONE写入)时强烈的一致性(使用ALL写入)或可用性,但不能同时使用两者。当然,如果你用ONE写cassandra会根据需要做暗示的切换等,以使它最终一致。

+0

这是否仍然正确?在您的回答中,似乎“一致性级别1”的含义更像是当前cassandra版本上的一致性级别ANY。我假设在某个时刻任何人都得到了分手? – 2014-02-28 22:48:19

+0

当您的节点数等于您拥有的副本数时,ONE和ANY是等同的。 – jbellis 2014-03-19 20:20:19

相关问题