cassandra - Datastax Cassandra 驱动程序重试策略延迟?

标签 cassandra datastax-java-driver

我正在使用 Datastax Cassandra 驱动程序,并设置了 RetryPolicy 以在主机不可用时重试。但是,我注意到它会尽可能快地重试。我想将其更改为在重试之间增加延迟,而不是在集群陷入困境时对其进行打击。这对于OVERLOADED请求错误尤其重要,因为我确实想在这些情况下重试,但会造成很大的延迟。

哪里是延迟的正确位置以及正确的机制是什么?我应该在 RetryPolicy 中抛出一个 Thread.sleep(...) 吗?

我不介意占用一个在线请求槽(朝向最大数量的正在进行的请求),但如果我们尚未达到正在进行的请求限制,我不同意完全阻止其他写入。

最佳答案

您可以通过添加延迟来实现自己的重试策略。最简单的方法是选择默认重试的源代码并自行修改以实现重试的指数延迟或类似的东西。

指数延迟,看http://docs.datastax.com/en/drivers/java/3.0/com/datastax/driver/core/policies/ExponentialReconnectionPolicy.html的源码即可看看它是如何工作的

关于cassandra - Datastax Cassandra 驱动程序重试策略延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41700138/

相关文章:

cassandra - 如何减少Cassandra集群的修复时间?

cassandra - 将 UnixTimestamp 转换为 Cassandra 的 TIMEUUID

python - Cassandra /皮卡萨 : get_slice()/get_indexed_slice() fails with TApplicationException: Unknown Result

hadoop - 在一致性 ONE 下读取查询期间 Cassandra 超时(需要 1 个响应,但只有 0 个副本响应)

java - 使用 TokenAwarePolicy 和 shuffleReplicas 的 Cassandra 负载平衡

java - Cassandra java 驱动程序设置全局一致性级别

cassandra - 如何确定 Cassandra Datastax 中的更新查询是否成功

java - MaxConnectionsPerHost 与 MaxRequestsPerConnection Cassandra 驱动程序

java.lang.NumberFormatException 试图在 Cassandra 表中获取一行时

php - php (phpcassa) 中的最低可能 timeuuid