开发测试
DEVELOPMENT
分布式消息中间件应用场景及建设设想中国光大银行信息科技部 金凤华
随着微服务、分布式应用在银行业中的日益广泛使用,系统从庞大的单体应用逐渐分解成多个轻量级应用或服务。单体系统拆分后,优点是开发和运维变得更敏捷、细化,迭代速度更快,能够更好地服务于业务发展。但系统拆分也引发了新的问题,早期单体应用中,模块间的通信通常在进程内、主机内发生,这样的通信方式易于实现。但变成分布式应用后,通信则变成进程间,甚至跨主机的通信。为了解决分布式应用场景下的进程间、主机间的通信问题,消息中间件逐渐由传统的对外(人民银行、税务总局等)通信组件变成企业内部系统、服务间的通信组件。随着消息中间件(Message Oriented Middleware,MOM)使用数量的增加,各系统独立维护自己的消息平台,运维成本自然水涨船高,分布式消息中间件平台的建设需求亦应运而生。本文以作者的前期调研为基础,研究分析了分布式消息中间件平台的应用场景及建设设想。
一、消息中间件的定义
消息中间件即面向消息的中间件,其核心在于为系统、服务提供消息发送、存储和消费的功能。典型的
商业消息中间件包括IBM MQ、Tuxed/Q和TongLink Q 等。相对于商业产品,开源消息中间件产品则种类更多,如Active MQ、Rabbit MQ、Kafka、Rocket MQ 和Zero MQ等。而分布式消息中间件则是多个MOM 实例构成的分布式系统。典型的消息中间件模型如图1所示。
二、消息中间件的适用场景
1. 业务解耦
随着银行业务发展,单体系统变得日益庞大、系统间的交互也相应增多,业务间耦合度逐渐提升,导致的结果是业务间关联影响度高、敏捷开发难以实现以及运维管理复杂度高。此时,单体应用的拆分需求日渐迫切,系统拆分后,原有单进程内部的交互则衍变成进程间、系统间的交互。WebService、Restful和RPC等都提供了进程间的交互方法,但多以同步为主,此时又会出现级联影响的问题,即后端系统问题会扩散至前段,引发前端系统故障,后端单点故障影响最终会被放大。借助消息平台,使业务间交互最终异步化,降低级联影响,最终实现业务间的彻底解耦。
生产系统
A
SDK SDK 消费系统
A
消费系统
B
消费系统
C
生产系统
B
分布式和微服务的关系
图1  典型的消息中间件模型
64FINANCIAL COMPUTER OF CHINA