4

我正在为我的一个工作流项目使用 camunda 社区版本,该项目执行类似于的微服务流程的 orecstartion ,社区版本中的所有功能都足以满足我的要求,除了高可用性和自动恢复。

对于高可用性,如果我按照本指南使数据库(mySQL)高可用,并且在负载均衡器后面运行两个或多个基于 spring 的 camunda 管理器实例就足够了?

如果 camunda 接受 bpnm 请求并且该节点在收到请求后失败或崩溃,如何恢复?

在我的情况下,每个基于 spring 的 camunda 管理器都会收到请求并使用 202(已接受)确认用户,然后 camunda 将开始执行工作流程。那么如果收到请求的节点崩溃了,如何自动恢复和自动恢复该工作呢?

4

1 回答 1

4

在高可用性数据库之上运行引擎的多个实例(=多个 Spring 应用程序)(确保它支持读取提交,请参阅https://docs.camunda.org/manual/7.12/introduction/supported-environments/ #databases ) 绝对足以使 Camunda 具有高可用性。

如果节点在响应 202 后崩溃,您将回退到“正常”Java/Spring 事务处理。https://docs.camunda.org/manual/7.12/user-guide/process-engine/transactions-in-processes/#transaction-boundaries应该有助于澄清这一点。

因此,如果您确保启动工作流实例(可能使用异步启动事件),提交此事务然后返回 202,那么您是安全的。唯一可能出现的问题是您在返回 202 之前崩溃,这通常会导致您的 REST API 重试,在这种情况下,您应该确保以幂等方式启动工作流。

于 2020-01-31T08:24:40.360 回答