如何将客户端应用程序正确连接到 Scylla 或 Cassandra?

sno*_*ndy 3 cassandra scylla

假设我的本地网络中有一个包含 3 个节点的 ScyllaDB 集群(可以是 AWS VPC)。我的 Java 应用程序在同一个本地网络中运行。

我关心如何正确地将应用程序连接到数据库。

  • 我需要为应用程序指定所有 3 个数据库节点的 IP 地址吗?
  • 如果随着时间的推移,一个或多个节点死亡并在其他 IP 上复活怎么办?我必须手动重新配置应用程序吗?
  • 在拥有数十台数据库服务器(可能位于不同数据中心)的大型实际生产案例中,如何正确完成?

我将非常感谢有关如何将 Java 应用程序连接到多节点集群的代码示例。

Ale*_*Ott 5

您需要指定接触点(可以使用 DNS 名称而不是 IP)- 多个节点(通常是 2-3 个),驱动程序将连接到其中之一,并在连接后发现集群的所有节点(请参阅驱动程序的文档)。连接建立后,驱动程序保持单独的控制连接打开,并通过它接收有关节点的上线和下线、加入或离开集群等的信息,因此它能够保持有关集群拓扑的最新信息日期。

如果您指定 DNS 名称而不是 IP 地址,那么最好将配置参数指定datastax-java-driver.advanced.resolve-contact-pointstrue(请参阅文档),这样名称将在每次重新连接时解析为 IP,而不是在应用程序启动时解析。