Amazon ec2 cassandra:单数据中心部署策略

Amazon ec2 cassandra:单数据中心部署策略,amazon-ec2,cassandra,cassandra-2.0,Amazon Ec2,Cassandra,Cassandra 2.0,我们计划使用ApacheShiro和cassandra进行分布式会话管理,非常类似于前面提到的@ 需要在Amazon EC2中部署cassandra的建议: 在EC2中,我们有以下设置: 单个区域,2个可用性区域(AZ),4个节点 相应地,卡桑德拉被配置为: 单一数据中心:DC1 两个机架:机架1、机架2 4个节点:机架1_节点1、机架1_节点2、机架2_节点1、机架2_节点2 使用的数据复制策略是网络拓扑策略 由于Cassandra用作会话数据存储,我们需要高一致性和可用性 我的问题: 一个集

我们计划使用ApacheShiro和cassandra进行分布式会话管理,非常类似于前面提到的@

需要在Amazon EC2中部署cassandra的建议:

在EC2中,我们有以下设置: 单个区域,2个可用性区域(AZ),4个节点

相应地,卡桑德拉被配置为:
单一数据中心:DC1 两个机架:机架1、机架2 4个节点:机架1_节点1、机架1_节点2、机架2_节点1、机架2_节点2

使用的数据复制策略是网络拓扑策略

由于Cassandra用作会话数据存储,我们需要高一致性和可用性

我的问题:

  • 一个集群中应该保留多少副本? 考虑2个副本,每个机架1个
  • 读写操作的一致性级别(CL)是什么? 考虑读写的仲裁,考虑集群中的两个副本
  • 在1机架停机的情况下,Cassandra是否会通过上述配置成功写入和读取? 我知道它可以对临时关闭节点使用暗示的放手,但它对读/写操作都有效吗
  • 对我的要求还有什么建议吗

  • 一般来说,使用偶数个节点并不是最好的主意,使用偶数个可用性区域也不是最好的主意。在这种情况下,如果其中一个机架出现故障,整个集群将消失。我建议使用3个机架,每个机架1或2个节点,3个副本和读写仲裁。那么集群只有在两个节点/AZ失败时才会失败。

    您可能听说过数据库理论中的CAP定理。如果没有,你可以在维基百科上了解这个定理的详细信息,或者用谷歌搜索一下。它说,对于具有多个节点的分布式数据库,一个数据库只能实现以下三个目标中的两个:一致性、可用性和分区容差

    Cassandra旨在实现高可用性和分区容忍度(AP),但为此牺牲了一致性。不过,您可以在Cassandra中将一致性级别设置为all,以将其转换为CA,这似乎是您的目标。仲裁2的设置基本上与“all”相同,因为您有2个副本。但在此设置中,如果包含数据的单个节点关闭,客户端将收到一条读/写错误消息(不允许分区)


    您可以在这里看一段视频了解更多信息(它需要一个datastax帐户):

    两个机架中有两个节点/AZ,如果一个机架发生故障,Cassandra使用CL=QOURUM和使用NetworkTopologyStrategy进行写和读会成功吗?恐怕不行,因为您的集群将有一半停机。查看NTS的详细信息。这似乎很有趣,您可以提示驱动程序尝试降低一致性级别!!看起来很棒的功能,拉文·卡桑德拉!!谢谢你的回答。是的,我已经了解了CAP以及卡桑德拉在过去两年中的运作;-)