cassandra:单数据中心部署的策略

时间:2014-04-07 18:07:49

标签: amazon-ec2 cassandra cassandra-2.0

我们计划使用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用作会话数据存储区,我们需要高一致性和可用性

我的问题:

  1. 我应该在群集中保留多少个副本? 考虑2个副本,每个机架1个。
  2. 读写操作的一致性级别(CL)是什么? 考虑到读取和写入的QUORUM,考虑群集中的2个副本。
  3. 在1个机架关闭的情况下,Cassandra会写吗&读取成功与上述配置? 我知道它可以使用hinted-hands-off作为临时down节点,但它是否适用于读/写操作?
  4. 对我的要求有任何其他建议吗?

2 个答案:

答案 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