构建一个Cassandra集群?

时间:2012-09-19 20:24:40

标签: cassandra nosql cluster-computing

背景

我们正在创建一个跨越3个地理位置分离的数据中心的Cassandra集群。我们计划在每个数据中心有2个Cassandra节点(2个节点x 3个站点=总共6个节点)。所有6个节点都将成为同一集群的一部分。

我们的想法是能够将数据写入集群中的任何节点,并能够从任何其他节点读取数据。 [我们可以忍受更新延迟1秒]。

问题:

我们如何设计客户端以写入“群集”。 Cassandra没有像MongoDB那样的路由器或中间层。 我们设计是为了写入环中的任何节点吗?如果是这样,该节点是什么关闭(即我们是否需要让我们的客户端知道集群中的所有节点IP?)

谢谢。

2 个答案:

答案 0 :(得分:1)

大多数Cassandra客户端将尝试连接到1个节点,如果失败,将尝试列表中的下一个节点。有些甚至会建立连接并找出集群的布局并选择要连接的正确节点。像Hector这样的客户端会保持对特定节点的连接,以防您需要更多信息,这样可以避免昂贵的设置。

答案 1 :(得分:0)

任何Cassandra客户端都可以向集群中的任何节点发送请求,该节点将路由并合并来自其自身和其他节点的结果。

在您的方案中,您可能会考虑复制因子为3,每个数据中心一个,每个节点分区一半数据,并使用QUORUM进行读取和写入。配置副本放置策略,以便每次写入更新每个数据中心的一个节点(例如A1,A2,A3,B1,B2,B3)。这样,每个数据中心都可以使用所有数据,只要收到第一个响应数据中心的响应,读取或写入请求就会立即返回控制权。

您不需要让客户端了解所有节点,但应该至少知道两个节点以防止单点故障。我会在每个数据中心至少使用一个。