【问题标题】:Can Activiti be used for Microservice Orchestration?Activiti 可以用于微服务编排吗?
【发布时间】:2021-02-15 17:57:39
【问题描述】:

我有多个微服务。每个微服务都有 REST 端点。 我想编排微服务来创建工作流。 Activiti可以吗?不写代码可以吗?

假设每个微服务获得一些输入并返回一些输出(可以用作下一个微服务的输入),Activiti 是否可以提供一种将输出从一个微服务直接传递到另一个微服务的方法?

【问题讨论】:

    标签: microservices activiti orchestration


    【解决方案1】:

    Activiti 与大多数其他 BPM 平台一样,当然可以用于微服务编排。但是有很多警告。 长时间运行的微服务(即不立即返回结果)可能会阻塞 BPM 流程,这可能并不理想,服务可能需要身份验证和 其他时候,微服务会将结果放入存储库或队列中,BPM 流程需要使用服务任务来获取这些结果。 以下 Camunda 博客文章中有一篇很好的文章讨论了同步调用与异步调用:https://camunda.com/blog/2013/11/bpmn-service-synchronous-asynchronous/

    虽然这是一篇 Camunda 帖子,但 Activiti 可以轻松处理相同的模式。

    你的另一个问题是你是否可以在不编写代码的情况下做到这一点。答案是视情况而定。最简单的同步 ReST 调用编排可能无需编写代码就可以处理,但是一旦您开始使用异步服务,结果可能不会放入 ReST 响应中,或者长时间运行的服务调用,或者即使服务调用具有其他内容基本身份验证,那么您可能需要编写一些 Java Delegate 服务任务。

    【讨论】:

    • 不应以同步方式集成长时间运行的服务,因此不会出现阻塞。异步集成 - 我找不到类似于 Camunda 外部服务任务的 Activiti 集成模式 - 有吗?
    • rob2universe :- Camunda 对他们称之为“外部任务”的处理是 q 简单的注册表(数据库表)实现,它为任务设置等待条件并等待外部任务更新它。使用内联消息事件任务来实现类似的模式并不难。
    【解决方案2】:

    是的,任何流程引擎都可以以这种方式使用。您很可能会为数据映射/连接器编写一些胶水代码。

    使用 BPMN2 流程引擎覆盖编排部分的好处包括例如 ootb 支持:

    • 状态管理和长时间运行的进程/数据持久性
    • 版本控制 (!)
    • 重试和错误处理
    • 在出现问题时修改状态和日期的工具
    • 超时,并行执行(如有必要)
    • 编排的可扩展性
    • 图形化流程模型
    • 审计跟踪
    • 以及基于 BPMN 2 模型的监控工具中的端到端可见性
    • 能够为更复杂的规则包含业务规则任务 (DMN)
    • 推拉通信模式和异步通信的结合
    • 通过 BPMN 2 实现业务-IT 对齐
    • 支持各种 BPMN 2 事件
    • 标准化(技能、安全性、软件质量、功能)...

    这是一篇关于 WHY 的精彩相关文章: https://blog.bernd-ruecker.com/3-common-pitfalls-in-microservice-integration-and-how-to-avoid-them-3f27a442cd07

    这是关于使用流程引擎时的重要设计考虑:https://blog.bernd-ruecker.com/the-microservice-workflow-automation-cheat-sheet-fc0a80dc25aa

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-05
      • 2017-01-28
      • 2017-04-14
      • 2021-02-16
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      相关资源
      最近更新 更多