当前位置: 首页 > 知识库问答 >
问题:

是否可以在不停机的情况下将低频集群切换到高级可见度(弹性搜索)?

司寇阳曦
2023-03-14

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

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

这可能吗?

共有1个答案

乌修筠
2023-03-14

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

    < li >按照说明设置可见性依赖关系和配置 < li >保持基本的可见性依赖关系 < li >在启用可见性之前,请将AdvancedVisibilityWritingMode动态配置设置为对高级可见性(基于ES)和基本可见性(基于数据库)进行双重写入,并且现在仅从基本可见性读取:
system.advancedVisibilityWritingMode:
  - value: "dual"
system.enableReadVisibilityFromES:
  - value: false

因此,Cadence将向两个存储写入可见性,但继续使用基本可见性进行读取

    < li >部署配置

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

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

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

 类似资料:
  • 我们使用Hazelcast IMDG作为内存网格。我们集群中的节点数是三个,我们有一个同步备份,并且集群是分区感知的。在这种情况下,我希望分布式映射将均匀分布在3个节点上(或多或少)。如果节点发生故障,领导层应转移到健康的节点(该节点具有丢失数据的同步备份)。如果对这个新分配的leader节点有写请求,那么应该将相同的分区同步复制到一个活动节点。这是否意味着在节点故障的情况下,应该复制大约三分之一

  • 我在这里读到了以下关于石英簇模式的声明: 我假设“低频繁触发器”(每天一次)也会导致作业在随机节点上执行,因为有很多触发器“接近其执行时间”(高频繁触发器),所以从Quartz的角度来看,在下午01:00左右有很多触发器。

  • 问题内容: 我处理非常大的二进制文件(每个文件从几个GB到多个TB)。这些文件以旧格式存在,并且升级需要将标头写入文件的FRONT。我可以创建一个新文件并重写数据,但是有时这可能需要很长时间。我想知道是否有更快的方法来完成此升级。该平台仅限于Linux,我愿意使用低级功能(ASM,C,C ++)/文件系统技巧来实现这一目标。基本库是Java,JNI是完全可以接受的。 问题答案: 没有本机执行此操作

  • 问题内容: 如果要使用Linq-SQL,还必须将DB Table拖到设计器表面以创建实体类。 我一直喜欢我的应用程序中的完全控制权,并且不喜欢dotnet创建的类。 是否可以使用我自己的数据访问层实体类在Linq和DB之间提供此连接? 我该如何完成? 问题答案: 您可以使用Linq-to-SQL非常轻松地编写自己的类-只需使用一些属性绘制类即可。 例如,这是我的一个项目中有一个非常简单的表,它可以

  • 问题内容: 我正在评估JOOQ是否可在仍在开发中的新系统中使用。我想避免在与应用程序一起开发数据库时生成代码,而只是为该应用程序起持久存储的作用。因此,预计数据库模式定义将由Java代码(java中的表定义)驱动。 JOOQ是否适合上述用例?是否有用于模式定义的Java DSL? 问题答案: JOOQ是否适合上述用例? 是的,许多jOOQ用户仅使用运行时库,而没有代码生成器。入门指南中提供了示例。

  • 我正在评估JOOQ在一个仍在开发中的新系统中的使用情况。当数据库与应用程序一起开发时,我希望避免代码生成,而只是在这个应用程序中扮演持久存储的角色。因此,数据库模式定义应该由Java代码(Java中的表定义)驱动。 JOOQ是否适用于上述用例?是否有用于模式定义的JavaDSL?