微服务的流程编排将成为下一个要解决的大问题。在撰写本文时,有几种解决方案试图在该领域竞争,主要是构建自己的(文本)领域特定语言来描述业务流程。在我看来,编排应该改为在BPMN 2.x中表达,因为它是为此目的而精心设计的,易于理解且成熟的语言。
类似于SOA的编排
SOA专注于围绕业务功能构建的服务之间的远程通信。中央流程引擎同步地远程调用分布式服务。集成在状态处理过程引擎和无状态服务之间执行。
此类同步系统有两种不同的实现方式。
在这两种情况下,集成都需要引擎和服务同时在线。引擎可能知道服务的位置,或者使用注册表或代理(记住 Webservice三角 )来解决此问题,并且服务使用面向调用的实现来代表流程引擎执行工作。
消息驱动编排
代替同步调用,中央引擎可以将消息发送到队列或主题,而无状态服务订阅这些消息。不需要同时提供引擎和服务。结果,服务使用面向订阅的实现来代表流程引擎执行工作。
根据所使用的消息传递抽象,有两种实现类型:
分布式编排
业务流程本身是分布式的。服务不会变为全状态引擎和无状态服务之间的分离,而是变为全状态(并获得自己的状态处理方式,例如使用业务流程),并且在业务流程之间进行集成(例如,在流程引擎PE1,PE2,PE3中运行) )。
Camunda BPM的外部任务模式
外部任务模式是Camunda BPM在7.4版中引入的,它是打破工作流整体走向分布式工作流编排的最重要功能之一。最初,它旨在提供与面向调用相反的面向订阅的服务任务实现。也就是说,如果引擎执行服务任务,则它不是在调用委托来调用(远程)服务,而是创建外部任务记录,并等待(远程)外部任务工作者获取并执行它。
点击标题了解详细。