需要有关使用Dockersdevise应用程序和部署策略的体系结构的帮助

我首先解释一下我将要开发的应用程序。 我们在Camunda开发了以下一系列工作stream程:

  1. 像fetchImageAttributes,fetchFileAttributes等全局子stream程工作stream程…
  2. FileTransfer工作stream程。
  3. FileConverter工作stream程。

概观

FileTransfer工作stream程在Camunda的呼叫活动任务的帮助下使用全局子stream程,同样,FileConverter工作stream程也借助呼叫活动任务使用子stream程。 全局进程是一个长时间运行的进程,因此每当有subprocess启动时,它就会在特定的兔子队列中发送一个消息,并在特定的兔子队列中等待响应以恢复使用接收任务的subprocess。 FileTransfer工作stream程和FileConverter工作stream程可以独立调用。 我们在弹簧中创build了一个兔子队列列表器,它将监听各个工作stream的特定队列,并且无论何时在这些队列中放入消息,工作stream将被调用。

在开发过程中,所有三个工作stream程将在单个tomcat实例中部署和testing,因此工作stream程将毫无顾虑地工作。

现在计划将使用docker将它们托pipe到云端,计划将这三个工作stream程托pipe在3个docker容器中。

  • 容器1将包含全局子stream程工作stream程。
  • 容器2将包含FileTransfer工作stream程。
  • 容器3将包含FileConverter工作stream程。

Camunda的三个工作stream程将使用相同的数据库来存储特定的工作stream程活动和variables。

面临的挑战:

  1. 由于文件传输工作stream和FileConverter工作stream都使用全局subprocess使用调用活动将失败,因为它们在相同的运行时引擎中不可用。 我们应该使用Camunda Rest服务吗?

为了克服上述挑战,我想到了部署计划2:

  • 容器1将包含全局子stream程工作stream程和文件传输工作stream程。
  • 容器2将包含全局子stream程工作stream程和文件转换器工作stream程。

面临的挑战:

  1. 由于全局子过程工作stream在两个容器中都存在,所以它们可能是FileConverter工作stream的响应可能被FileConverter工作stream拉取的场景,因为全局子过程正在两个容器中侦听相同的兔子队列,因此可能导致错误stream程实例将不会被find。

所以如果有人能够帮助我build立一个更好的架构,或者任何在camunda有良好经验并且在异构集群部署的人都可以指导我。

谢谢。

你可以推断,过程之间的沟通是如何实现的。 由于您分开部署,子stream程/调用活动不是一个选项。 更好的方法是使用BPMN消息并在进程之间创build一个编排。 如果您已经在使用兔子,您可以开发一个BPMN消息到兔子适配器并传递消息。

还有两种连接系统的方法:

  • 使用外部服务任务
  • 使用一种叫做zeebe的新方法