铁路客票席位自动化搬迁系统的设计与实现
2018-07-10张志强汪健雄
靳 超,贾 佳,张志强,汪健雄
(中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081)
新一代客票系统承担了12306互联网售票、窗口售票、自动售取票、电话订票等多种渠道售票业务,目前,高峰日发售全国铁路客票超过1 200万张。尤其是互联网/手机APP渠道占售票总量的比例最高约75%,已经成为广大人民群众铁路出行购票的主要渠道。
客票系统的席位由归属于18个铁路局集团有限公司的多个席位云计算节点承载,采用分布式存放,12306互联网售票系统已建成双活架构的数据中心,新一代客票系统目前全渠道日处理能力超过2 000万张,可很好地应对春运等重大节假日售票量剧增的情况。但是放票时段瞬时大交易量会对热门铁路局地区中心的席位服务器造成巨大的压力,成为制约新一代客票系统售票性能的瓶颈。因此,必须通过有效分析各个席位服务器资源开销,优化车次数据存储策略,以达到席位服务器售票压力均衡、提高客票系统运行效率、提升旅客购票体验的目的[1]。
目前,对席位服务器进行压力均衡的手段是对车次的存放位置进行调整,将热门车次席位数据迁移至较为空闲的席位服务器,迁移过程主要是使用脚本结合人工批量操作,席位搬迁量大,搬迁速度较慢,只能在售票天窗时间操作,不利于快速恢复售票生产,搬迁过程也受操作人员的熟练程度影响,存在一定的安全风险。本文提出一种席位搬迁系统的设计与实现,可实现席位在非售票天窗时间、小事务、安全、快速搬迁的目标,以适应新一代客票系统席位集中管理的需要。
1 系统总体架构
铁路客票系统中的席位自动化搬迁系统架构如图1所示。
图1 席位自动化搬迁系统架构
席位自动化搬迁系统主要完成主中心和负载中心席位相关数据的自动化实时搬迁。业务人员指定需要搬迁的日期、车次、搬迁源中心和目标中心,系统自动核实录入数据是否有效,通过核实后系统自动调用连接交易管理中间件(CTMS)连接席位源中心,将车次相关的席位、调令、计划和站车等数据搬迁至目标中心,实现席位在不同服务器之间的快速迁移[2]。
2 系统功能设计
2.1 用户管理功能
系统用户分为管理员用户和普通用户。管理员用户有席位搬迁、赋权和查询赋权日志、搬迁日志等主要功能;普通用户有席位搬迁、查询搬迁日志的功能。
管理员用户只有一个。
普通用户在管理员用户赋权后才能登陆席位集中管理平台进行席位搬迁等操作,退出平台后权限自动被回收,下次登陆仍需赋权[3]。
2.2 席位搬迁功能
席位搬迁是对客票系统席位服务器中既有车次的存放位置进行调整,搬迁的内容包括车次席位、席位发布日志、调令、站车、基本计划和临时计划等数据[4-5]。
2.2.1 搬迁环境设置
(1)搬迁位置
席位搬迁位置分为源中心和目标中心。
源中心为搬迁前席位的存放位置,目标中心为搬迁后席位的存放位置。目前客票系统席位分别存放在铁路局和铁路总公司的席位服务器上。
(2)搬迁车次
搬迁车次支持具体车次,如K401;支持按字头或字尾设置,如G%、K1%、%9;也支持按列车类型设置,如直通车或管内车。
(3)搬迁时段
搬迁时段支持指定始发日期,如20171001;支持指定始发日期时间段,如20170101~20171030;支持特定范围,如预售期内、预售期外。
2.2.2 席位自动搬迁
(1)搬迁前自动检测
业务操作人员指定搬迁车次、搬迁日期、源中心和目标中心,系统自动校验源中心和目标中心是否存在,搬迁日期内该车次在源中心是否有效。
(2)自动搬迁
正式搬迁时,系统根据业务操作人员录入信息调用存储过程,从源中心匹配相关表的对应数据,导出中间表后再导入目标中心。
(3)顺序执行
业务操作人员指定站车次,系统自动计算该站车次在搬迁日期内对应的全车次,如有多个全车次,系统将多个全车次顺序搬迁,自动执行。
2.2.3 席位监控与核对
(1)过程监控
搬迁开始时,席位搬迁进度窗口实时监控搬迁进度,展示内容包括当前时间搬迁全车次、数据表及对应数据量。
(2)数据核对
搬迁数据导入目标中心后自动触发数据核对机制,系统调用存储过程统计中间表数据和目标中心数据后进行比对。
2.3 日志查询功能
日志查询分为赋权日志和搬迁日志。
赋权日志可根据被赋权工号查询该工号的赋权时间、登陆时间和权限回收时间。通过该功能可以查询搬迁工号的赋权时间及登陆退出时间。
搬迁日志可根据搬迁车次查询搬迁该车次的操作员、搬迁开始和截止时间,以及搬迁车次相关所有数据的统计信息。通过该功能可以检查搬迁车次的操作信息,车次搬迁前后数据是否一致,及搬迁过程是否符合搬迁时间要求。
3 系统业务流程设计
3.1 总体业务流程设计
搬迁工号被赋权后开始搬迁任务,指定搬迁信息后系统自动校验,校验通过系统将车次席位等数据从源中心迁移至目标中心,完成席位自动搬迁过程。系统总体业务流程如图2所示。
图2 系统总体业务流程
3.2 搬迁初始化流程设计
管理员工号登陆席位集中管理平台,通过工号赋权功能给普通工号赋搬迁权限。
普通工号取得搬迁权限后,登陆席位集中管理平台,输入席位搬迁车次的相关信息,如源中心、目标中心、搬迁日期、搬迁车次,确认后开始搬迁工作;自动化搬迁系统参数数据初始化流程如图3所示。
3.3 搬迁流程设计
(1)席位搬迁开始时车次加锁,暂停该车次的售票业务。
(2)修改铁路总公司该车次的位置定义为目标中心,同步复制到铁路局服务器及车站服务器。
(3)清空搬迁中间表数据,准备数据迁移前的环境搭建工作。
(4)系统根据搬迁日期以及车次,从源中心将相关席位、调令、计划等数据备份至中间表,再从中间表将数据小事务导入目标中心,完成数据迁移工作[6]。
(5)系统自动核对搬迁前后数据是否一致,如不一致跳出正常流程,转入异常处理流程。
图3 系统搬迁初始化流程图
(6)同步搬迁车次相关订单的位置中心为目标中心。
(7)删除源中心该车次相关数据、全路服务器的余票数据及缓存数据。
(8)同步全路服务器的余票数据后将车次解锁,恢复该车次的售票业务,整个搬迁过程结束。
搬迁过程的具体流程如图4所示。
席位自动化搬迁过程可以在搬迁进度窗口中监控,如遇异常情况可手工干预。
席位自动化搬迁过程结束后操作员可在搬迁日志中查询某车次的搬迁记录,输出结果包括具体搬迁车次、具体搬迁日期、搬迁席位的相关数据统计等。
整个搬迁过程完毕后操作员退出席位集中管理平台,该操作员的搬迁权限自动被回收。
4 系统关键技术
4.1 搬迁前数据分析
席位目前存放在铁路局和铁路总公司的席位服务器上面,席位服务器的性能是影响售票业务速度的关键因素,通过对各个席位服务器CPU运行情况分析,测算席位存放比例达到服务器最优性能输出是席位搬迁的关键。以北京铁路局的4个服务器性能为例,如图5所示。由于P1服务器承担了传输、结账、统计等业务,暂无发售车次的席位存放,运行一直平稳;而P2、P3、P4各负载中心性能各不相同,在不同时间段繁忙程度也不一样[7]。
图4 搬迁过程具体流程图
图5 数据库监控图
图5是P2、P3、P4这3个席位负载中心一个售票日的CPU繁忙对比,各负载中心CPU负载都没有超过50%,P4相对繁忙一些,以此为依据P4上新增加的车次和既有存放的席位就有部分需要搬迁到P2和P3上,以达到各服务器售票压力均衡的策略。
对新增车次,根据每个席位中心的繁忙情况和每个负载席位存放量情况,为客运人员提供选取最闲和存放量最小的席位负载中心进行存放,规避了之前需要依赖客运人员按照经验进行席位存放的风险。
对既有席位数据,可以根据各个席位中心的使用性能变化进行动态调整,随时完成该趟列车从一个繁忙的席位中心自动搬迁到另外一个相对空闲的席位中心,通过动态合理化的调整,充分利用了全路席位中心的资源[8]。
4.2 数据一致性控制
搬迁过程中将搬迁数据导入目标位置中心,系统通过存储过程自动核对中间表数据和目标中心数据是否一致。
(1)核对席位、调令和计划等数据一致后,可进行源中心的数据删除操作。
(2)核对席位、调令和计划等数据不一致,可手工检查解决问题后再次核对数据,如果一致仍可进行源中心的数据删除操作;如无法解决可回退,系统自动修改车次为源中心,删除目标中心数据后解锁车次,保证自动搬迁前后数据的一致性[9]。
4.3 在线迁移
(1)业务影响自动化搬迁开始时对搬迁车次进行加锁,停止该车次的售票业务,由于搬迁数据量小,通常搬迁一趟车次在5 min内,中断售票业务时间较短,可在非天窗时段在线迁移。
自动搬迁不需要暂停workload工作流,不影响其他在线业务,避免夜间施工后补做营销、席位发布等工作[10]。
(2)数据同步
搬迁过程中清除该车次相关的余票及缓存数据后立即同步,恢复售票业务时余票数据为实时数据。涉及搬迁车次的订单在搬迁过程中自动同步为新的位置中心,不影响搬迁后该车次订单的换票、改签及退票业务。
4.4 安全控制
自动化搬迁过程需要严格保障搬迁过程的安全性和数据一致性,只设置一个赋权工号,普通工号被赋权才可进行搬迁工作,搬迁结束后搬迁工号的权限自动被回收;搬迁工号登陆平台时判断在线唯一性,确保搬迁过程中不会造成数据表被多人使用;搬迁时判断搬迁车次唯一性,确保搬迁的车次只能在一个搬迁任务中存在。
自动搬迁过程中导入和删除数据时采用小事务不复制操作,根据搬迁日期按天小批量处理数据,不影响系统其它业务,有效地保障了搬迁过程的安全性。
5 结束语
席位自动化搬迁系统通过对席位服务器交易繁忙程度进行分析,制定严谨的负载均衡手段,实现席位数据在各席位服务器中发售压力的均衡,达到了席位在非售票天窗时间、小事务、安全、快速搬迁的目标,并可适应新一代客票系统席位集中管理的需要。该系统已在多年的春运、国庆等售票高峰期发挥了重要作用,有效地提高了客票系统运行效率和旅客购票体验。
[1] 徐东平,李 琪,刘相坤,等.铁路局级客票系统双活架构的研究[J]. 铁路计算机应用, 2015,24(11): 9-13.
[2] 王元媛,张志强. 铁路客票系统席位管理研究[J]. 铁路计算机应用,2016,25(4):34-37.
[3] 王永峰,华小刚,李 政. 铁路自动检票系统的设计与实现[J]. 铁路计算机应用,2015,24(11):46-51.
[4] 王 芳,李 刚,林 湛,等. 基于售票量预测的客票系统数据负载均衡方法研究[J]. 铁路计算机应用,2013,22(4):29-32.
[5] 张华兵,刘昕林,张海涛,等. IT运维管理的自动化的研究[J].信息与电脑:理论版,2017(9):34-35.
[6] Jeffrey Garbus. Sybase ASE 12.5 Performance and Tuning: The Official Guide[M].Wordware Publishing Inc,2002: 112-115.
[7] 江 琳,王洪业,贾 佳,等. 席位自动负载均衡在客票系统的研究和应用[J]. 铁路计算机应用,2015,24 (7): 21-24.
[8] (英)门伯里.实用负载均衡技术[M].武海峰,陈晓亮,译.北京:人民邮电出版社, 2013:96-97.
[9] 章 伟 .浅议计算机数据库备份和恢复技术的应用[J].数字技术与应用,2016(2):224.
[10] 朱建生,单杏花,周亮瑾,等. 中国铁路客票发售和预订系统5.0 版的研究与实现[J].中国铁道科学,2006,27(6):95-103.