原文链接: Camunda 开源流程引擎 学习笔记(二)——最佳实践
最佳实践
参考:
Camunda
官方推荐的最佳架构模式是外部任务模式. 如下图, Camunda
引擎作为一个独立的服务, 客户端通过REST
接口从流程引擎服务器上拉取任务.
这种模式有点像消息队列的发布/订阅模式, Camunda
服务发布任务, 客户端(Job worker
)订阅相关任务,定期拉取任务,执行后反馈执行结果.和消息队列相比, Camunda
对流程编排
的能力更强大些, 事实上, 如果是单纯的线性任务, 使用工作流引擎反而增加了复杂性.
使用外部任务具有以下优点:
- 时间解耦:该模式可以替换服务任务(“消费者”)和服务实现(“提供者”)之间的消息队列。它可以消除对操作专用消息总线的需要,同时保持消息传递将提供的解耦。
- 多语言架构:该模式可用于集成基于 .NET 的服务,例如,当编写 Java 委托来调用它们可能不是那么容易时。可以使用任何可用于与 REST API 交互的语言来实现服务。
- 更好的扩展性:该模式允许您根据需要启动和停止工作人员,并根据需要运行尽可能多的工作人员。通过这样做,您可以单独扩展每个服务任务(或者准确地说,每个“主题”)。
- 连接云和本地:该模式支持您在云中的某个地方运行 Camunda(就像我们的客户经常做的那样),因为您仍然可以在本地拥有服务,因为他们现在可以通过 SSL 上的 REST 查询他们的工作,这是对防火墙也很友好。
- 避免超时:该模式允许您异步调用长时间运行的服务,这些服务最终会阻塞数小时(因此在同步调用时会导致事务和连接超时)。
- 在专用硬件上运行服务:每个工作人员都可以在最适合该工作人员特定任务的环境中运行;例如,用于复杂图像处理的 CPU 优化云实例和用于其他任务的内存优化实例。