前言
一个实际 ESB 项目实施的成败,不仅要求我们把产品用熟用好,即熟悉 ESB 产品的配置、开发及优化操作,还需要制定正确的、量体裁衣式的解决方案,并且需要借助科学的项目实施方法论,从需求分析、方案设计、产品开发、测试、上线运行等各个方面进行全面的考虑。本系列文章将分为三部分,第 1 部分和第 2 部分将结合两个不同行业的案例来介绍两个具有鲜明行业特点的 ESB 解决方案,第 3 部分则将针对 ESB 项目的实施过程给出一些建议。
航空公司 ESB 案例解析
通过企业服务总线、接口适配器、服务注册管理等整合技术,实现将企业内部现有的各应用系统之间的信息共享,提高企业内部应用系统的数据共享和交换效率,提升企业在市场上的综合竞争力和客户服务质量,是所有企业的一个典型需求。本文将以航空公司的案例为基础,说明采用 IBM ESB 相关产品整合航空公司电子商务、常旅客、航班动态、呼叫中心等系统的解决方案。
航空公司 ESB 的需求举例
与其他行业一样,在民航业,国际和国内的主要航空公司内部也分布着众多已建和在建的用以支撑业务运行的 IT 系统,这些系统之间缺乏对信息共享性、系统兼容性和接口标准规范的统一考虑,造成系统之间的连接比较困难,应用和数据无法得到全面共享,系统间“蜘蛛网状”的连接普遍存在。随着新系统的不断建设,在业务与流程方面的整合将会因系统和业务领域间的信息沟通障碍而面临越来越多的困难,对航空公司的整体发展战略带来制约。
下面我们就来列举几个民航业的现状,以此说明对企业进行业务整合的必要性。
现状一:业务系统间数据共享需求强烈
总体来看,航空公司的 IT 分为商务、航务、机务和管控四大体系,其中商务体系中包括定座系统、电子客票销售系统、离港系统、电子商务系统、常旅客系统、大客户系统、呼叫中心系统、运价收益管理系统、地面服务系统等。在这个庞大的体系结构中,存在着巨大的系统间数据集成和共享的需求。主要存在以下三类信息的共享:
航班数据共享:
航班数据包括航班计划、航班动态、飞机参数等数据,是保障航空公司正常运营的最基本信息,而航空公司内部通常都会有超过 10 个的系统需要获取航班数据,其中包括:电子商务系统、呼叫中心系统、常旅客系统、地服系统、联盟成员系统等。目前,航班数据的源数据系统 ( 一般来自航空公司运控 AOC 系统 ) 与其他业务系统之间的数据交换和共享都是通过点对点单独开发接口的形式实现的,比如通过数据库视图的紧耦合的方式实现,这在增加各个系统接口复杂性的同时也增加了系统开发的周期和费用,而且各业务系统无法从统一的渠道获取航班数据,造成了各业务系统之间数据不一致,如下图所示:
图 1. 航空公司航班数据共享
![航空公司航班数据共享](https://i-blog.csdnimg.cn/blog_migrate/2ba55eb14e5f976090f847ac9b276c82.png)
客户主数据共享:
根据不同的直销、分销渠道以及不同的客户属性,航空公司的客户信息通常被分散地存储在多个不同的客户服务系统中,其中包括常旅客系统、大客户系统、电子商务系统等,这些现有系统或多或少地通过点到点的星型结构的接口方式进行了一些互连,在一定程度上实现了客户数据共享,但是仍普遍存在连接混乱、各系统间数据更新频率不一致、各系统内同一旅客基本信息不统一等问题,借鉴其他行业在客户主数据管理方面的发展趋势和最佳实践,因此航空公司需要对客户主数据进行统一存储和一致性管理,这就需要完成呼叫中心、电子商务、大客户、常旅客等系统与客户主数据系统之间的集成,希望通过 ESB 技术实现上述系统间数据的实时同步,如下图所示:
图 2. 航空公司客户数据共享
![航空公司客户数据共享](https://i-blog.csdnimg.cn/blog_migrate/35e6e91b3c127334f09d6b960c82a86a.png)
客票销售和客户服务信息共享:
在航空公司的直销渠道中,电子商务与呼叫中心是非常重要的两大直销渠道,各自拥有独立的业务支持系统,以这两个系统为例,国内各个航空公司拥有的电子商务与呼叫中心这两个应用系统之间后台基本没有任何数据共享,在业务和应用上完全独立,如下图:
图 3. 呼叫中心和电子商务系统渠道分离
![呼叫中心和电子商务系统渠道分离](https://i-blog.csdnimg.cn/blog_migrate/9f720f7f2bf0e367f825e1981f4e4bc4.png)
而实际上这两个系统之间存在着非常多的来自业务的数据共享需求。例如:当客户在互连网上完成了全部订座功能,希望能够在呼叫中心完成改期升舱、退票退款等操作;而如果客户在呼叫中心渠道上完成了全部订座功能,或者在呼叫中心完成改期升舱、退票、退款操作后,也希望能够在互连网上进行状态查询,如下图所示:
图 4. 呼叫中心和电子商务系统间数据共享
![呼叫中心和电子商务系统间数据共享](https://i-blog.csdnimg.cn/blog_migrate/07b39cd54ff7f69631a531fc1b98cd9d.png)
因此这两个系统希望共享客票销售数据、客票服务数据 ( 对于升舱、改期、退票、退款、订单追踪、邮寄行程单等客票服务流程的相关数据 ) 以及销售业绩管理等进行共享,从而实现航空公司的两大直销渠道之间在销售与服务流程上的统一和客户体验的统一,增加客户满意度和客户服务水平。
现状二:缺乏技术先进的、统一的、标准的 IT 集成架构
在以往各个系统的建设当中,都是采用传统的点对点的联接方式,导致了一个复杂的网状结构,其弊端在于系统接口众多,系统间造成密切的耦合性,某一个系统接口的修改导致其他所有系统的修改;系统没有扩展性,每新增一个系统就需要开发该系统和其他相关所有系统的接口;系统的后期维护成本过高。没有建立起统一的数据交换平台和数据交换标准。各系统之间根据自己的需要获取数据,存在着格式上、内容上、或者统计口径上的差异。
以航空公司电子商务系统为例,电子商务系统与周边业务系统的集成需求如下:
表 1. 航空公司电子商务与外围系统集成举例
需要集成的系统 | 待交换的数据 | 通讯协议 | 数据格式 |
---|---|---|---|
定座 / 离港 (GDS/DCS) |
| TTL: TCP/IP Others: TCP/IP** | TTL: MATIP Others: XML** |
运价管理系统 |
| JMS | N/A |
常旅客系统 |
| HTTP | SOAP (Web Services) |
电子支付系统 |
| HTTP | XML |
Fare Management* |
| N/A | N/A |
呼叫中心系统 |
| HTTP/MQ | XML/SOAP |
国际联盟系统 |
| HTTP | SOAP (Web Services) |
客户主数据系统 |
| Web Service | XML/SOAP |
上表中,我们粗略列举了航空公司电子商务系统与其各主要相关系统间交换的业务数据内容,以及通讯协议和数据格式,我们可以看出其复杂性,如果没有一个统一的集成平台的支撑,那么数据格式转换、通讯适配器的开发、传输可靠性保证等问题都需要依赖于自主开发,其风险是不言而喻的。
航空公司商务体系 ESB 整合方案
总体方案概述
SOA (面向服务的架构)是当今国外各大航空公司率先考虑的方法论并成为提升下一代提升航空运输服务的能力引擎,它使 IT 部门可以搭建灵活的可配置体系以支持随需应变的航空业务。鉴于航空公司商务体系建设中存在的这些问题,以及业界的最佳实践,我们提出采用 ESB 整合航空公司的商务体系,其总体架构如下图所示:
图 5. 航空公司商务体系集成架构
![航空公司商务体系集成架构](https://i-blog.csdnimg.cn/blog_migrate/95b114431594950219bc641d4c7f8e55.png)
总体系统架构主要由展现层、核心应用层和 SOA 核心能力层组成,其中通过门户实现统一用户接入,该模块主要包含用户帐户信息管理和存储、用户登录身份认证和访问请求负载均衡等部分。核心应用层包括电子商务系统、呼叫中心系统、常旅客系统、大客户系统等商务体系中的所有重要的业务系统。SOA 核心能力层由企业服务总线、服务管理和注册库以及组合服务运行引擎三部分组成。其中,企业服务总线 (ESB) 是 SOA 核心能力层的一个中心组件,它负责接入各种服务资源,通过采用统一服务接口使得各种服务或应用与服务之间可以相互方便访问,以星形结构替代了原来各服务之间的点对点结构,极大地优化了系统连接架构,降低了系统集成的复杂度。企业服务总线下方连入的各个应用系统是航空公司内部的各个业务系统,而右边是要连接的一些外部系统。组合服务运行引擎通常运行在标准的流程引擎之上,例如 BPEL 流程引擎,不是本文的重点,在此就不再赘述了。
ESB 的组件及产品映射模型
ESB 组件模型及产品映射模型如图 6:
图 6. 航空公司 ESB 组件模型
![航空公司 ESB 组件模型](https://i-blog.csdnimg.cn/blog_migrate/378064af486398628c4c46ef69664cb7.png)
其中包括 ESB 组件、服务注册和管理组件以及 ESB 的监控和管理组件 3 部分组成。
ESB 组件:
实现消息传递、服务路由、格式转换、交易完整性保证、数据解析和处理、安全传输、应用适配、协议转换等功能,可以由 WebSphere Message Broker 实现。
服务注册和管理:
为 ESB 提供服务管理容器,借助科学的方法论,对航空公司的业务需求进行分析,对其商务体系的业务流程进行梳理,建立起航空公司商务体系的服务目录和服务库,对这些服务以及服务的元数据进行定义和存储,以便进行服务的查找、发布、注册和管理。该组件可以由 WebSphere Service Registry and Repository(WSRR)来实现,将所暴露的服务注册在 WSRR 中,便于其他系统发现和调用。
ESB 监控和管理:
ESB 是应用集成的枢纽,各个应用之间的信息和服务共享都将通过 ESB 来进行,因此,ESB 平台本身的监控和管理的重要性是不言而喻的。全面、及时的服务监控功能除了能够辅助快捷的故障诊断,还能够提供完整的服务质量评估报告,以衡量现有的应用系统效率,并为优化、升级提供指导。服务监控需要包括服务、操作等级别的调用 / 失败次数、响应时间等信息,并且在超过设定值的情况下能够报警。该组件由 Tivoli Omegamon XE for Messaging 实现,Tivoli Omegamon XE for Messaging 能够实现对 IBM WebSphere Message Broker 以及底层 MQ 的资源的自动发现并进行自动监控,帮助管理员及时发现故障和故障隐患。
组件交互模型
以前面描述的电子商务系统和呼叫中心之间的订单交互为例,其组件交互模型如下:
图 7. 航空公司 ESB 组件交互模型
![航空公司 ESB 组件交互模型](https://i-blog.csdnimg.cn/blog_migrate/77f92796b621632b1a5fe032d91055c8.png)
该模型描述了客户在呼叫中心预定了机票(产生订单),然后通过电子商务 (B2C) 系统修改订单时通过 ESB 实现系统间订单交互的场景。
ESB 的接口设计
图 8. 航空公司 ESB 接口设计
![航空公司 ESB 接口设计](https://i-blog.csdnimg.cn/blog_migrate/ccd10006a7279a0c5322c1186449bbeb.png)
在上图中,我们给出了某航空公司的一个示例。在这个例子中,我们看到其电子商务系统、航班信息发布系统、客户主数据系统都是采用 Web Service/ 实时 /XML 接口;呼叫中心采用 socket/实时/文本、WebService/实时/XML 接口;常旅客系统采用 FTP/批量/ 文本、WebService/实时/XML 的接口;大客户系统采用 Database 的接口形式。
基于接口的数据格式的不同,与 ESB 相关的系统可以分为以下两类:
基于 XML 报文的应用系统:基于 XML 报文交互是比较理想的方式,是目前业界较为推荐的标准方式。需要说明的是,尽管都采用 XML 标准,由于各个系统的需求的差别已经建设周期的不同,不同的应用系统采用的 XML 消息很难完全兼容。这需要由 ESB 实现相应的转换。
基于专有报文/自定义报文的应用系统:基于专有报文的应用系统,如国内的定座系统,可以先保留现有的报文格式,由 ESB 实现现有格式与其他报文格式以及 XML 格式之间的转换。随着未来条件的成熟,这些系统逐步过度到通过 XML 实现与 ESB 以及其他应用系统的集成。
基于接口的通讯协议的不同,与 ESB 相关的系统可以分为以下四类:
基于 Web Services 的系统:基于 Web Services 的系统,例如目前的呼叫中心和电子商务系统都可以提供这种方式,可以使用 SOAP/HTTP(S) 与 ESB 实现整合。
基于 FTP/Socket 的应用系统:需要通过 FTP 交换数据的系统,如 FFP 系统等,ESB 可以直接支持 FTP 的方式。ESB 缺省提供文件适配器,其中就可以支持本地文件和远程文件通过 FTP 方式的读写。
基于数据库的应用系统:基于数据库的系统,如大客户系统、数据仓库系统,可以通过 JDBC 适配器与 ESB 集成。
基于传统应用连接的系统:对于这类系统可以通过定制的 Adapter 与 ESB 以及其他应用实现整合,该 Adapter 可以以 Java 实现。另一方面,也可以通过 XML/MQ 实现与 ESB 的集成,这时,这些传统应用系统将调整为面向消息的方式。使用 MQ 作为一个通用的 Adapter 与 ESB 以及其他应用实现整合,消息的格式可以逐步由现有的专有报文转变为基于 XML 标准的报文。
ESB 的物理部署
整个 ESB 方案的物理部署配置举例如下:
图 9. 航空公司 ESB 物理部署示例
![航空公司 ESB 物理部署示例](https://i-blog.csdnimg.cn/blog_migrate/6f9bdb9e985f5ab6590e3c7079c22ac6.png)
建议采用两个节点同时安装 WebSphere Message Broker 和 WSRR。其中将 WebSphere Message Broker 配置为 Cluster,将 WSRR 配置为 HA 的方式,采用一台 PC Server 或 PC 机作为监控管理服务器,安装 Tivoli Omegamon for Messaging,实现对 Message Broker 的监控。未来需要流程集成时,可以采用两个节点安装 WebSphere Process Server 组成 Cluster。
小结
本文从业务角度列举了航空公司商务体系建设中对 ESB 的典型需求举例,并介绍了航空公司 ESB 的总体方案、组件模型、接口设计、物理部署以及涉及到的 IBM 软件产品,介绍了如何利用 ESB 将呼叫中心、电子商务、常旅客、大客户、航班动态发布平台等应用系统进行高效整合,达到航班信息、旅客信息、客票销售信息等主要业务数据的共享,从而提升航空公司的客户服务水平。