Datastax RetryPolicies 解释以及何时使用什么策略?
Datastax RetryPolicies explanation and when to use what policy?
我最近开始使用 Cassandra 并阅读了更多有关 retry policies and consistency level 的内容,我想我了解它的基础知识。
我只是对哪种重试策略更适合我的以下场景感到困惑。
我们有一个 6 节点集群,所有节点都在一个 dc 中,RF 为 3,我们 read/write 作为本地仲裁。我的困惑是在我的用例中使用 DowngradingConsistencyRetryPolicy
是否有意义,或者我应该在这里坚持使用 DefaultRetryPolicy
?
谁能用一些例子解释这两者之间的区别,以便我了解何时使用什么?还有这里推荐使用什么重试策略。
我建议先阅读 Developing applications with DataStax drivers 指南。
重试策略允许您重复操作。这个决定应该基于查询本身的类型,并基于业务逻辑。例如,某些应用程序总是需要仲裁或本地仲裁,因为它们无法承受数据不一致。一些应用程序可能不那么挑剔,并且更喜欢数据一致性或丢失数据的磁盘的更高可用性 - 在这种情况下,降级策略可能允许使用本地而不是本地仲裁写入数据。但在这种情况下,您有丢失数据的风险(例如,接受写入的节点完全丢失了所有数据)。
在大多数情况下,建议坚持默认策略,但将您的查询标记为幂等(当然,如果它们是......您也可以在连接级别设置此标志)。幂等查询——与只执行一次相比,所有重新执行的查询都不会改变。这涵盖了所有 "normal" 插入、删除和大部分更新(列表的 append/prepend 除外)。 LWT 不是幂等的!
我最近开始使用 Cassandra 并阅读了更多有关 retry policies and consistency level 的内容,我想我了解它的基础知识。
我只是对哪种重试策略更适合我的以下场景感到困惑。
我们有一个 6 节点集群,所有节点都在一个 dc 中,RF 为 3,我们 read/write 作为本地仲裁。我的困惑是在我的用例中使用 DowngradingConsistencyRetryPolicy
是否有意义,或者我应该在这里坚持使用 DefaultRetryPolicy
?
谁能用一些例子解释这两者之间的区别,以便我了解何时使用什么?还有这里推荐使用什么重试策略。
我建议先阅读 Developing applications with DataStax drivers 指南。
重试策略允许您重复操作。这个决定应该基于查询本身的类型,并基于业务逻辑。例如,某些应用程序总是需要仲裁或本地仲裁,因为它们无法承受数据不一致。一些应用程序可能不那么挑剔,并且更喜欢数据一致性或丢失数据的磁盘的更高可用性 - 在这种情况下,降级策略可能允许使用本地而不是本地仲裁写入数据。但在这种情况下,您有丢失数据的风险(例如,接受写入的节点完全丢失了所有数据)。
在大多数情况下,建议坚持默认策略,但将您的查询标记为幂等(当然,如果它们是......您也可以在连接级别设置此标志)。幂等查询——与只执行一次相比,所有重新执行的查询都不会改变。这涵盖了所有 "normal" 插入、删除和大部分更新(列表的 append/prepend 除外)。 LWT 不是幂等的!