使用TokenAwarePolicy进行Cassandra驱动程序(datastax)负载平衡

时间:2016-06-10 15:50:58

标签: java driver load-balancing datastax cassandra-3.0

我的问题是对此主题的跟进:Cassandra load balancing with TokenAwarePolicy and shuffleReplicas

我遇到了一些我不了解的TokenAwarePolicy问题。

群集配置:

  • 3个节点
  • 复制因子= 3
  • 负载均衡策略: new TokenAwarePolicy(new RoundRobinPolicy(), false)
  • Consitancy level(读/写):ONE

洗牌副本故意设置为false。但问题是我在应用程序中读取数据时遇到了一致性问题。 例如:

  • 插入10个实体
  • 使用DB圆顶其他一些操作......(插入其他参与者)
  • 选择以前创建的实体:所有字段都在' SELECT'中提供。条款,而不是' SELECT *'。主键出现在' WHERE'子句。

结果:有时会获得正确的数量(10),但有些人会减少(从0到9)。

注意:

  • 我只使用BoundStatements。
  • 我没有使用datastax 异步方法。
  • 我检查过路由密钥不是 在失败的情况下为null'查询,它不是。

我不得不承认我的目标是负载繁重的数据库(30个线程一起运行上述样本的X倍),但我仍然不明白为什么驱动程序没有查询正确的节点给我陈旧的数据。

感谢您的回答。

0 个答案:

没有答案