【问题标题】:CAS value updation in case of server failures on couchbase在 couchbase 上发生服务器故障时更新 CAS 值
【发布时间】:2020-08-11 14:59:25
【问题描述】:

我正在尝试在我的应用程序中处理一些 couchbase 异常。 upsert 方法可以抛出一个TemporaryFailureException 指示服务器端的临时故障。是否存在文档的 CAS 值会被更新的情况?如果发生此异常,我将使用指数退避重试固定次数。如果 CAS 值已更新,那么在下次重试时,我需要确保下一次传递更新的 CAS 值,否则我将收到 CASMismatchException。

那么是否可以保证在服务器端出现故障时不会更新 CAS 值?

【问题讨论】:

    标签: java couchbase spring-retry compare-and-swap exponential-backoff


    【解决方案1】:

    CAS 代表文档的“版本”,当您需要乐观锁定时使用它(两个应用程序试图同时更改同一个文档)。

    当服务器出现更复杂的问题(磁盘故障、内存不足等)时,会抛出 TemporaryFailureException。如果您的集群配置正确,您的服务器将自动进行故障转移,另一个节点将取代它。因此,使用某种 backOff 机制重试操作以等待服务器升级是一种有效的策略。

    值得强调的是,如果您同时需要阅读文档,可以调用方法“readFromReplica”。 Couchbase SDK 内部也有一个断路器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多