我最近开始在 Production environment
中使用 Cassandra
. 我们有 24 node cluster
与 replication factor of 4
. 含义 2 copies
将在 each datacenter
中出现 . 这意味着我们有一个带有 24 nodes
的交叉colo集群,这意味着 12 nodes in SLC colo
和 12 nodes in PHX colo
.
我正在使用 Astyanax client
当前在 Cassandra database
中写入数据 . 我知道Astyanax客户端具有此功能,可以在其连接池中自动发现PHX colo中的所有节点或cassandra的SLC colo,但不是所有节点 .
在Astyanax,我们可以使用下面的东西 -
setLocalDatacenter("DC1")
现在我们计划使用Datastax Java驱动程序 . 我不确定Datastax java驱动程序是否具有此功能,以便仅针对特定数据中心而不是所有数据中心自动发现其连接池中的所有cassandra节点?
1 回答
驱动程序将发现群集中的所有节点,您希望在客户端代码中更改负载 balancer 策略 . 具体而言,您希望使用直流感知负载 balancer 策略 .
http://www.datastax.com/drivers/java/apidocs/com/datastax/driver/core/policies/DCAwareRoundRobinPolicy.html