【问题标题】:cassandra: strategy for single datacenter deploymentcassandra:单一数据中心部署策略
【发布时间】:2014-05-20 03:17:52
【问题描述】:

我们计划使用 apache shiro 和 cassandra 进行分布式会话管理,非常类似于提到的 @https://github.com/lhazlewood/shiro-cassandra-sample

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

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

据此配置cassandra:
单数据中心:DC1 两个机架:机架1、机架2 4个节点:Rack1_Node1、Rack1_Node2、Rack2_Node1、Rack2_Node2

使用的数据复制策略是NetworkTopologyStrategy

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

我的问题:

  1. 我应该在一个集群中保留多少个副本? 考虑 2 个副本,每个机架 1 个。
  2. 读写操作的一致性级别(CL)应该是什么? 考虑到集群中的 2 个副本,考虑读写的 QUORUM。
  3. 如果 1 个机架出现故障,Cassandra 是否可以通过上述配置成功读写? 我知道它可以使用hinted-hands-off 来临时关闭节点,但它对读/写操作都有效吗?
  4. 对我的要求还有其他建议吗?

【问题讨论】:

    标签: amazon-ec2 cassandra cassandra-2.0


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    您可能听说过数据库理论中的 CAP 定理。如果没有,您可以在 wikipedia 中了解有关该定理的详细信息:https://en.wikipedia.org/wiki/CAP_theorem,或者直接 google 一下。它说对于一个多节点的分布式数据库,一个数据库只能实现以下三个目标中的两个:一致性、可用性和分区容错性。

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

    您可以观看此处的视频以了解更多信息(需要 datastax 帐户):https://academy.datastax.com/courses/ds201-cassandra-core-concepts/introduction-big-data

    【讨论】:

    • 感谢您的回答。是的,已经了解了 CAP 以及过去 2 年中 cassandra 的运作方式;-)
    猜你喜欢
    • 2018-01-07
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2012-06-25
    • 2021-06-19
    相关资源
    最近更新 更多