APP下载

基于微服务架构的企业服务总线在银行系统集成中的应用

2020-09-10王世泽

中国新技术新产品 2020年13期
关键词:微服务去中心化

王世泽

摘  要:近年来,随着各金融公司线上业务的快速发展和日趋激烈的竞争压力,各金融领域企业都纷纷新建了很多业务系统,以此来应对技术与业务的挑战,由于业务系统之间的交互变得越来越频繁,但却存在信息共享能力差[1],信息集成不够深入等问题,数据传输的准确性和及时性往往也难以得到保证。因此,ESB企业级服务总线系统作为系统的交易枢纽,其高可用性决定了一个企业能否不间断地对外提供服务。该文结合目前广泛使用的微服务架构思想,提出去中心化的ESBX实践,构建了一种高可用的企业级服务总线系统,并详细描述了其应用架构及逻辑部署架构。

关键词:微服务;ESB;金融领域;去中心化

中图分类号: TP393             文献标志码:A

0 引言

随着公司业务不断扩展,特别是线上业务的拓展,对建立能更快速地响应市场变化、进行服务灵活便捷组合调整的IT架构的需求越来越急迫。因此,公司对原有系统进行边界划分,建立起多层次、条线化、松耦合的IT应用架构,简化接口和交易环节,使架构更加清晰,以此来应对快速变化的业务诉求和面向互联网流量大、来源广、峰值和信息安全诉求强烈的非功能诉求。微服务架构体系在扩展性、容错性以及日后基于容器技术的DevOps等方面具有优势,促使公司服务向微服务方向转变。微服务组件化、松耦合、自治和去中心化的优势背后,同样伴随着服务依赖复杂多变、调用链路长难以监控、入口信息安全实现复杂等问题。为应对以上问题,该公司在传统企业服务总线ESB思想上进行延伸和发展,研发基于微服务架构的企业服务总线,克服传统ESB过于集中的不足,侧重于服务治理和服务网关,集成传统SOA理念并融入微服务思想。

1 ESB(企业服务总线)

企业服务总线(Enterprise Service Bus,ESB) 是一个主要依赖XML消息交换的企业级消息系统。其可以消除不同应用之间的技术差异,让不同的应用服务器协调运作。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。

2 微服务

微服务架构和 SOA 架构非常类似,微服务架构特别强调“业务需要彻底的组件化及服务化”,将系统拆分为多个可以独立开发、设计、部署运行的模块。这些模块间通过服务化完成交互和集成。微服务的特征有4个。1)通过服务实现组件化 。2) 按业务能力来划分服务和开发团队。3)去中心化。4)基础设施自动化(DevOps、自动化部署)。

3 基于微服務的ESB扩展-ESBX

微服务架构体系下,异构环境逐渐减少,公司整体技术栈相对统一,ESB在异构环境中的优势逐渐降低,并且ESB的基本功能也决定了其固有的中心化特征,造成ESB系统很容易成为性能瓶颈以及热点服务。而微服务在开发过程中的易用性和普及型提升开发效率,因此在微服务服务注册和负载调用的基础上,引入ESB思想,并对其进行扩展,形成ESBX(Enterprise Service Bus expand)。

ESBX将报文校验、路由选择、信息扩展、安全管控功能、流量挡板和预警监控添加进微服务间的同步或异步调用,形成ESB在微服务体系下的新型企业服务总线思想。

4 ESBX的架构设计

4.1  ESBX需要解决的问题

4.1.1 严格的信息安全要求

为了更好地保证信息安全,隔离敏感核心数据,采用网络隔离技术,将网络划分为隔离区(Demilitarized Zone)简称DMZ区和内部服务区(Service Zone)简称SZ。然而,这样不可避免地会使服务接入变得更加复杂。各服务调用者在接入前,都需要满足安全要求,这样会造成各系统重复建设。

4.1.2 与日俱增的服务量

当服务数量级增多后,服务的提供和调用都成为巨大的挑战。因此,需要一个服务注册中心,为服务的发布和调用提供统一的平台,另外在服务接入前,应提供调用方和服务方的相关信息,避免建立不合理的调用关系。

4.1.3 统一监控平台的缺失

从细微的角度看,可以监控服务器的运行状态,通过告警及时发现异常。从整体角度看,可以分析服务的访问热度和响应能力,及时扩大规模或调整布局。

但无论是服务调用方还是提供方,对整个调用链路的信息进行采集、处理、统计和分析都是难以独立实现的。因为这不仅需要向链路中的各系统采集数据,而且一旦调用关系改变,数据采集方案也需要更改。即使是这样,由某系统独立实现的信息采集,也只能获得有限的、局部的调用数据,而对于企业级服务调用的风险预警和统计分析来说这样是不够的。因此,需要建立一个全司范围内的,集信息收集、统计、分析和展示功于一体的平台。

4.2 ESBX架构设计

ESBX平台以提升业务组织能力为原则,其根本目标是帮助业务系统在复杂的IT架构下,实现一种便捷、统一的服务调用方案,主要包含统一管理服务、实时监控服务、服务注册、统一接入服务、消费桩与服务桩功能,图1 为应用架构图。

5 ESBX建设实施

5.1 服务接入

针对不同的接入需求,平台提供了API和OpenAPI 2种接入方案。API模式是公司核心系统之间的调用,OpenAPI模式是公司互联网系统或公司外部系统与核心系统之间的调用。服务方和调用方只需要知道对方所处的网络区域(DMZ或SZ),而服务注册、安全认证和具体的网络连接都由ESBX平台实现。

OpenAPI调用模式:服务调用方在接入服务前,需要通过OAuth平台获取token。然后,通过token访问outer-server,它会对服务调用方或提供方的身份进行有效性验证,只有验证通过的服务,才会被允许接入。token由OAuth系统统一生成和管理,服务方无需搭建认证系统。

API模式:SZ内部服务相互之间调用,它通过在各个服务实例中植入stub模块,实现一种轻量、灵活的接入控制。

outer-server的作用是可以将内部API地址生成为对应的对外OpenAPI地址,供外部系统调用,也可以通过OpenAPI转发为API的具体地址。当调用方为外部时,需要通过向outer发起请求,并传入access_token等参数,实现将调用转发给服务方,最后通过outer将结果转发给调用方。

oauth-server为认证提供方,向客户端、用户提供认证和授权服务。

5.2 消费桩与服务桩stub

stub主要提供API调用(即点对点调用)的相关功能,例如服务注册、消费注册、授权管理、负载均衡和调用监控。

stub是一个JAR包,在服务开发期间引入,一同编译打包。stub将提供消费桩或服务桩的相关功能。该stub将依托Spring Cloud框架,扩展Ribbon负载均衡功能,提供消费桩的功能,对所有请求进行拦截以实现服务桩的相关功能。

5.3 数据加密

外部系统调用内部系统是由outer-server对外部请求进行密文接收,解密转发给内部系统,同时,将内部系统返回的报文加密发送给外部系统方,加密方式可在服务接入时设置,支持动态可调。

5.4 负载均衡和流量挡板

ESBX采用负载均衡机制,实现对服务方各实例上请求量的分流。在服务进行调用时,服务提供方的stub在拦截到请求后,将起到流量挡板的作用,防止针对资源的DoS攻击直接冲击服务系统。

5.5 服務注册与管理

服务注册管理admin为各业务系统提供了一个自服务化的管理平台。服务提供方只需要在admin管理平台上配置服务信息,即可完成服务注册。服务注册完成之后,可以根据需求选择发布到不同的网络区域,然后ESBX会为其匹配对应的接入方式(API或者OpenAPI),即可完成服务的发布。

ESBX会通过admin平台将服务的信息录入数据库,待接入服务启动后,注册中心向已有的服务推送变更信息,调用方可以从注册中心上获取服务编码。

5.6 实时监控

平台采用心跳检测机制,实现消费方对服务方系统状态的监测。监控平台monitor采集经过API或OpenAPI产生的调用信息,并为用户提供实时查询功能。

6 ESBX应用部署

图2为逻辑部署架构图,为了将ESBX的相关功能集成到各个业务系统中,要求调用双方都嵌入stub模块。管理中心以基础数据为依托,在注册中心上建立基础节点,当服务启动时,向注册中心上报自身信息,进行服务信息注册,注册中心将添加启动服务对应的实例信息,并将变更推送给已启动的实例,更新实例缓存信息,管理中心和监控中心的失效不会影响整个系统的功能,stub将让业务系统进入离线模式,依靠缓存信息进行服务调用。

注册中心至少需要一个三节点的ZooKeeper系统。各个服务通过HTTP协议进行通信,调用数据将由各stub异步上报给监控中心,用于进行数据统计。

7 结语

该文对基于微服务与ESB架构思想的ESBX进行了研究,提出了一种高可用服务总线系统的构建思路,在信息交互、集成、共享及维护等方面获得良好的效果,极大地提高了现有系统资源的利用率,提升了公司客户服务体验,以及业务产品开发效率和开发质量。

参考文献

[1]刘保汛,刘文杰.基于SOA 架构的ESB 在商业银行中的研究与实现[J].信息技术与信息化,2018(2):19-21.

猜你喜欢

微服务去中心化
一种去中心化的网络域名服务系统模型
微信公众平台在医院图书馆的应用现状调查
从单一模式系统架构往微服务架构迁移转化技术研究
“去中心化”电子商务背景下大学生网络创业前景分析