使用 Phantom 驱动程序实现多数据中心 Cassandra

Implementing multi-datacenter Cassandra with Phantom driver

我正在使用 Cassandra 3.x 和 Phantom 驱动程序 (scala), 并将我的 Cassandra 部署从一个简单的三节点集群修改为由两个数据中心组成的多数据中心 Cassandra 部署:

  1. 事务性 - “主要”数据中心,所有 reads/writes 发生(除了 reads/writes 由某些分析工作完成)。
  2. 分析 - 仅用于分析目的的数据中心。分析作业应在此数据中心上运行(即 read/write 至)。

两个数据中心都配置了适当的 snitch 和复制因子策略。

基于 this article(“工作负载分离”部分),我应该能够 read/write 从“交易”数据中心,运行 分析作业然而,“分析”数据中心,我不确定如何让它与幻影驱动程序一起工作。

如何从适当的数据中心将驱动程序配置为 read/write?

ContactPoints class 中的 hosts 设置为来自交易数据中心的节点仅能解决问题吗?

默认情况下,Java 驱动程序 3.x 使用所谓的 DCAware load balancing policy 结合 TokenAware 策略。可以使用构建器的 withLocalDc 函数显式配置数据中心,但可以省略它,驱动程序将使用初始化时到达的第一个接触点的数据中心。所以你可以只将 Phantom 指向事务 DC 中的服务器,它只会与它一起工作(直到你使用非本地一致性级别,例如 QUORUM/SERIAL、EACH_QUORUM 等)