Cassandra如何确保高可用性?

时间:2012-07-31 08:22:39

标签: jdbc cassandra fallback

我想了解Cassandra如何确保高可用性。我所知道的是,当我们向Cassandra数据库查询数据时,一个名为coordinator的节点将查询路由到具有所需数据的集群中的相应Cassandra节点。 但是,如果我们在JDBC连接URL中指定的节点(我认为它将在集群中充当协调器,请在错误的情况下让我更正)本身会怎么样? 在这种情况下,Cassandra如何确保高可用性?

也许我们作为开发人员必须为此提供回退机制?

1 个答案:

答案 0 :(得分:3)

在Cassandra集群中,所有节点都相同。群集级别没有主服务器或协调器。当您连接到群集时,通常会指定一个或多个要连接的节点,但是一旦驱动程序连接,它就可以找到其他节点。这意味着如果它连接的第一个节点发生故障,它就知道其他节点,并且可以连接到其中一个节点。

如果查询被发送到本身不托管所请求数据的节点(或者指定了高于1的一致性级别),则该节点充当查询的协调者,但这是一个临时角色,任何任何查询都可以使用该角色。

甚至有一些驱动程序,例如Astyanax,它们连接到多个节点并尝试确定哪个节点包含所请求的数据,并使用与该节点的连接来进行查询,以便最大限度地缩短查询时间。