2024年4月25日发(作者:)

Technology Study

技术研究

DCW

民航旅客服务系统统一接口网关设计与实现

林乐健,王映彤,孙薇薇,郭 杰

(中国民航信息网络股份有限公司,北京 101318)

摘要:设计并实现了民航旅客服务系统的统一接口网关,提出统一网关建设的整体架构、核心模块的设计关注点、以

及具体的实现机制。通过灰度发布、熔断降级、资源池隔离等技术的应用,实现了不停机、高并发的核心网关模块,并在

实际生产环境中通过了亿级访问量对统一网关进行的实际检验。

关键词:民航旅客服务系统;统一网关;接口服务

doi:10.3969/.1672-7274.2020.09.004

中图分类号:TN915.85,TP3 文献标示码:A 文章编码:1672-7274(2020)09-0013-03

Design and Implementation of Universal API Gateway in Aviation

Passenger Service System

LIN Lejian, WANG Yingtong, SUN Weiwei, GUO Jie

(TravelSky Technology Co., Ltd., Beijing 101318, China)

Abstract

:

The universal API gateway of the Civil Aviation Passenger Service System is designed and implemented in

this paper. High level architecture, design concerns of the core modules, and specific implementation mechanism of universal

API gateway are also presented. Through the application of gray-scale release, circuit breaker auto degradation, resource

pool isolation and other technologies, API gateway can provide non-stop and high concurrency capability, and process up to

hundreds of million of concurrent API calls in the actual production environment.

Keywords

:

civil aviation passenger service system; universal API gateway; API service

0 引言

随着电子客票的出现、手机移动应用的普及和航空

公司数字化转型的不断推进,航空公司与旅客之间的距

离越来越近

[1]

。在旅客享受便捷服务的背后,支撑着这

些变化的是民航旅客服务系统的接口服务开放化能力的

改进和提升。旅客服务系统依托于信息技术,是高并发

实时交易系统,具有旅客服务主业务链条长、相关参与

方数量多、安全风险等级高的特点,涉及从航空产品的

顶层设计到末端接触点服务的全流程和全生命周期

[2]

在旅客服务系统内部包含着若干核心软件,分别对

航班管理、预订销售、机场服务、票证结算等业务提供

服务,这些核心软件最终通过接口(API)对外形成了

不同客户的解决方案

[1-2]

。随着系统在不同技术革新平台

的升级,旅客服务系统在更新换代阶段既包含了大型主

机平台、开放平台技术,又包括了云平台微服务

[3-5]

。在

系统建设的过程中,存在以下问题:一是核心系统内部

结构复杂,主机、开发应用并存,有着不同的连接技术,

导致系统边缘的接口服务软件需要维护多种连接方式,

不仅增加了接口服务软件的建设难度,而且在核心系统

升级中需要前后台多方协调,不能做到快速透明的迁移;

二是对外接口是随着外部用户接入的需求逐渐发展起来

的,长期缺少统一的规划,导致不同的接口服务颗粒度

不一致、没有完全覆盖旅客服务系统的能力,同时对外

的技术标准和运维等级等也各有不同。

为了解决上述问题,本文提出了一种在旅客服务系

统中统一接口网关设计和实现,通过建立一套统一技术

标准的、高性能接入的接口服务体系,封装旅客服务系

统的全面功能,屏蔽核心软件在功能的差异,为前端各

个应用提供统一的接入服务,减少前后台的互相影响,

全面提升旅客服务系统的服务能力。

1 整体设计

旅客服务系统因为其自身行业特点,通用的微服务

网关

[6-8]

并不适用,主要原因为旅客服务系统统一网关

在稳定性、隔离性和安全性上有更高的要求,另外需要

兼顾多种后台软件现状,支持多种连接适配,提供统一

的报文转换,因此无法完全实现基于云化部署的模式。

统一接入网关在设计上包含有认证中心、服务接入

模块、接口应用模块、配置中心、服务运营监控模块、

作者简介:林乐健(1978-) ,男,汉族,吉林公主岭人,工程师,硕士,研究方向为服务引擎与智能化应用。

王映彤(1977-),男,汉族,北京人,工程师,硕士,研究方向为民航信息化。

孙薇薇(1981-),女,汉族,辽宁沈阳人,工程师,硕士,研究方向为服务引擎与智能化应用。

郭 杰(1986-),男,汉族,河北阳原人,工程师,硕士,研究方向为中间件与云计算架构。

2020.09

数字通信世界

13

技术

IGITCW

研究

Technology Study

服务门户网站六个部分组成。在功能上包括接入管理、

用户认证、访问控制、流量控制、接口格式转换、服务

熔断降级管理、灰度发布分流、后台连接适配、应用监控、

配置更新等核心功能。

图1 系统结构图

其中,认证中心需要提供不同类型的用户认证,包

括图形化前端用户、应用系统用户,并对不同类型的用

户提供相应的用户鉴权和授权功能。图形化前端用户需

要支持用户名+动态口令Token的认证方式,应用系统

用户采用双方约定的密钥串认证。在认证信息中,除了

用户名称以外还需要包含前端应用软件AppKey。对于

授权,统一使用基于角色的访问控制模型,能够能够用

户的角色进行接口授权。

服务接入模块通过标准HTTP协议对外提供接入,

报文采用结构化数据,同时支持XML和JSON格式,

重点是能够支持大容量接入支持高并发访问,同时支持

灵活的灰度发布策略,支持不停机更新配置。

接口应用模块需要提供各种后台链路适配器,按接

口进行资源分配和管理,支持根据响应时间和访问量自

动进行服务降级,保护好后台服务总量不超过警戒水位

线,支持熔断管理,一旦后台模块出现停机更新,可手

工激活拦截切断访问流量。

配置中心通过图形化管理界面实现对服务接入模块

和接口应用模块进行配置更新,支持多个部署集群环境

的配置,能够动态调整各个接口的资源配置,调整投产

的灰度更新策略。

服务运营监控模块需要能够根据接口访问情况,通

过错误日志中的关键字,以一定的报警策略将网关中的

异常通过短信形式通知值班人员;另外能够根据实时推

送的消息信息通过运营监控平台,查看用户的调用情况。

服务门户网站包括接口的定义管理工具、接口使用

文档、接口配置申请、接口故障申诉等功能。

整个统一网关的核心设计中特别需要注意的就是接

口访问隔离。隔离既包含物理隔离也包括逻辑隔离,物

理隔离要求配置中心能够管理多个集群的配置,逻辑隔

离就是在一套部署环境中能够实现接口之间的影响最小

化。一个后台软件提供了多个接口,但是各个接口访问

量分布不均,一旦访问量较大的接口访问量再次出现激

14

DIGITCW

2020.09

增,可能占用其他访问量较小的接口资源,使得访问量

较小的接口成功率收到严重影响,或者个别接口响应时

间较长,占用资源较多,接口出现排队堆积,会占用大

量的现有资源导致其他接口资源被侵占。在关键实现中

会介绍具体隔离的实现机制。

旅客服务系统中的接口定义是一个严谨的过程,统

一网关负责接口的全生命周期管理,同时也要确保所有

接口的格式定义和字段定义严谨并且符合行业规范。

2 关键实现

根据系统设计方案,旅客服务系统的统一网关中服

务接入模块和接口应用模块负责对外提供高可用、高性

能的服务。下面对这两个模块中的关键技术实现进行描

述,其他模块都采用J2EE架构实现,和服务接入模块

和接口应用模块之间通过内部接口。

2.1 服务接入模块实现

图2 服务接入处理流

服务接入模块以HTTP/HTTPS的协议对外提供服

务,通过XML/JSON方式进行业务数据的传输,通过二

次插件开发实现请求校验、用户认证、访问控制、并发

限流、灰度转发、主备健康检查请求。服务接入模块以

Nginx作为基础框架,Nginx作为高并发的多进程的应用,

通过添加OpenResty增强,可以用Lua实现了快速提供

功能扩展的能力。

第一步IP白名单:直接读取请求中的IP地址信息,

进行校验。

第二步请求字段校验:从URL信息和HTTP头信息

获取认证参数,进行解析和校验,排除不正确的请求。

第三步用户认证:对接认证中心实现用户认证。为

了避免海量请求冲击认证中心,通过进程内缓存、操作

系统共享内存、集中式KV内存数据库,通过多级缓存

命中的方式提升命中率,再加上非阻塞的进程锁合并多

次请求调用,解决了缓存失效风暴,减少极热访问的缓

存数据失效隐患。

第四步访问控制:针对认证后得到的角色,获取对

应的可用接口列表,进而判断接口是否被授权。

第五步并发控制:针对常规的漏桶和令牌桶的限速

方式无法适用于民航领域查询量存在瞬时突变的情况,

采用了对并发连接数方式,按照比峰值访问量上浮一定

比例的动态方式对并发限制,还支持按照用户限流、按

接口限制等多种维度限制并发;实现限流和限速方案。

第六步灰度转发:将后台接口应用服务实例进行逻

辑分组,提供按接口转发对应逻辑分组,支持流量排空,

支持访问分流,同时配合后面的健康检查模块,避免分

流到故障节点。一旦某次转发结果失败,提供进行补偿

操作,向其他健康节点进行再次转发。一旦因为个别接

口访问量(例如双11查询航班流量徒增)增大,后台接

口应用服务实例出现资源紧张,可以通过新增逻辑分组,

实现定向扩容。

第七步主被动健康检查:通过定期轮流后端应用节

点,实现主动收集健康信息,根据HTTP的状态码计数,

被动更新健康报告。另外后端接口应用服务实例在重启

后,存在端口可用的情况下,业务还在加载中的情况,

提供单独的健康检查探针。

2.2 接口应用模块实现

接口应用模块构建在J2EE容器上,通过Spring

MVC作为基础框架,结合MyBatis实现对异步处理、熔

断降级、资源池调度。JAVA技术在企业应用中广泛使用,

开发生态社区活跃,有众多开源项目可以参考。

第一步异步处理:利用非阻塞IO技术和异步

Servlet技术,将前面服务接入模块中发送过来的同步请

求转换成内部异步处理方式,增加系统的吞吐能力。同

时在异步收发消息方面,大量采用线程池技术,避免出

现接口之间相关影响。

第二步熔断降级:常规的熔断是基于平均响应时间,

一旦出现接口响应时间超过平均响应时间,就对后续请

求熔断一定时间。这种方式不适用民航业务,在民航业

务中,处理单个旅客预订和处理团队旅客预订消耗的时

间不同。这里采用的是手工熔断方式,一旦后端核心软

件出现停机才进行熔断,最大限度保证旅客服务体验。

降级处理,采用信号量的计数桶方式,利用响应式编程

能力统计报文的状态信息,实现按阈值进行降级处理。

第三步资源池调度:接口应用模块上针对不同接口

划分的不同资源池,接口访问通过对应的资源池获取系

统资源进行后台访问适配。资源池定义分成两种,一种

是基于线程池技术,另外一种是基于信号量的,线程池

受服务器的性能限制,适用于异步回调方式调用的后台

链路适配器,信号量占用的资源更少适合于同步调用的

后台链路适配器。

第四步业务追踪能力:接口应用模块通过Kafka实

时将请求的处理过程推送到监控系统,通过ELK准确监

Technology Study

技术研究

DCW

图3 资源管理模式

控系统的多个维度运行情况,能够准实时的获取接口正

常和异常访问情况。

3 应用实践

旅客服务系统的统一网关,采用多机负载均衡接

入,服务接入模块和接口应用模块都以实例的方式部署

在Linux虚拟化设备上。因为统一网关主要的性能瓶颈

为网络资源的开销,另外在报文格式转换上会消耗一定

的CPU和内存资源。通过压力测试,在8CPU/16G的

RedHat Linux 7.4系统上,能够支持4,000个客户连接

接入,平均响应时间在50毫秒以内,获得不错的效果。

在实际生产环境中,统一网关的访问量突破亿次调用量。

通过实施统一网关建设,民航旅客服务系统实现接口调

用模式对外统一,发布了上千个核心接口,发布了接口

白皮书,完成了民航旅客服务系统接口“供给侧”改革。

4 结束语

通过在民航旅客服务系统内部建设统一接口网关,

实现在核心系统边缘进行接口全面覆盖,实现了内外部

调用关系的解耦,并按照统一的格式定义实现对对外接

口服务的可度量可量化。在系统架构上,通过新技术的

广泛使用,以高可用、高性能、安全可靠为目标,实现

了民航服务能力的提升。

参考文献

[1] 崔 志雄.中国航信数字化转型进行时[J].企业管理,2020(6):105-107.

[2] 梁 海峰.民航旅客服务系统交易模型及关键技术研究[J].电子测试,2017

(22):80-83.

[3] 田 丰,面向高并发服务请求的负载均衡技术研究[J].中国民航大学学报,

2015(5):47-50.

[4] 丁 建立.面向复杂民航业务的中间件架构设计与实现[J].计算机工程与设

计,2016,37(5):1367-1374.

[5] 彭明田.基于云计算的民航公共信息服务平台[J].计算机技术与发展,

2017(2):139-142.

[6] 廖俊杰.微服务API网关的设计及应用[J].自动化技术与应用,2019(8):

85-88.

[7] 庄 夏.API网关架构设计实例[J].信息系统工程,2018(5):99-100.

[8] 赵 毅.恒丰银行分布式核心系统-API网关技术原型落地实践[J].中国金

融电脑,2017(4):48-55.

2020.09

数字通信世界

15