1、58新技术新业务DOI:10.3969/j.issn.1006-6403.2023.02.014基于微服务架构的行李全流程跟踪系统设计与实现李剑彬张文娟随着民航局对行李全流程跟踪系统建设战略的提出,国内机场逐步开展了行李全流程跟踪系统的建设,根据业务需求以及相关项目建设经验,设计并实现了一套基于微服务架构的行李全流程跟踪系统,可以兼容单机场、机场集团和不同机场集团的多个中小机场使用场景,实现低成本、高可用性、高拓展性的旅客行李全流程跟踪管理需求,完成民航旅客托运行李跟踪大闭环,解决旅客痛点,全面提升国内机场托运行李服务质量。李剑彬就职于广州市弘宇科技有限公司,是行李全流程跟踪管理平台研制项目等
2、大项目的项目负责人。张文娟硕士毕业于西南交通大学通信与信息系统专业,现供职于中国电子科技集团第七研究所,高级工程师,目前的主要工作是研究物联网网络通信。关键词:行李跟踪 全流程 微服务架构 软件设计摘要1 引言行李全流程跟踪作为建设四型机场的重要组成部分,可以有效提高行李运行安全、降低行李差错率。2019 年,民航局提出“三步走”战略,2021 年底全国千万级机场间国内航线将实现行李全流程跟踪,2025年年底将实现国内航线全覆盖和国际航线有突破。2020 年 1 月,北京召开的全国民航工作会议,工作任务明确要求,“推广 RFID行李跟踪系统广泛使用、连接成网,逐步建成覆盖全国的民航行李跟踪系统
3、”。行李全流程跟踪系统,需要接入不同的系统或设备的节点数据,若采用传统的架构进行设计实现,可能会面临跨系统、跨平台数据接入问题,不能很好的接入外部数据源。另外,随着系统数据量的增长,以及行李全流程追踪外延的扩大,对系统的高可用性和拓展性要求越来越高,需要对业务逻辑进行分离,以适应高并发以及异构系统的交互要求,降低系统业务模块的耦合度。为了更好的适应行李全流程系统机场端、集团版和支线机场 SASS 服务的发展需要,满足民航局建设行李全流程跟踪系统的指示精神,以及国际航协 753 号决议中对行李的追踪和信息监控要求,本文将采用基于微服务架构来设计和实现行李全流程跟踪系统。59新技术新业务基于微服务
4、架构的行李全流程跟踪系统设计与实现2023.02 广东通信技术2 微服务架构微服务架构作为近几年的技术热点,是一种遵循高内聚、低耦合的软件开发架构,可以将系统的不同业务功能、业务需求,拆分为若干个支持独立部署和拓展的服务组件,这些服务可以通过不同的语言(Java、C#、Python 或 Go等)完成开发,服务之间可以采用轻量化通信机制暴露接口来实现通信,支持多种通信协议(RPC、HTTP REST或 AMQP 等),完成跨平台服务调用。与传统单体架构比较,微服务架构的优点主要有。(1)每个服务专注于特定的功能或业务需求,服务粒度可以很小;(2)不同服务可以采用不同的编程语言进行服务实现;(3)
5、不同服务支持独立开发、独立部署;(4)微服务架构易于进行需求拓展;(5)微服务架构易于进行流程编排。3 需求分析根据关于加快推进千万级机场旅客行李全流程跟踪系统机场端建设的通知的相关要求,千万级机场的行李全流程跟踪系统,需要满足值机、安检、分拣、装车/箱、装机、中转、到达等 7 个基本节点的数据采集要求。为提高机场行李处理效率、降低行李托运异常问题而出现的成本损耗,行李全流程跟踪系统主要基于行李全过程管控为出发点,采取多源异构数据采集解析等技术,结合行李托运过程中多种多样的监控设备,并通过数据采集/整合/监控/分析,达成旅客托运行李全方位追踪、业务高效运行的目的,从而实现机场行李托运业务降本增
6、效的最终目标。4 系统设计与实现本文将结合行李全流程跟踪系统的实际需求以及未来发展趋势,利用微服务架构组件化、独立部署、复杂度低、技术多元化等优势,充分考虑系统的高可用性和拓展性,结合高内聚、低耦合思想,对系统的总体架构、系统服务划分与功能设计等内容进行设计实现。系统采用基于Java的微服务架构实现,前后端分离,充分考虑当前主流技术发展趋势和实际业务应用需要,选用Spring Cloud和Spring Cloud Alibaba中较为适合的微服务应用框架,完成整体技术选型和总体架构搭建。后台基于 Spring Boot 进行开发,为 PC 端、移动端和小程序等提供接口服务;前端采用 H5+CS
7、S 实现,可根据需要适配Vue、Element UI 等前端框架。(1)应用展示层:系统采用前后端分离技术实现,可以通过对后台服务的组合调用,实现系统业务应用与交互需求。本系统页面功能及系统外部调用,均可以根据服务接口进行前端定制化开发,降低接口代码开发量,提高代码复用率及系统可拓展性。(2)数据服务层:包含微服务网关、各服务组件、服务治理与配置、服务监控和 DevOps 等内容。微服务网关采用Spring Clound Gateway框架实现,提供统一接入、协议适配、流量管理与容错、以及安全防护等功能,Web前端或其它应用,访问系统服务组件时,会通过访问 API网关进行数据传递,结合 JWT
8、 鉴权和 Ribbon 负载均衡等框架,保障服务接口的可靠性和安全性;各服务组件为系统前端、应用及对外提供服务支撑,支持集群拓展,内部整合 Swagger UI 框架,便于接口调用、调试;服务监4.1 系统总体架构本文设计实现的行李全流程跟踪系统采用五层架构设计,包含应用展示层、数据服务层、运维资源层、网络通信层和数据采集层,系统总体架构如图 1 所示。图 1 系统总体架构图60新技术 新业务新技术新业务(1)行李追踪服务,作为行李全流程跟踪系统的核心服务模块,主要功能模块包括航班保障、行李保障、旅客保障、不正常行李查询、综合监控、数据统计等,通过数据抽取、数据清洗、数据转换、数据存储和分析,
9、实现数据的多样性展示,展示形式包括图表、大屏、可视化看板、3D 看板等。(2)用户权限服务,主要用于控制各服务组件、功能模块、系统操作等内容的权限,涉及功能模块包括用户管理、权限管理、角色管理、服务授权及微服务网关接口控制等。(3)基础配置服务,主要用于管理系统基础数据信息管理,功能包括机场管理、航司管理、航站楼管理、机型管理、舱位管理、标记管理、系统管理、参数配置等。(4)设备管理服务,主要用于行李全流程跟踪系统所涉及的节点数据采集前端设备的管理,包含设备的台账、监控、记录、状态等功能模块。(5)日志服务,系统运行过程中,会产生多种类型的日志数据,例如操作日志、异常日志、接口日志、通信日志、
10、数据交互日志和系统其它日志记录,在本系统中,统一通过日志服务进行管理,功能包括日志展示、日志检索、日志清理、日志审计、日志溯源等。(6)消息服务,行李全流程跟踪过程中,会经过多个跟踪节点,涉及的工作场所多、范围大,需要具备统一的消息传递机制,本服务主要用于系统内外部的消息的传递、展示和管理,支持系统角色、系统用户之间的消息收发,涵盖 PC 端、手持智能终端,消息内容包含通知消息、任务、预警、告警、系统消息等内容。(7)数据推送服务,作为系统对外进行数据交互的服务组件,主要用于系统整体数据推送控制,包括推送规则定义、推送机制、推送频率、转发、接收等功能内容,是系统可增值服务模块。(8)数据采集服
11、务,行李全流程跟踪系统涉及的航 班、行李、行李状态等数据,主要来源于外部系统或采集设备,涉及系统对接、通信方式、通信协议差异性较大的问题,本系统设计通过统一的数据采集服务进行实现,支持通信方式、通信协议自定义,确保数据接入的便利性,并提供数据原始报文记录,便于进行问题排查、定位和处理。控、服务治理与配置,包含服务注册、服务发现、服务治理、熔断防护、链路追踪等内容,选用 Nacos、Sentinel、Zipkin等微服务框架,保证数据及服务组件的监控、管理;DevOps 包含构建工具 Maven、代码仓库 Git/SVN、持续集成与部署 Jenkins、K8S 等开发运维一体化相关内容,用于实现
12、系统持续集成、持续交付、持续部署。(3)运行资源层:包含系统运行所需的计算资源、存储资源、操作系统和配套软件及设施等内容,用于满足本系统正常运行所需结构化和非结构化数据存储、使用等要求。(4)网络通信层:为系统提供网络通信所需资源。(5)数据采集层:主要包含两类数据来源,即外部系统和采集设备。用于实现航班、行李和行李状态等系统基础和应用数据的采集,为行李全流程跟踪系统提供原始数据支持,是系统最为重要的内容之一。4.2 系统服务划分与功能设计行李全流程跟踪系统采用微服务架构设计实现,系统基于高内聚,低耦合的设计思想垂直切分几个独立的业务服务,包括行李追踪服务、用户权限服务、基础配置服务、设备管理
13、服务、日志服务、消息服务、数据推送服务和数据采集服务等,系统环境如图 2 所示。图 2 系统环境图61新技术新业务基于微服务架构的行李全流程跟踪系统设计与实现2023.02 广东通信技术针对不同的机场,每个环节可以进一步细分为一个或多个小节点,例如安检节点,可以细分为开始安检、完成安检等。本系统充分考虑跟踪节点细分问题,支持各环节多节点行李数据的跟踪。4.4 多源异构实现行李全流程跟踪系统实现旅客行李的全流程跟踪,满足值机、安检、分拣、装车/箱、装机、中转、到达等 7为了更好地确保各个微服务的独立性,本文划分的各个微服务模块,与应用层以及微服务之间的交互都是使用RESTFUL 风格,通过 HT
14、TP 协议进行的。并且,服务之间仅保留必需的调用,前端调用接口过程中,涉及服务之间业务关联的内容,前端能处理的,均由前端处理,例如,PC 端发送消息给具体的用户,由前端分别调用消息服务和用户权限服务,实现消息发送给具体用户;后台数据处理过程中,服务之间业务关联的内容,通过其它方式能处理的,均不进行服务之间的调用,例如,行李追踪服务产生消息给指定的角色,会先把消息写入数据表,由消息服务调用消息规则引擎,发送此类消息给指定角色。4.3 跟踪流程实现行李全流程跟踪系统实现旅客行李全流程跟踪,主要涉及行李出港和进港两个核心业务流程。如图 3 所示,行李出港流程中,本系统需完成值机、安检、分拣、装车/箱
15、、装机等环节的行李采集。图 3 行李出港流程图如图 4 所示,行李进港流程中,进港行李可分为中转和非中转行李,中转行李可使用手持或穿戴终端等方式完成信息采集;非中转行李可以通过固定式等设备完成行李信息采集。图 4 行李进港流程图个基本节点数据采集要求,依赖于外部源数据的提供,包括航班、行李的基础数据和各跟踪节点采集到的行李状态数据等。不同机场的数据来源方式、采集节点要求都存在一定差异,本文以常见的对接系统进行描述,包括信息集成系统、离港控制系统、安检信息系统、行李处理系统和航易行,以及手持式、穿戴式和固定式的行李识别数据采集设备,数据流向如图 5 所示。图 5 数据流向图来源于不同系统或设备的
16、原始数据,会统一经过数据采集服务进行处理,数据采集服务根据不同的数据来源及相应的接口协议,通过内部集成的规则引擎,对原始数据进行采集、解析、计算和存储等处理,形成结构化和非结构化数据,提供给其它微服务组件进行应用或二次加工,最终完成旅客行李全流程跟踪的应用需求,如图 6 所示。4.5 总体数据库实现系统总体数据库主要基于各个微服务使用需要,进行分库设计实现,主要划分为行李追踪、基础配置、消息、日志、用户权限和设备管理等数据库,如图 7 所示。系统数据库可兼容多种不同关系型数据库,例如Mysql、SQL Server。此处以 Mysql8.0 为例说明,数据库可采用一主一从或一主两从进行高可用设计,可根据现场实际环境需求,再次进行数据库水平拓展、垂直拓展,例如:数据库集群、分库分表等。数据库访问缓存使用 Redis,支持集群,如图 8 所示。62新技术 新业务新技术新业务4.6 系统部署实现本系统支持实体机、虚拟机及云平台等部署方式,兼容 Windows、CentOS 等操作系统,可以根据投运机场的大小、服务器资源、业务规模等因素,灵活部署。服务器资源充足的情况下,可参考图 9 所示的高