Cassandra - 客户端负载平衡

Mac*_*las 6 cassandra

考虑遵循Cassandra设置:

  • 6个节点的环:A,B,D,E,F,G
  • 复制因子:3
  • 分区器:RandomPartitioner
  • 放置策略:SimpleStrategy

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

现在我有多个java进程通过读取CL.ONE读取我的Test-Column槽Hector API(Thrift)

有两种可能性:

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

哪一个是1)或2)?

谢谢和问候,Maciej

The*_*ong 4

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

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

如果启用 DynamicSnitch,它会根据节点的最近性能动态调整底层告密者返回的节点紧密度。

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