我们计划使用apache shiro&用于分布式会话管理的cassandra与提到的@ https://github.com/lhazlewood/shiro-cassandra-sample
非常相似需要有关在Amazon EC2中部署cassandra的建议:
在EC2中,我们有以下设置: 单个区域,2个可用区(AZ),4个节点
因此,cassandra配置:
单数据中心:DC1
两个机架:Rack1,Rack2
4个节点:Rack1_Node1,Rack1_Node2,Rack2_Node1,Rack2_Node2
使用的数据复制策略是 NetworkTopologyStrategy
由于Cassandra用作会话数据存储区,我们需要高一致性和可用性。
我的问题:
答案 0 :(得分:1)
一般来说,偶数个节点不是最好的主意,就像偶数个可用区域一样。在这种情况下,如果其中一个机架出现故障,整个群集将会消失。我建议去3个机架,每个机架有1个或2个节点,3个副本和QUORUM用于读写。然后,如果两个节点/ AZ失败,群集将只会失败。
答案 1 :(得分:0)
您可能已经听说过数据库理论中的CAP定理。如果没有,您可以在维基百科中了解有关该定理的详细信息:https://en.wikipedia.org/wiki/CAP_theorem,或者只是谷歌搜索。它表示对于具有多个节点的分布式数据库,数据库只能实现以下三个目标中的两个:一致性,可用性和分区容错。
Cassandra旨在实现高可用性和分区容错(AP),但牺牲了一致性来实现这一目标。但是,您可以将一致性级别设置为Cassandra中的 all ,以将其转移到CA,这似乎是您的目标。您的法定人数2的设置与“全部”基本相同,因为您有2个副本。但在此设置中,如果包含数据的单个节点关闭,客户端将收到读/写错误消息(不是分区容错)。
您可以在此处查看视频以了解更多信息(需要数据存储帐户):https://academy.datastax.com/courses/ds201-cassandra-core-concepts/introduction-big-data