1

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

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

4

1 回答 1

4

在 Cassandra 集群中,所有节点都是平等的。集群级别没有主节点或协调节点。当你连接到一个集群时,你通常会指定一个或多个节点来连接,但是一旦驱动程序连接了它就可以找到其他节点。这意味着如果它连接的第一个节点出现故障,它会知道其他节点并可以连接到其中一个节点。

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

甚至有驱动程序,例如 Astyanax,它连接到多个节点并尝试找出哪个节点包含请求的数据并使用与该节点的连接来执行查询,以最大限度地减少查询时间。

于 2012-07-31T10:15:04.000 回答