如何解决使用 Phantom 驱动程序实现多数据中心 Cassandra
我正在使用 Cassandra 3.x 和 Phantom 驱动程序 (scala), 并将我的 Cassandra 部署从简单的三节点集群修改为包含两个数据中心的多数据中心 Cassandra 部署:
- 事务性 - “主要”数据中心,所有读/写都发生在其中(某些分析作业完成的读/写除外)。
- 分析 - 仅用于分析目的的数据中心。分析作业应在此数据中心上运行(即读/写)。
两个数据中心都配置了适当的告密者和复制因子策略。
根据 this article(“工作负载分离”部分),我应该能够从“事务”数据中心读取/写入,并在“分析”数据中心上运行分析作业,但是,我我不知道如何让它与幻影驱动程序一起工作。
如何将驱动程序配置为从正确的数据中心读取/写入?
将 hosts
类中的 ContactPoints
设置为来自事务数据中心的节点是否只会起到作用?
解决方法
默认情况下,Java 驱动程序 3.x 使用所谓的 DCAware load balancing policy 结合 TokenAware 策略。可以使用builder的withLocalDc
函数显式配置数据中心,但可以省略它,驱动程序将使用初始化时到达的第一个接触点的数据中心。因此,您可以仅将 Phantom 指向事务 DC 中的服务器,并且它只能使用它(直到您使用非本地一致性级别,例如 QUORUM/SERIAL、EACH_QUORUM 等)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。