是否可以在不停机的情况下将 cadence-worfklow 集群切换到高级可见性(ElasticSearch)?
Is it possible to switch a cadence-worfklow cluster to advanced visibliity (ElasticSearch) without downtime?
我们在 Cassandra 上有一个带有可见性存储的节奏工作流集群。这不支持高级可见性功能,因此我们想转移到 ElasticSearch。然而,该集群正在积极生产使用中,因此我们希望在不停机的情况下进行切换。澄清“不停机”:
- 运行 工作流程可以在我们开始切换后完成。
- 在切换过程中可以启动新的工作流程。
- 基本可见性功能可用于切换前启动的工作流和切换期间启动的工作流。这对于调试/故障排除目的都很重要,因为对于我们的某些代码,我们使用
getResult
调用(Java 客户端),我相信它使用服务器端的可见性功能。
这可能吗?
是的,Cadence 支持它。以下是您可以作为参考的步骤。
1。配置高级可见性
- 按照instructions设置可见性依赖和配置
- 保持基本的可见性依赖性
- 在启用可见性之前,设置 AdvancedVisibilityWritingMode dynamic config 以对高级可见性(基于 ES)和基本可见性(基于数据库)进行双重写入,目前仅从基本可见性读取:
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-A
和samples-domain-B
从高级可见性读取,其余继续使用基本可见性
- 当您确信每个域都可以使用高级可见性时。
system.advancedVisibilityWritingMode:
- value: "dual"
system.enableReadVisibilityFromES:
- value: true
3。弃用基本可见性
当前面的步骤成功时,您可以弃用基本可见性。
您可以从配置中删除基于数据库的可见性,并删除上面使用的动态配置(当只配置高级可见性时,Cadence 默认只会写入和读取高级可见性)
我们在 Cassandra 上有一个带有可见性存储的节奏工作流集群。这不支持高级可见性功能,因此我们想转移到 ElasticSearch。然而,该集群正在积极生产使用中,因此我们希望在不停机的情况下进行切换。澄清“不停机”:
- 运行 工作流程可以在我们开始切换后完成。
- 在切换过程中可以启动新的工作流程。
- 基本可见性功能可用于切换前启动的工作流和切换期间启动的工作流。这对于调试/故障排除目的都很重要,因为对于我们的某些代码,我们使用
getResult
调用(Java 客户端),我相信它使用服务器端的可见性功能。
这可能吗?
是的,Cadence 支持它。以下是您可以作为参考的步骤。
1。配置高级可见性
- 按照instructions设置可见性依赖和配置
- 保持基本的可见性依赖性
- 在启用可见性之前,设置 AdvancedVisibilityWritingMode dynamic config 以对高级可见性(基于 ES)和基本可见性(基于数据库)进行双重写入,目前仅从基本可见性读取:
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-A
和samples-domain-B
从高级可见性读取,其余继续使用基本可见性
- 当您确信每个域都可以使用高级可见性时。
system.advancedVisibilityWritingMode:
- value: "dual"
system.enableReadVisibilityFromES:
- value: true
3。弃用基本可见性
当前面的步骤成功时,您可以弃用基本可见性。 您可以从配置中删除基于数据库的可见性,并删除上面使用的动态配置(当只配置高级可见性时,Cadence 默认只会写入和读取高级可见性)