【问题标题】:Implementing multi-datacenter Cassandra with Phantom driver使用 Phantom 驱动程序实现多数据中心 Cassandra
【发布时间】:2021-07-25 05:36:57
【问题描述】:

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

  1. 事务性 - “主”数据中心,所有读取/写入都发生在该数据中心(某些分析作业完成的读取/写入除外)。
  2. 分析 - 仅用于分析目的的数据中心。分析作业应在此数据中心上运行(即读取/写入)。

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

基于this article(“工作负载分离”部分),我应该能够从“事务”数据中心读取/写入,并在“分析”数据中心运行分析作业,但是,我不是确定如何让它与幻像驱动程序一起工作。

如何将驱动程序配置为从正确的数据中心读取/写入?

ContactPoints 类中的hosts 设置为来自事务性数据中心的节点是否可以解决问题?

【问题讨论】:

    标签: scala cassandra phantom-dsl


    【解决方案1】:

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

    【讨论】:

    • 谢谢亚历克斯。所以澄清一下,这是否意味着如果我使用来自同一 DC 的服务器列表创建 ContactPoints() 对象,并使用网络拓扑策略,所有查询 LOCAL_* 一致性级别将始终转到本地 DC(假设有足够的节点起来了)?
    猜你喜欢
    • 1970-01-01
    • 2015-08-06
    • 2016-06-14
    • 2017-08-12
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    相关资源
    最近更新 更多