【问题标题】:Cassandra - client side load balancingCassandra - 客户端负载均衡
【发布时间】:2011-12-30 10:46:30
【问题描述】:

考虑以下 Cassandra 设置:

  • 6 个节点的环:A、B、D、E、F、G
  • 复制因子:3
  • 分区器:随机分区器
  • 展示位置策略:SimpleStrategy

我的测试列存储在节点 B 上并复制到节点 D 和 E。

现在我有多个 java 进程通过读取 CL.ONE 通过 Hector API (Thrift) 读取我的测试列

有两种可能:

  1. Hector 会将所有调用转发到节点 B,因为 B 是数据 大师
  2. Hector 将通过节点 B、D 和 E(主节点和复制节点)对读取调用进行负载平衡。在这种情况下,我的测试列将被加载到每个 Cassandra 实例的缓存中。

1) 或 2) 是哪一个?

感谢和问候, 马切耶

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    我相信它是:3) Cassandra 将所有调用转发到最近的活动节点,其中“接近度”由当前使用的 Snitch 确定(在 cassandra.yaml 中设置)。

    • SimpleSnitch 选择令牌环上最近的节点。
    • AbstractNetworkTopologySnitch 和派生的告密者首先尝试选择同一机架中的节点,然后尝试选择同一数据中心中的节点。

    如果启用了DynamicSnitch,它会根据节点最近的表现动态调整底层snitch返回的节点接近度。

    有关详细信息,请参阅“读取路径”下的Cassandra ArchitectureInternals

    【讨论】:

      【解决方案2】:

      (赞成西奥多的答案,因为它是正确的)。 一些额外的细节:

      我们在 hector 端没有做任何事情来根据密钥将流量路由到给定节点(目前)。这在 Amazon Dynamo 论文的第 6.2 节中被称为“客户中介选择”。研究似乎表明,通过切断网络跃点,它实际上只对非常大的集群有用。

      缺点是在客户端重复哈希计算和分区器查找。

      【讨论】:

        猜你喜欢
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2021-10-22
        • 2011-10-17
        • 2020-01-03
        • 2020-11-17
        相关资源
        最近更新 更多