基于微服务架构的高铁Wi-Fi运营服务系统设计与实现
2018-07-10王雪峰阎志远翁湦元
王雪峰,阎志远,翁湦元
(中国铁道科学研究院集团有限公司,北京 100081)
高铁Wi-Fi运营服务系统主要目标是为旅客提供一个便捷高效、安全稳定的Wi-Fi上网环境,同时提供本地化的休闲娱乐服务,进一步提升旅客的出行体验。该系统由地面Wi-Fi服务子系统、列车Wi-Fi服务子系统两部分组成。在地面集中式机房,使用虚拟化技术搭建了云服务平台,采用集群方式进行部署。每列车安装一个车载中心服务器,每节车厢搭载一个车载单车服务器和两个双频AP。旅客终端连接到车载AP发射的无线热点后,即可通过网页或手机APP浏览本地内容和视频资源,当用户完成注册和登录认证后,可以享受便捷的上网服务。
1 需求分析
1.1 功能需求
旅客在列车上可以通过手机、PAD、笔记本电脑等设备接入高铁Wi-Fi运营服务系统,在行程中可以查看列车时刻表、正晚点信息、检票口信息等,同时可以管理自己的当前和历史行程。在行李较多或身体不便时,预订目的地车站的小红帽、行李搬运服务,方便旅客进出站。在车上预订餐饮服务、VIP定制服务、约车、拼车服务,并可以对其服务进行评价,促进商品与服务质量的提升。
通过高铁Wi-Fi运营服务系统提供的休闲服务可以满足旅客在乘车过程中的文化娱乐消费,如:旅途朋友圈、旅途见闻分享、新闻资讯、高铁影院、应用下载、游戏娱乐、电子书籍阅读、旅游产品和景点推介等,丰富旅客的旅途生活。
旅客通过购买上述产品和服务、以及在线时长获得相应的积分,当积分累积到一定数量后,可以兑换相应的产品和服务。
1.2 非功能性需求
(1)可扩展性
高铁Wi-Fi运营服务系统支持各种接口协议,使系统具有高度灵活性和良好的可扩展性。支持多种硬件设备和网络系统的接入或输出。具有与其他相关信息系统进行数据交换和数据共享的能力。
系统方便添加扩展新功能,扩展后新旧系统之间具有良好的集成性,仍能满足业务要求的性能和可靠性。采用微服务架构设计,系统某个服务负载饱和时,能支持快速进行水平和垂直扩展。
(2)易用性
高铁Wi-Fi运营服务系统用户界面应采用简洁易用的风格、用户交互体验良好,操作时给用户合适的提示信息,尽量为用户使用提供方便。
当车地间的网络中断后,系统能自动检测网络状况,并为用户进行友好提示。
2 问题分析和关键技术
2.1 问题分析
高铁Wi-Fi运营服务系统的地面集中平台包含十几个业务子系统,采用单体式架构模式,即将程序的所有模块打包成单一应用,每个应用是最小的交付部署单元,应用部署后运行在同一进程中。单体应用的另一个好处是易于部署,只需把应用复制到服务器端,通过负载均衡器将请求转发到后台的多个应用即可实现扩展。
但随着业务和运营需求的不断迭代,这种方法有很大的局限性,代码量越来越大,结构也变得越来越复杂。致使代码难于维护,其中,运营管理子系统先后由不同开发人员对代码进行修改,以至于单个开发者添加或修改新功能时变得异常困难。单体应用降低了开发速度,需要花费很长时间重启应用,效率受到很大影响。此外,单体应用可靠性较低。运营管理子系统所有模块均运行在一个进程中,当任何一个模块出现异常时,都会影响到整个应用运行。所以对高铁Wi-Fi运营服务系统各地面平台子系统的微服务化改造变得势在必行。
2.2 关键技术
微服务是一个大型应用,由一个或多个微服务构成。各微服务可单独部署,服务之间松耦合[1]。各服务可伸缩和扩展,服务定义了明确的边界,不同服务间甚至可使用不同编程语言来实现。
与传统的单体架构相比,微服务架构有以下优点:(1)通过分解单体应用为多个服务解决了复杂性问题。每个服务都有一个消息驱动程序来定义。微服务模式给采用单体应用编码方式很难实现的功能提供了模块化解决方案,使得单个服务变得易于开发、维护和理解[2]。(2)微服务架构中每个微服务都可以独立部署。开发者无需协调其它服务部署对该服务的影响。这种方式的好处是可实现应用的快速部署。同时也使微服务架构持续部署成为可能。(3)微服务架构可使每个服务独立扩展。可根据各服务需求访问量动态调整部署规模,合理地分配硬件资源。但单体应用的扩展就只能将整个应用统一部署,此种方式缺点是对于处理业务需求规模不大的模块也会被部署成多个实例,进而造成硬件资源的浪费[3]。
3 系统总体架构设计
3.1 逻辑架构设计
高铁Wi-Fi运营服务系统的逻辑架构采用分层架构设计模式,系统逻辑结构分为软件即服务(SAAS)平台层、平台即服务(PAAS)平台层、基础设施即服务(IAAS)平台层,其中,SAAS平台层又分为业务服务层、应用展示层、接入层3部分。本文微服务架构设计主要是针对业务服务层,重新对已有的服务进行拆分,为应用展示层提供接口支持。系统逻辑架构如图1所示。
(1)接入层
接入层指直接面向用户连接或访问的部分。包括Web接入服务、接口服务、静态资源服务。Web接入服务为终端提供了HTML 5页面请求接入和分发功能。接口服务又分为终端APP应用接口和第三方应用接口服务。静态资源服务提供了图片、CSS等资源文件的访问功能。
(2)应用展示层
应用展示层主要包括所有和用户直接交互的界面和接口,以及针对不同的用户终端,提供了不同的展现形式。
(3)业务服务层
图1 系统逻辑架构图
业务服务层是整个系统的核心,与业务需求相关。微服务主要是针对业务服务层进行的改造,将不同业务类型进行拆分,使业务能够快速实现,而服务的改变并不会影响到业务,这样系统应用也会更加稳定。
(4)基础服务层
基础服务层提供了平台级的公共服务,包括缓存服务、数据同步服务、分布式文件存储服务等。
(5)基础设施层
基础设施层包括硬件服务器、操作系统、网络、以及数据库等底层资源。采用了虚拟化技术,将各种资源进行整合,为上层服务提供了最基本的资源保障[4]。
3.2 微服务架构设计
采用微服务架构,可根据不同业务类型,系统被拆分成多个相对独立的模块,所以合理划分系统模块很重要。由于高铁Wi-Fi运营业务相对复杂,系统可划分为用户中心、消息中心、列车管理、内容展示、广告服务、用户积分、运营管理、资产管理、数据采集、数据下发、内容维护等微服务,微服务间通过API接口关联,通信协议一般使用HTTP,数据格式为JSON。微服务架构如图2所示。
图2 系统微服务架构图
当客户端向应用系统发起请求时,由于微服务架构包含多个应用服务,完成一次业务操作需要发起多个HTTP请求,这会造成应用吞吐量下降,在高延迟的网络环境下会影响用户的操作体验。因此,不同于单体应用,微服务架构通过添加API网关对请求统一管控[5]。
API网关负责为终端用户提供服务接口,将客户端的请求转换为一组内部服务进行调用。此外,API网关还可减小客户端与微服务的依赖性,服务器升级将不会影响客户端。API网关可单独开发,团队负责开发、测试、部署、维护、扩展和升级。微服务通过API网关对外提供服务[6]。
4 微服务架构实现
微服务架构的服务注册方式有两种:服务端注册和客户端注册[7]。这两种方式都需要通过注册中心提供注册信息的分布式管理。当应用服务上线时,服务提供者将信息注册到注册中心。服务调用者通过注册中心寻址,根据负载均衡算法找到相应的服务。当服务下线时, 注册中心也会给客户端发送通知。如图3和图4所示。
图3 服务端注册
图4 客户端注册
微服务的注册方式是双向的,从微服务架构图可以看出,当用户中心、广告服务、内容展示等应用服务启动时,会主动到服务端注册。这样业务请求就会根据服务注册信息找到相应的服务接口进行调用。当服务端发现长时间某个应用服务未注册时,会主动给这个客户端应用发送注册请求,如果该服务是可用的,那么服务端也会自动完成该服务的注册[8]。
5 结束语
截止2017年11月底,高铁Wi-Fi运营服务系统已在“京沪线”、“京津线”、“京广线”的40组高铁列车上为广大旅客提供了便捷的上网服务。目前,日均新注册用户数约6 000人,注册用户总量达到了50多万人。系统运行平稳,得到了铁路工作者和广大旅客的一致好评。验证了微服务架构在高铁Wi-Fi运营服务系统应用中的可行性和先进性。随着微服务架构的不断演进,以及系统功能的不断完善,高铁Wi-Fi运营服务系统在提升铁路客运服务质量方面发挥了重要作用。
[1] 王 磊.微服务架构与实践[M].北京:电子工业出版社,2016.
[2] 崔 蔚,李春阳,刘 迪,等.面向微服务的统一应用开发平台[J].电力信息与通信技术,2016(9):12-17.
[3] 李博文,刘鸿沈,裴延兵,等.微服务架构在企业信息化建设平台中的应用[J].信息与电脑:理论版,2017(11):157-160.
[4] 朱建生,王明哲,杨立鹏,等.12306互联网售票系统的架构优化及演进[J].铁路计算机应用,2015,24(11):1-4.
[5] 李苏璇.基于微服务架构的SaaS应用构建方法研究[D].广州:华南理工大学,2016.
[6] 胡平芳.面向服务架构的系统研究[J].软件导刊,2010(3):21-23.
[7] 郭 栋,王 伟,曾国荪.一种基于微服务架构的新型云件PaaS平台[J].信息网络安全,2015(11):15-20.
[8] 张 晶,黄小锋.一种基于微服务的应用框架[J].计算机系统应用,2016,25(9):265-270.