互联网售票中的海量请求处理技术研究

2015-06-28 14:52杨立鹏王富章梅巧玲朱建军
铁路计算机应用 2015年7期
关键词:购票海量铁路

杨立鹏,王富章,梅巧玲,朱建军

(中国铁道科学研究院,北京 100081)

互联网售票中的海量请求处理技术研究

杨立鹏,王富章,梅巧玲,朱建军

(中国铁道科学研究院,北京 100081)

铁路互联网售票已成为售票的主要渠道之一。本文介绍了铁路互联网售票系统的发展历程及特点,分析了互联网应对海量请求的常用技术,进一步介绍了铁路互联网售票系统在应对海量请求所进行的优化及所取得的成效。

铁路互联网售票;12306网站;海量请求处理

铁路互联网售票系统(以下简称:互联网售票系统)实现了旅客在网上自助办理购票、改签、退票等业务,同时提供短信通知服务、网银支付服务、电子客票服务、窗口配套服务、车站检票服务、列车验票服务、投诉及咨询服务[1]。相比于其他电子商务系统,铁路互联网售票系统面临着更加复杂的情况。

(1)业务规则复杂。与普通电商的静态库存相比,互联网售票系统每发售一张车票,均会根据预先设置的发售策略对该车次所有停靠站两两组合之间的剩余席位数量进行调整,存在较大的计算量。

(2)交易型系统,对事务要求强一致性。与门户网站及其他电商相比,互联网售票系统90%以上请求均为动态请求,处理复杂度更高。部分电商在库存处理上可允许进行一定的超售,互联网售票系统对事务要求严格,不允许出现此情况,对并发处理能力提出了更高要求。

(3)多维业务访问需求。铁路互联网售票系统并不是孤立存在的电商平台,其需要与铁路客运线下相关业务进行无缝结合。互联网发售的车票,需满足旅客持身份证取票或闸机进站等需求。线下业务的相关操作,也需要实时反馈至互联网售票系统。

(4)系统访问峰谷压力差异巨大。目前铁路运能仍严重不足,车票为稀缺资源,同时也为刚性需求,业务上存在访问高度集中的秒杀行为。

1 互联网应对海量请求的常用技术

针对海量请求,不同行业不同企业不同业务采用了不同的解决方案。但大型电商、门户网站解决思路均应涉及到以下几个概念。

1.1 CDN加速

内容分发网络(CDN,Content Delivery Network),是构筑在现有的互联网基础上的一种先进的流量分配网络。结合缓存技术可将源站内容分发至全国所有节点,通过先进的内容智能路由技术,在互联网用户访问网站时,将请求自动指向到分布于各地的离用户最近的缓存服务器上直接访问,缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性。

1.2 负载均衡

负载均衡是一种动态均衡技术,通过分析数据包,掌握网络中的数据流量状况,把任务按指定算法策略合理均衡地分配出去。这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。可将负载压力根据某种算法合理分配到集群中的每一台计算机上,从而提高系统的服务能力,达到高可靠性目的。

1.3 数据库拆分

随着数据库事务量的大幅增长和数据库体积的增大,数据层的大小和事务规模呈线性增长,响应时间往往呈对数增长。需要采取高扩展性的方法,用以提高数据库的吞吐和整体性能。

数据库拆分即将一个大的数据库,跨服务器分解成许多更小的数据库。可降低对CPU、内存、磁盘的竞争,解决性能瓶颈。同时拆分后数据库更易于管理、数据库速度更快、降低成本的优点。

2 铁路互联网售票系统应对海量请求策略

互联网售票系统在设计研发过程中,全面吸纳国内外知名网站的技术经验,针对铁路售票业务复杂、峰谷压力差异巨大等特点,提出了一系列的模型、理论和方法,综合运用缓存、虚拟化、云计算、大数据、数据切片、流量控制、信息安全防护等技术,保障在超大规模并发的压力下安全、平稳、准确、高效运行。部分解决策略如下。

2.1 交易排队机制

春运售票高峰时网站压力近乎日常售票的百倍,如按照春运高峰需求进行资源配置,将造成日常资源闲置。为保证在一定资源情况下稳定运行,同时旅客具有良好的用户体验,互联网售票系统研究实现了交易排队机制,通过该架构对旅客发起的超高并发购票请求进行缓冲,保证对核心数据库请求压力可控。异步化模块首先将接收到的购票请求根据相应算法放入队列集群和高速缓存中,队列设计考虑不同资源间隔离,减少用户的等待,细化队列划分粒度,以铁路局负载中心为基本单位,按日进行排队,保证了公平公正的处理原则。处理模块采用多线程模式进行设计,其中一个线程对后台服务负载进行监控,根据负载情况对处理能力进行调度,当后台所有处理资源繁忙时,处理模块将自动堵塞,避免后台服务过载;当后台具有空闲资源时,处理模块将自动唤醒,立刻从队列中获取购票请求进行处理;当某铁路局中心的购票请求处理异常缓慢时,处理模块将自动降低对该铁路局中心请求所在队列的处理速度,避免资源的长时间占用,达到处理能力最大化,具有智能化、自动化的特点。购票请求处理完成后,将自动回写处理状态到高速缓存。旅客在整个处理过程中可随时查询请求的处理状态。通过异步化的处理,使得系统接收应对旅客并发请求的能力得到了质的提升,提高了系统的稳定性和高可用性,也极大改善了用户的购票体验。

2.2 分布式计算余票

互联网渠道发售的车票目前已占到全铁路售票量的50%以上,远超窗口、代售点等传统售票渠道的客票发售量。用户在使用互联网购票时,查询需要购买车次的剩余车票(余票)数量是一个不可或缺的环节,在余票查询交互过程中,用户需要指定日期,发站和到站,以查询具体车次及其车票剩余数量,并根据查询结果选择车次,完成后续的购票操作。余票查询服务的性能与整个互联网售票系统的运行效率及用户的购票体验关系密切。

针对铁路互联网售票中余票查询服务的业务和性能需求,设计融合了内存数据库、分布式系统框架、消息队列等技术,设计实现了余票查询集群系统,为余票查询业务提供切实可行的解决方案。余票集群系统体系架构如图1所示。

余票查询集群系统主要分为以下3部分:

(1)数据产生。传统关系型数据中的售票业务带来余票数据的变化,通过侦听数据库数据变化,全量捕获并处理余票数据变动信息。

(2)数据同步。通过消息队列机制,接收到变化的余票数据时,进行业务解析,并将数据同步至余票查询集群中。

(3)数据运算。内存数据库分布式集群由分布在不同物理服务器上的多个节点组成,每个节点内含有若干个数据区域,每个数据区域内含有若干个数据单元。数据按照一致性Hash理论分散存储在不同的数据单元中。

图1 余票集群系统体系架构图

当执行余票查询业务时,CPU直接从内存中读取相关数据传送至完成运算操作, 避免了磁盘IO瓶颈。当用户从页面输入查询车次的发到站时,集群利用分布式系统中的资源定位技术来快速检索数据,定位到包含该车次的所有数据内存单元。集群并行调度多个节点参与运算,每个节点只进行与自己内存单元中关联数据的运算,避免跨网络的读取大量数据,最终将所有参与运算节点的运算结果数据汇总,完成余票计算。

2.3 数据拆分/读写分离/售取分离

互联网售票系统上线以来,随着业务的不断扩展,数据量快速增长,核心数据库的读写压力越来越大,对单一数据库进行性能调优或对SQL的基本优化空间提升也不能满足系统的性能需求。为此,互联网售票系统结合业务特征对数据存储层进行调整,基于性能考虑,系统对核心数据库进行水平及垂直二维切分,进行分库分表,支持水平扩展,读写分离及业务上售取分离。互联网售票系统划分不同的物理服务器节点的同时划分了更多的逻辑子库。增加处理资源,减少对磁盘IO的竞争,提高了系统的处理性能,提升了系统的可扩展性。

基于上述的设计实现及应用场景,同一位出行旅客存在购买的多张车票,其电子票分布在不同数据库节点的情况。此时存在旅客线下使用身份证取票时,如何快速定位旅客车票的难题。针对此问题,系统设计了基于内存的快速索引,为了将多个分布式数据库中的数据变化更新到内存索引中,系统无法单程的依靠数据库自带的复制功能,因此自主实现对数据库数据变化的监听,将数据变化经过格式转换,传递到索引服务器,实时更新索引信息。为了避免数据传递过程中数据的丢失,系统实现了重试机制及队列机制,同时充分考虑信息间的逻辑关系,避免出现时序问题,造成数据混乱。数据传输过程中由于网络等异常可能引发堵塞问题,数据堵塞,会导致数据的实时性受到影响,针对此问题,互联网售票系统设计了实时监控告警机制,通过线上运行积累数据,调配参数设置监控的敏感性,当发生问题时系统第一时间进行自检并进行告警,达到快速处理的目标。

3 结束语

互联网售票系统上线运营以来,高峰日售票量636.8万张,占客票系统交易总额的68%以上,累计销售客票约18.1亿张。日PV峰值80亿次、余票查询峰值请求100 000笔/s、购票请求峰值20 000笔/s。结合铁路业务特点,互联网售票系统中综合应用了本文中探讨的多种技术策略,在上述海量请求压力下运行平稳。相关技术的成功应用,未来可推广至铁路客运或铁路行业的其他系统中。

[1]王明哲,张振利,徐 彦,等.铁路互联网售票系统的研究与实现[J].铁路计算机应用,2012,21(4).

责任编辑 方 圆

Mass request processing in Railway Internet Ticketing

YANG Lipeng, WANG Fuzhang, MEI Qiaoling, ZHU Jianjun
( China Academy of Railway Sciences, Beijing 100081, China )

The Railway Internet Ticketing was one of the main channels of railway ticket booking. This paper introduced the development and characteristics of Railway Internet Ticketing System, analyzed the common technologies of dealing with mass request, further introduced the optimization and achievement of the Railway Internet Ticketing System in response to the mass request.

Railway Internet Ticketing; 12306 Website; mass request processing

U239.22∶TP39

A

1005-8451(2015)07-0025-03

2014-11-27

杨立鹏,在读硕士研究生;王富章,研究员。

猜你喜欢
购票海量铁路
一种傅里叶域海量数据高速谱聚类方法
沿着中老铁路一路向南
一路欢声一路歌 中老铁路看点多
海量快递垃圾正在“围城”——“绿色快递”势在必行
直击痛点的“候补购票”可多来一些
抢不到票?铁路候补购票服务扩大到全部旅客列车
铁路候补购票服务扩大到全部列车
铁路通信线路维护体制改革探索与实践
一个图形所蕴含的“海量”巧题
梦想在铁路人心中流淌