分布式微服务流程编排简介 -Holisticon Consultants

19-11-06 banq
                   

微服务的流程编排将成为下一个要解决的大问题。在撰写本文时,有几种解决方案试图在该领域竞争,主要是构建自己的(文本)领域特定语言来描述业务流程。在我看来,编排应该改为在BPMN 2.x中表达,因为它是为此目的而精心设计的,易于理解且成熟的语言。

类似于SOA的编排

SOA专注于围绕业务功能构建的服务之间的远程通信。中央流程引擎同步地远程调用分布式服务。集成在状态处理过程引擎和无状态服务之间执行。

此类同步系统有两种不同的实现方式。

  1. Connector连接器风格的集成模式:如果处理引擎使用所选择的协议(通常HTTP)直接调用服务(S1,S2,S3)。
  2. RPC集成模式:如果引擎调用的本地代表这些设备通过选择的协议(HTTP,Java RMI的或任何其它同步协议)调用远程服务(S1,S2,S3)。

在这两种情况下,集成都需要引擎和服务同时在线。引擎可能知道服务的位置,或者使用注册表或代理(记住Webservice三角)来解决此问题,并且服务使用面向调用的实现来代表流程引擎执行工作。

消息驱动编排

代替同步调用,中央引擎可以将消息发送到队列或主题,而无状态服务订阅这些消息。不需要同时提供引擎和服务。结果,服务使用面向订阅的实现来代表流程引擎执行工作。

根据所使用的消息传递抽象,有两种实现类型:

  1. 消息传递基础结构可能是提供队列(Q1,Q2,Q3)概念的中间件(例如,使用中央消息传递总线)。引擎使用队列将异步消息发送到服务(S1,S2,S3)。
  2. 代替使用队列,过程引擎可以将信息发布到预定义的主题(T1,T2,T3)。主题订阅可以是流程引擎的一部分(也就是上面显示的外部任务模式),也可以位于集中式消息中间件上。

分布式编排

业务流程本身是分布式的。服务不会变为全状态引擎和无状态服务之间的分离,而是变为全状态(并获得自己的状态处理方式,例如使用业务流程),并且在业务流程之间进行集成(例如,在流程引擎PE1,PE2,PE3中运行) )。

Camunda BPM的外部任务模式

外部任务模式是Camunda BPM在7.4版中引入的,它是打破工作流整体走向分布式工作流编排的最重要功能之一。最初,它旨在提供与面向调用相反的面向订阅的服务任务实现。也就是说,如果引擎执行服务任务,则它不是在调用委托来调用(远程)服务,而是创建外部任务记录,并等待(远程)外部任务工作者获取并执行它。

点击标题了解详细。

                   

2