1

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

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

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

因此,cassandra 配置为:
单个 DataCenter:DC1 两个机架:Rack1、Rack2 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. 对我的要求还有其他建议吗?
4

2 回答 2

1

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

于 2014-04-08T10:01:04.020 回答
0

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

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

您可以在这里观看视频以了解更多信息(它需要一个 datastax 帐户):https ://academy.datastax.com/courses/ds201-cassandra-core-concepts/introduction-big-data

于 2016-03-16T04:50:41.307 回答