陆小曼|从ESB服务组合编排到NetflixConductor微服务编排


陆小曼|从ESB服务组合编排到NetflixConductor微服务编排作者:人月神话 , 新浪博客同名
简介:多年SOA规划建设 , 私有云PaaS平台架构设计经验 , 长期从事一线项目实践
今天谈下传统ESB服务总线里面的可视化服务设计 , 服务组合编排和微服务里面的服务编排 。 对于服务组合编排 , 实际上我们看到有几个不同的场景 。

  • 单服务可视化设计-仅仅针对一个服务实现
  • 服务组合编排-实现多个服务的组合形成一个新的服务
  • 业务流程编排-通过服务组合编排实现要给完整的业务流程
对于业务流程编排可以看到更多的是通过类似BPEL业务流程设计器来完成 , 因此今天主要介绍下传统ESB服务总线里面的单个服务设计 , 多服务组合设计编排 , 同时再介绍下NetflixConductor微服务编排的开源实现 。
单个服务的可视化设计
陆小曼|从ESB服务组合编排到NetflixConductor微服务编排【陆小曼|从ESB服务组合编排到NetflixConductor微服务编排】单个服务的可视化设计可以理解为实现单个服务的可视化服务设计 , 其中包括了服务适配 , 路由 , 数据映射 , 协议转换等常见的编排节点和组件 。
对于单服务设计可能用到的组件 , 我们基于服务集成场景 , 主要可以分为服务发布类组件 , 服务适配类组件 , 数据映射类组件 。 具体的组件包括了:
服务发布类组件(只需要支持SOAP WS服务和Rest WS服务即可)
  1. SOAP Proxy WS组件:发布代理服务
  2. SOAP Business WS组件:发布业务服务 , 衔接原始的业务服务地址
  3. Rest Proxy WS组件:发布基于Rest风格的代理服务
  4. Rest Business WS组件:发布业务服务 , 衔接原始的Rest业务服务地址
  5. SOAP WS Request组件和 SOAP WS Response组件
  6. Rest WS Request组件和 Rest WS Response组件
适配器组件
  1. DBSqlQuery组件:实现对数据库的Sql数据查询能力 。
  2. DBSqlInsertOrUpdate组件:实现对数据库的Insert或Update操作适配能力 。
  3. DBStoreProc组件:实现对数据库存储过程的适配能力 。
  4. FTPInput或FileInput组件:实现对源端的数据获取能力
  5. FTPOutput或FileOutput组件:实现对FTP服务器目标端的适配能力
  6. JMSInput组件:实现对JMS写入能力
  7. JMSOutput组件:实现对JMS的消费和订阅能力
数据映射类组件
  1. XMLMapping组件:实现两个XML结构之间的数据映射能力
  2. tMapping组件:实现ETL时候两个数据集之间的数据映射能力
基于以上组件我们可以来看 , 常见的服务集成场景用上面的设计器组件基本就能够满足 , 同时实现最简单额设计组件之间的组合和连接 。 而设计器本身是一个设计态的东西 , 因此只需要将设计完成的内容 , 即设计元数据存储为一个独立的XML文件即可 。
后续基于设计文件要做的就是进行实际的服务封装和部署 , 而这个时候才需要将设计器的内容进行解析 , 进行动态的服务封装和部署工作 。 以实现服务设计态和服务运行态的自动衔接能力 。
多个服务组合编排
陆小曼|从ESB服务组合编排到NetflixConductor微服务编排服务组合编排是服务组合 , 服务组装等 , 希望通过服务编排能够完成这些事情 , 而不是简单的完成单一服务的设计和开发 。 即将多个原子服务组合或组装在一起 , 最终形成一个新的服务并提供的能力 。 我们举例来说明下 。


推荐阅读