解析微服务架构(二):融入微服务的企业集成架构

本文将介绍融入微服务的企业集成架构的演进,并描述交互式系统的微服务模式及相关技术决策,然后给出了一个具体的微服务架构业务应用的例子。

交互型系统(System of Engagement)与记录型系统(System of Record)

随着移动互联网的快速发展,企业除了需要提供传统核心IT系统能力之外,还需提供客户与合作伙伴友好型的以交互为重点的创新及交互式系统。这两类系统的特性与禀赋完全不同,因此企业IT的支撑迈入了双速IT时代。

企业微服务架构的引入主要集中在以下两类系统:

  • 记录型系统:是指传统的应用系统,对应用所关注领域的信息进行增删改查作为应用的核心能力。如CRM、ERP、OA等系统。记录型系统使用的往往是一些传统的经典IT技术构建,往往更难改变,其集成难度也较高。
  • 交互型系统:是指以与用户交互为主要目的而开发的应用系统。如各种移动应用、微信、微博等等。交互型系统更多地会采用现代的各种新技术语言及运行时部署,具体高度的敏捷性,通过简单的现代化连接即可实现集成。

融入微服务的企业集成架构

不同的企业背景应该采用不同的微服务架构引入策略:

  • 对大型的成熟企业而言,由于本身已有大量在建的企业IT系统,因此决定了微服务架构仅是其多种应用架构风格之一,大型企业在服务总线与能力开放网关的集成架构下,可以首先从交互型系统入手引入基于微服务架构的应用,逐步积累面向微服务的开发运维经验。另外,对于部分新建的记录型系统,也可以考虑采用微服务架构进行构建,并通过服务总线等SOA集成技术实现与企业遗留系统的信息交互。
  • 对于初创企业而言,由于其没有任何历史包袱,因此可以考虑将企业范围的整体架构以(微)服务架构为基础进行搭建。
  • 大型成熟企业在企业集成架构及不同应用(整体式应用与微服务应用)架构风格中使用的技术及中间件也各有不同。例如:在整体式应用中往往更强调应用的交易完整性、安全性、数据的一致性等高标准特性,而微服务应用则更强调系统功能的快速上线。因此,这导致了这两类系统所偏好的技术及中间件产品会有差异。下图是在一个企业集成架构中,不同应用及集成所对应的IBM软件产品的示例:
    • a,整体式应用使用WAS ND集群化企业级应用服务器和DB2数据库。
    • b,微服务应用使用轻量级的WAS Liberty、Node.js,以及NoSQL数据库。
    • c,甚至可以考虑将其部署至公有云PaaS平台(如IBM Bluemix)上以充分利用PaaS平台上众多的服务能力。
    • d,集成组件使用企业级的IBM Integration Bus服务总线以及API Connect能力开放网关解决方案。
  • 在系统云化方面,整体式应用与微服务应用也具有不同的偏好。因此,未来的企业必然朝着混合型部署架构演进:
    • 企业级整体式应用部署偏好于系统专用资源模式,也可根据各个应用特性评估是否可迁移至企业私有云之上以实现企业IT资源优化部署。
    • 微服务应用则偏好于生于云端的PaaS平台,使其可方便地使用各种就绪的底层服务,并采用多样化的编程语言和持久化技术。

交互式系统的微服务模式

交互式系统微服务模式包括多渠道交互层与业务逻辑层:

  • 1,多渠道交互层通常采用“后端服务前端”的设计模式。
  • 2,业务逻辑层则采用微服务架构,通过垂直服务而非水平分层实现对不同业务功能的解耦。
  • 3,各业务服务微服务的依赖关系是微服务架构设计的一个考虑重点,一个业务服务可以委托给其他业务服务,但需尽量避免循环依赖。需要注意的是每个微服务仍然实现了一个完整的任务,而不是传统的水平分层模式。

交互式系统微服务架构应用的技术决策

1、编程语言的考虑:

  • Java:鉴于Java有广大的受众以及其商业软件的企业级保障能力,以及在市场上能够非常容易找到优秀的开发人员,并且Java已开始加速增加最新和最现代的语言特性如Lambda等,Java仍然是实现业务逻辑层的不二之选。其他语言技术虽然层出不穷,各有优点,但并没出现新的统治级编程语言。
  • Node.js:在交互层,Node.js是JavaScript服务端的解决方案,结合其他技术组成的MEAN全堆栈javascript开发框架(Mongo DB – 简单的NoSQL数据库,使用JSON风格存储文档;ExpressJS – 是一个Web应用框架,提供有帮助的组件和模块帮助建立一个网站应用; AngularJS – 是一个前端MVC框架;Node.js -是一个并发异步事件驱动的Javascript服务器后端开发平台。),使Node.js正成为REST服务实施和构建交互式系统方面实上的解决方案。

2、多样性持久化考虑:使用合适的NoSQL技术存储持久化数据。

交互式系统基于PaaS云端部署方式:随着PaaS云技术的日益成熟,企业可以考虑将交互式系统部署于云端,以充分利用PaaS平台上的各种服务。可将应用的Web/移动层迁移到云端,交互模型存储到云端,将记录型系统能力以API形式开放出来实现与交互式系统的连接。

交互式系统微服务架构例子

  • 航班预订应用微服务架构设计
  • 航班预订应用采用多样化技术满足不同的业务技术特性。

以上内容介绍了融入微服务的企业集成架构的演进,并描述交互式系统微服务模式及相关技术决策,然后给出了一个具体微服务架构业务应用的例子。

转自:https://www.ibm.com/developerworks/community/blogs/3302cc3b-074e-44da-90b1-5055f1dc0d9c/entry/%E8%A7%A3%E6%9E%90%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84%E4%BA%8C%E8%9E%8D%E5%85%A5%E5%BE%AE%E6%9C%8D%E5%8A%A1%E7%9A%84%E4%BC%81%E4%B8%9A%E9%9B%86%E6%88%90%E6%9E%B6%E6%9E%84?lang=zh

Written on January 5, 2019