当然可以运行单个节点集群,但我想要一定程度的容错能力.
目前我可以租用两台服务器(8GB RAM,私有VLAN @ 1GigE)而不是3台服务器.
我的理解是,3个节点是Cassandra集群所需的最小节点,因为2个节点之间不可能存在大多数节点,并且解决版本控制冲突需要大多数节点.哦等等,我想到"矢量时钟"和Riak?确认!Cassandra使用时间戳来解决冲突.
对于2个节点,建议的读/写策略是什么?我通常应该写入所有(两个)节点并从ONE读取(N = 2; W = N/2 + 1; W = 2/2 + 1 = 2)?像往常一样,Cassandra会使用暗示切换,即使是2个节点,是吗?
这两台服务器位于同一数据中心FWIW中.
谢谢!
如果您需要RF = 2,clustersize = 2系统的可用性,那么您不能使用ALL,否则您将无法在节点出现故障时进行写入.
这就是人们推荐使用3个节点而不是2个节点的原因,因为这样您就可以进行仲裁读取和写入,并且如果单个节点出现故障,仍然具有强大的一致性和可用性.
只有2个节点,您可以选择是否要在单个节点发生故障时使用强一致性(写入ALL)或可用性(使用ONE写入),而不是两者都要.当然,如果你用ONE cassandra写作,将根据需要进行暗示切换等,以使其最终保持一致.