在以前的主机被Datastax Java Driver关闭后,Cassandra重新连接尝试下一个主机

时间:2018-02-06 12:59:32

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

Datastax Cassandra Java Driver是否为cassandra连接到下一个可用主机提供了回退机制?
例如,如果群集有4个主机节点并且客户端应用程序连接到Host-1。现在,当Host-1关闭时,是否可以提供应用程序尝试连接到主机的机制 - 2然后Host-3 ...&等!!!

另外,
1) Datastax驱动程序提供编写自定义重试策略 RetryPolicy(MyCustomRetryPolicy.RETRY_POLIOCY_INSTANCE);的工具,但是如果出现错误(ReadTimeout,writeTimeout,RequestError等),则调用,当一个节点离开时,这不会被调用。
2)另一种方法是添加 SpeculativeExecutionPolicy withSpeculativeExecutionPolicy(new ConstantSpeculativeExecutionPolicy(10000,2)),但我不确定这是否解决了这个问题?
是否有任何其他适当的机制由cassandra的Java驱动程序提供或 SpeculativeExecutionPolicy 是唯一的选择?

1 个答案:

答案 0 :(得分:0)

Cassandra Java Driver仅使用第一个节点来发现群集中的其他节点。然后,它使用配置的策略连接到节点 - 默认情况下,它是令牌感知/数据中心感知策略。第一部分意味着驱动程序“知道”哪个节点负责处理具有给定分区键的数据,第二部分意识到节点所在的位置。您当然可以自定义策略,但默认设置应该没问题。更多信息请参见the official docs

如果在您的情况下没有发生后退,请分享更多详细信息。