【问题标题】:Is it possible to switch a cadence-worfklow cluster to advanced visibliity (ElasticSearch) without downtime?是否可以在不停机的情况下将节奏工作流集群切换到高级可见性(ElasticSearch)?
【发布时间】:2021-08-18 17:23:29
【问题描述】:

我们在 Cassandra 上有一个带有可见性存储的 cadence-workflow 集群。这不支持高级可见性功能,因此我们想迁移到 ElasticSearch。然而,集群正在积极的生产使用中,所以我们希望在不停机的情况下进行切换。澄清“没有停机时间”:

  • 一旦我们开始切换,运行工作流就可以完成。
  • 可以在切换过程中启动新的工作流。
  • 基本可见性功能既适用于切换前启动的工作流,也适用于切换期间启动的工作流。这对于调试/故障排除都很重要,因为对于我们的某些代码,我们使用了 getResult 调用(Java 客户端),我相信它使用了服务器端的可见性功能。

这可能吗?

【问题讨论】:

    标签: cadence-workflow


    【解决方案1】:

    是的,Cadence 支持它。以下是您可以用作参考的步骤。

    1。配置高级可见性

    • 按照instructions 设置可见性依赖项和配置
    • 保持基本的可见性依赖
    • 在启用可见性之前,将 AdvancedVisibilityWritingMode dynamic config 设置为对高级可见性(基于 ES)和基本可见性(基于 db)进行双重写入,并且现在仅从基本可见性读取:
    system.advancedVisibilityWritingMode:
      - value: "dual"
    system.enableReadVisibilityFromES:
      - value: false
    

    这样 Cadence 将写入两个商店的可见性,但继续使用基本可见性进行读取

    • 部署配置

    2。切换到高级可见性

    您不想立即切换,因为新商店还没有足够的数据。取决于域保留或用例场景,您可以稍后在您认为可以仅从高级可见性读取时切换到使用从高级可见性读取。

    system.advancedVisibilityWritingMode:
      - value: "dual"
    system.enableReadVisibilityFromES:
      - value: false
      - value: true
        constraints:
          domainName: "samples-domain-A"
      - value: false
        constraints:
          domainName: "samples-domain-B"
    

    这将使samples-domain-Asamples-domain-B 从高级可见性中读取,其余的继续使用基本可见性

    • 当您确信每个域都可以使用高级可见性时。
    system.advancedVisibilityWritingMode:
      - value: "dual"
    system.enableReadVisibilityFromES:
      - value: true
    

    3。弃用基本可见性

    当前面的步骤成功后,您可以弃用基本可见性。 您可以从配置中删除基于db的可见性,并删除上面使用的动态配置(仅配置高级可见性时,Cadence默认只会写入和读取高级可见性)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 2018-06-01
      相关资源
      最近更新 更多