中老铁路互联网售票系统设计与应用

2024-03-15 10:15王雪峰
铁路计算机应用 2024年2期
关键词:购票老挝架构

王雪峰

(北京经纬信息技术有限公司,北京 100081)

中老(中国—老挝)铁路项目由中国和老挝两国政府合作推进,旨在促进两国经济合作和区域互联互通,是中国共建“一带一路”倡议与老挝“变陆锁国为陆联国”战略的对接项目,也是老挝第一条现代化铁路。针对中老铁路磨万(磨丁—万象南)段旅客购票问题,既有中老铁路客票系统已经实现了窗口售票和手持检票等功能,但老挝旅客只能到车站窗口购买车票,增加了旅客购票的时间成本和车站运营组织成本。为了进一步方便老挝旅客购票,在既有窗口售票基础上,亟需新建互联网手机售票功能,让老挝旅客足不出户,即可通过售票APP 轻松购票,提升中老铁路售票业务的信息化水平。

本文综合考虑老挝当地信息化水平和网络建设情况,同时借鉴了铁路12306 互联网售票系统建设的先进经验,设计中老铁路互联网售票系统,并从总体架构、逻辑架构等层面对该系统进行了全面剖析。通过分布式缓存及数据同步策略、基于消息队列的异步排队,以及基于钉钉机器人的消息通知机制等关键技术,充分验证该系统架构设计的可行性和可靠性,保障其在高并发购票场景下,能够平稳有序地处理用户购票请求。

1 系统架构

中老铁路互联网售票系统在充分借鉴中老铁路客票系统窗口售票子系统建设经验基础上[1],对核心区既有应用服务进行扩容,新增了互联网业务逻辑应用集群、互联网数据库;同时,在网络结构上新增互联网服务专区。

中老铁路互联网售票系统采用基于Spring Cloud和Spring Boot 的开源框架,集中式和分布式共存的技术架构体系;通过开源组件快速搭建项目结构、配置开发环境,使项目能够高效地持续集成,方便进行集成测试[2];采用开源数据库PostgreSQL,并配合数据库复制程序,实现数据库的相关读取操作和事务管理;同时,还采用了第三方开源组件和中间件产品,通过对日志和业务数据的采集和分析,实现对该系统运行状态的监控;通过优化安全防护策略,建立安全检测和数据加密机制,实现对该系统整体的安全风险评估,提升其可靠性和安全性。

1.1 总体架构

中老铁路互联网售票系统总体架构如图1 所示。

图1 中老铁路互联网售票系统总体架构

1.1.1 互联网接入区

用户在互联网接入区使用手机App、通过域名接入互联网专区。中老铁路互联网售票系统使用了运营商提供的互联网专线,保障数据传输速率和稳定性。同时,本系统在该区域通过与第三方银行系统、第三方短信服务商等外部系统进行数据交换,完成交易支付、退款、短信通知等业务功能。

1.1.2 互联网专区

在互联网专区搭建统一接入服务、流量清洗服务、互联网专区各应用集群、缓存集群、消息队列、配置管理中心等。采用旁路方式对接Web 应用防火墙(WAF,Web Application Firewall)流量清洗应用,可对客户端提交的业务数据请求进行筛选和过滤,保障内部应用服务的安全性。此外,在互联网专区搭建余票、交易、支付集群,用于处理用户发起的余票查询、订单提交、在线支付等购票业务请求。

1.1.3 核心票务区

在互联网售票核心区搭建应用程序编程接口(API,Application Programming Interface)网关1、业务逻辑应用集群、内容管理集群,以及互联网数据库。其中,API 网关1 用于接收和处理互联网专区的业务请求,再将请求转发至业务逻辑应用集群进行处理。

在既有的核心票务子系统安装车站窗口、应急售票、手持检票、维护管理等终端设备,搭建API网关2、核心业务微服务集群、核心交易数据库、营销数据库[3]。其中,API 网关2 为各售票渠道终端提供接口接入服务,核心业务微服务集群提供售票业务逻辑处理能力。

1.2 逻辑架构

以中老铁路互联网售票业务可持续、高质量发展为原则[4],设计了“六层次、两体系”的逻辑架构。6 个逻辑层级分别为硬件资源层、数据层、业务逻辑层、接口服务层、代理层和展示层;2 个基础保障体系由运营维护(简称:运维)监控体系和安全防护体系组成。中老铁路互联网售票系统逻辑架构如图2所示。

图2 中老铁路互联网售票系统逻辑架构

1.2.1 逻辑层级

(1)硬件资源层

通过使用超融合架构组成的虚拟化技术,将计算资源、存储资源、网络资源进行虚拟化,构建适应不同业务应用场景的资源池。基于共享资源池再虚拟化出满足业务需求的服务器资源,有利于中老铁路互联网售票系统及时处理大流量[5]、高并发的海量访问请求,为该系统提供更好的性能和可扩展性。采用虚拟化技术的设备资源主要包括服务器设备、网络设备、安全设备、存储设备和管理设备等。

(2)数据层

该层主要作用是存储核心数据资源,为业务逻辑层提供综合数据支撑。类型上包括关系型数据库、非关系型数据库、内存数据库等。数据库间采用数据复制方式进行数据同步。

(3)业务逻辑层

主要包括应用服务集群,为接口服务层提供核心业务逻辑处理功能。

(4)接口服务层

为各售票渠道和展示层提供数据接口服务。接口服务还通过消息中间件的处理程序向外主动请求互联网,与第三方支付接口、短信接口进行数据交换,完成订单支付、退款、短信通知等业务功能。此外,提供了缓存服务,用于提供余票查询服务。

(5)代理层

分为互联网与外网区,以及外网区与内网区2 层,外层代理的作用是对客户端的请求起到转发的作用,将服务接口映射到互联网供各销售渠道进行调用,同时构建WAF 流量清洗服务,并将部分网页资源进行静态化处理。内层代理的作用是将外网区的请求转发到内网区,内网区应用服务再对业务请求进行处理。

(6)展示层

为终端用户提供界面服务,展现形式主要包括App 应用界面和Web 网站界面。

1.2.2 基础保障体系

(1)运维监控体系

以实现稳定、高效、及时的运维为目标,研究切实可行的技术支持和运维保障体系[6]。从硬件设施保障、系统运维、网络运维、数据备份与恢复、日志收集分析、性能监控和故障排除、安全管理等几个维度,结合研发、集成测试、持续集成、持续部署等运维场景,为中老铁路互联网售票系统提供一体化、标准化的运维支撑能力。

(2)安全防护体系

以保护应用安全、网络安全、用户数据安全为目标,从认证与访问控制、数据加密和安全存储、应用安全管理、网络安全防护、安全培训与管理、外部风险管理等几个维度,构建符合中老两国信息安全规范的安全防护体系。结合终端安全加固、入侵检测和漏洞扫描、数据加密等技术手段,提升中老铁路互联网售票系统应用和数据资源的安全性。根据该系统建设的物理网络结构,将其划分为多个安全区域,各安全区域之间采用安全防护设备进行安全隔离和访问控制,实现对不同安全级别的资源和数据的管理和保护。对该系统日志建立安全审计机制,及时发现和处理安全事件,保障系统的安全和稳定。

2 系统功能

中老铁路互联网售票系统分为互联网售票App和互联网后台管理,功能架构如图3 所示。

(3)同一试验点同一作物同一试验类别播种垄数应一致。个别试验点垄距,垄长不一致,垄不直,还有出现楔子垄的现象。有的试验点步道是斜的,小区是平行四边形,可以用勾股定理来确定直角。

图3 中老铁路互联网售票系统功能架构

互联网售票App 名称为“LCR Ticket”,支持老挝文、中文和英文等3 种语言切换,兼顾旅客个人隐私安全的同时,支持注册、登录、余票查询、订票、支付、退改签、浏览客运资讯等功能,支持VISA、银联、微信、支付宝等在线支付渠道。互联网后台管理系统面向老中铁路公司运营人员提供互联售票业务运营管理服务,主要包括用户管理、订单销量统计、支付对账、收入统计审核、业务规则管理、窗口取票、运营分析、系统监控等功能。

3 关键技术

3.1 分布式缓存及数据同步策略

根据中老铁路互联网售票系统的应用场景,大量用户请求会集中在余票查询功能上,特别是在正点放票时间,会出现用户集中抢票的情况[7],因此,如何提升该系统的余票查询响应性能,是实现互联网售票的技术难点。

通过分析研究和综合评估,采用定时计算余票的方式[8],并将余票结果保存到数据库中,通过Java应用程序定时读取数据库中的余票信息[9],写入到分布式缓存服务中,当用户通过售票App 发起余票查询请求时,该系统会从缓存服务中获取数据,并返回给客户端进行展现。此外,对于订单数据、用户数据、基础数据则是采用数据库复制机制,将上述数据写入到消息中间件,消息中间件处理进程从消息中间件获取数据信息,通过应用程序将数据以Key-Value 形式写入到缓存服务中[10]。

3.2 基于消息队列的异步排队交易

异步排队下单模式对比同步下单模式在设计上要复杂很多,涉及消息处理进程和消息队列(MQ,Message Queue)的开发和配置。大量购票请求首选按不同车次分配到不同MQ 中,每个MQ 列具有多个处理进程,处理进程可根据应用服务(AS,Application Server)的处理效率,动态调节消息消费速度,既保证了中老铁路互联网售票系统数据库可平稳有序地处理用户购票请求,又避免出现高并发宕机的情况。异步排队交易逻辑架构如图4 所示。

图4 异步排队交易逻辑架构

采用异步排队下单模式的优点主要体现在以下几个方面。

(1)防止系统瞬时崩溃

当大量用户瞬时提交订票请求时,如果请求量超出了该系统的服务能力,就会出现交易拥堵。引入异步排队交易,可实现系统间解耦,从而可根据数据处理性能动态调节购票请求处理速度,可有效防止产生“雪崩”效应。

(2)优化下单交易流程

采用异步排队交易模式时,用户下单后,该系统会提示用户订票请求已提交;待处理用户订票请求后,主动向用户发送下单成功通知信息,从而有效减少下单用户的等待时间,提升用户购票体验。

(3)合理分配硬件资源

大并发购票场景一般出现在节假日等高峰时段,采用异步下单模式可合理分配硬件资源,保障该系统平稳度过售票高峰期,减少建设投资成本。

3.3 多渠道支付本地化适配

我国铁路12306 互联网售票系统电子支付功能在技术方面已相对成熟,但由于老挝信息化建设水平相对落后,只有中国银行、工商银行、老挝外贸银行(CEL)等几个支付渠道,并且在电子支付领域存在交易接口不完善、交易流程不统一的情况。为了使中老铁路互联网售票系统的支付功能具备更好的适应性,在其设计初期需要充分考虑多渠道支付本地化适配的问题。

本文在该系统架构设计阶段引入了适配器模式,针对不同银行和收单机构的第三方接口,根据接口定义的不同分别进行对接,但对于互联网售票系统的交易模块,会定义统一的支付、退款接口,以便在未来对接更多的支付渠道时,无须修改既有的交易接口。在对账模块中,根据不同支付渠道提供的对账文件分别进行技术对接,将各渠道对账结果统一展示;对于对账结果出现的偏差数据,分别调用不同渠道的退款接口进行退款操作,保障该系统交易的准确性。

3.4 基于钉钉机器人的监控消息通知机制

对于各类售票业务系统,一般只需要监控其硬件资源的运行状态,如CPU、内存、磁盘空间等,但若只关注硬件运行状态,在这些系统上线初期普遍会出现业务功能异常的情况。以往运维人员只能通过脚本命令登录这些系统后,在应用服务器上查看其输出的应用日志,十分低效且耗费人力成本。

为了提升中老铁路互联网售票系统运维效率,及时发现出现的各类异常问题,在其设计阶段新增了钉钉消息通知机制。当该系统运行出现异常时,及时对异常信息进行收集,根据异常错误类型对消息进行分类;将异常信息根据消息分类放入到不同的消息队列中;通过消息处理进程从队列中取出消息,通过请求互联网钉钉通知服务接口,将异常信息以固定模板形式发送到钉钉监控群组中。运维人员可及时发现异常信息,对异常和错误进行处置。

4 系统应用

4.1 应用效果

中老铁路互联网售票系统已于2023 年3 月15日正式上线运行,老挝旅客可通过“LCR Ticket”App,随时随地查询到最新的中老铁路客运余票、票价信息,可根据自身的个性化出行需求,选择出发地、目的地、出发时间等查询条件,方便快捷地筛选符合自己需求的车次,无须排队购票,节省了购票时间;当旅客乘车时,持购票时所使用的身份证件或护照,通过该系统生成的二维码进站乘车,也可到车站售票窗口换取纸质车票检票进站乘车。旅客还可通过“LCR Ticket”App 获取老挝铁路部门发布的最新客运资讯和出行信息,及时了解出行动态。“LCR Ticket”App 的售票和支付功能如图5 所示。

图5 “LCR Ticket”App 的售票和支付功能展示

4.2 效益分析

(1)社会效益

中老铁路开通运营一年多以来,旅客列车运行安全平稳,单日旅客发送量最高突破1 万人次,累计发送旅客超过200 万人次,得到了老挝国家社会各界的一致好评。

随着老挝国内信息化水平的不断提高,以及互联网用户的不断增多,老挝旅客对于互联网购票和在线支付的需求也日益迫切[11]。中老铁路互联网售票系统的正式上线运营,促使中老铁路的客运服务质量不断提高[12]。

(2)经济效益

中老铁路互联网售票系统自上线以来,运行平稳,售票App 的新注册用户数不断增多,注册用户总量已超过2 万人,日均售票量超过1 000 张。未来,随着分配到互联网销售渠道的票额不断增多,以及跨境国际列车的开通,互联网渠道的日均销售量将会不断突破新高,也会为老中铁路公司的客运经营创造更大的经济效益[13]。

5 结束语

本文从总体架构、逻辑架构、技术架构等维度,全面阐述了中老铁路互联网售票系统架构设计原则和思路,结合既有中老铁路客票系统的建设情况,借助主流开源技术和组件,打造了一套高性能、高可用、可扩展的在线售票系统。解决了在高并发下旅客实时查询余票和购票的难题,不仅提升了老挝旅客出行购票体验,还为老挝铁路管理部门提供了适应当地客运经营模式的车票销售渠道。随着该系统的不断优化和完善,将进一步提升中老铁路的客运服务质量和生产效率,助推中老铁路向数字化、网络化、服务化方向转型。

猜你喜欢
购票老挝架构
不同的购票方法
基于FPGA的RNN硬件加速架构
老挝肉牛输华实现突破
功能架构在电子电气架构开发中的应用和实践
朝发夕至 乘着火车去老挝
直击痛点的“候补购票”可多来一些
铁路候补购票服务扩大到全部列车
LSN DCI EVPN VxLAN组网架构研究及实现
一种基于FPGA+ARM架构的μPMU实现