在前一台主机被Datastax Java驱动程序关闭后,Cassandra尝试重新连接到下一台主机
Datastax Cassandra Java驱动程序是否为Cassandra连接到下一个可用主机提供回退机制
例如,,如果集群有4个主机节点,并且客户端应用程序连接到主机1。现在,当主机1关闭时,是否可以提供一种机制,让应用程序尝试连接到主机2,然后再连接到主机3&;等等
此外,
1)Datastax驱动程序提供了写入自定义重试策略的功能RetryPolicy(MyCustomRetryPolicy.RETRY_POLIOCY_INSTANCE);
,但这会在出现错误时调用(ReadTimeout、writeTimeout、RequestError等),但在某个节点离开时,这不会得到调用
2)另一种方法是添加投机性执行政策withSpeculativeExecutionPolicy(new ConstantSpeculativeExecutionPolicy(10000,2))
,但我不确定这是否解决了问题
cassandra的Java驱动程序是否提供了其他合适的机制,或者只有ProjectiveExecutionPolicy是唯一的选项
# 1 楼答案
Cassandra Java驱动程序仅使用第一个节点来发现集群中的其他节点。然后,它使用配置的策略连接到节点——默认情况下,它是令牌感知/数据中心感知策略。第一部分意味着驱动程序“知道”哪个节点负责使用给定的分区密钥处理数据,第二部分知道节点的位置。当然,您可以自定义策略,但默认设置应该可以。更多信息见the official docs
如果你的情况没有回退,那么请分享更多细节