铁路客票系统遇见开源数据库技术,会怎样?

随着铁路客票系统业务越来越广泛,以及12306网站和手机售票量的极速增长,业务增量和数据存储量也越来越大,采用传统商业数据库受到很多制约。为了提高铁路客票系统数据处理能力,解决超大规模并发、海量数据存储、数据动态调度与管理等难题,提高系统应对灾难风险和安全风险的能力,客票系统团队开始对各种形态的开源数据库包括关系型,非关系型,NewSQL数据库进行研究,形成不同应用场景采用不同数据库、多种数据库混合部署的开源数据库应用思路。研究和应用开源数据库,能够降低客票系统软件授权成本,实现技术支持本土化,减少国外商业数据库对客票系统的经济制约和技术支持上的制约,也是提高信息安全保障能力,实现客票系统数据库国产化和自主可控的有效手段,对铁路信息系统实现国产化具有十分重要的意义。


1 开源数据库现状及可行性分析

随着开源数据库的发展,开源数据库在世界范围内得到越来越广泛的应用,当前的数据库行业业态已经从商业关系型数据库一家独大,真正发展到百家争鸣、百花齐放的局面[4]。图1为DB-Engines发布的数据库流行度排名。

根据DB-Engines统计,开源数据库数量达到154款,其多样性功能和优势基本涵盖了整个数据处理层面,随着开源数据库越来越成熟和稳定、得到市场认可,对商业数据库形成了很大的威胁[5],逐渐成为企业应用的标准基础设施选项,研究客票系统应用开源数据库也具备了可行性。


(1)在功能和性能上,开源数据库对SQL标准的支持、存储管理和网络管理,以及开发、管理和监控工具等方面都能媲美主流商业数据库[6],开源数据库性能在通用场景下完全不逊色商业数据库,并且开源数据库可通过分布式技术、集群技术超越商业数据库,在大数据处理行业更是占据主导地位。


铁路客票系统遇见开源数据库技术,会怎样?

图1 DB-Engines数据库流行度排名


(2)行业应用和生态建设上,开源数据库在互联网企业已经成为主流应用,在很多大型国企有非常广泛的应用,这为客票系统应用开源数据库提供了很多切实可行的经验和参考案例,同时开源数据库具有开源社区、用户会、邮件列表形成了一个完善的技术生态圈。为开源数据研究提供了可靠的支持。


(3)在政策支持和团队上,中国铁路总公司非常提倡和鼓励在铁路信息行业开展全面的开源软件技术运用和研究,尤其是数据库基础软件方面,客票系统开源数据库研究得到了充分重视和支持,并在多个业务系统中践行开源数据库的推广应用。为开源数据库研究积累了大量的经验,为客票系统深入使用开源数据库提供了可行性保障。


2 研究方法

2.1 原则


(1)坚持自主研发,坚持自主创新。通过技术交流、技术培训、参与社区建设等方式切实提高客票系统团队在开源数据库上的应用开发能力,自主创新真正实现客票系统数据库技术的自主可控,提高铁路客票系统信息化、国产化水平。


(2)理论结合实践,研究结合生产。客票系统应用开源数据库的研究,应分阶段进行理论研究和技术攻关,同时形成客票系统应用开源数据库理论指导与技术突破创新,在开源数据库理论研究的同时,以铁路客票系统典型业务作为实验基础形成落地应用,逐步推广开源数据库应用整个客票系统中。


(3)先边缘再核心,先试点再推广。客票系统应用开源数据库的研究,应对多种类型的开源数据库研究,根据客票系统的业务场景选择相应的数据库,例如在交易型业务中采用关系型数据库,大并发查询业务采用内存数据库,统计分析业务采用列存储数据库等;同时形成推进策略,如从简单业务系统到复杂业务系统,从非关键业务系统到关键业务系统。

2.2 路线

秉承上述研究原则,客票系统应用开源数据库通过如下3个方面进行研究,如图2所示。


铁路客票系统遇见开源数据库技术,会怎样?

图2 开源数据库研究线路图


(1)理论研究。检索调研国内外开源数据库现状,分析铁路客票系统数据库现状,借鉴行业和互联网企业的成熟方案,完成客票系统开源数据需求分析和目标制定,通过专家研讨、方案制定,形成铁路客票系统应用开源数据库总体规划和应用策略。


(2)技术研究。通过技术交流、培训,参与开源社区建设,掌握开源数据库技术,突破客票系统应用开源数据库关键技术。


(3)推广应用。通过客票系统业务原型迁移,在非关键业务系统进行试点应用;及时总结,根据效果设定生产上线系统的目标,进行研发投入,迭代、完善系统应用;在客票生产系统实施开源数据库应用,形成系统切换方案并验证测试,包括与既有数据库并行运行、业务数据的同步与复制等。

2.3 内容


客票系统基础架构是一个以数据库为中心的多层结构。数据库层,实现数据存储、管理,并通过存储过程实现客票系统的核心业务逻辑;核心层,主要包括交易中间件,数据传输中间件,数据库访问控制等,这些和数据库共同组成了客票系统的核心;接口层,主要包括各售票终端接口;客票系统售票终端,包括自动售票机,人工窗口,12306网站和手机等。如图3所示。

铁路客票系统遇见开源数据库技术,会怎样?

图3 客票系统总体架构简图


客票系统应用开源数据库是一个庞大而复杂的工程,不只是将商用数据库替换成开源数据库、迁移表和数据的简单工作。除数据库内的数据表、触发器、存储过程和视图等应用逻辑迁移,包括数据库复制、数据库相关中间件DBCS,CTMS,WORKLOAD的兼容性改造,还包括一些客票系统前端的改造工作。

3 关键技术

3.1 通用数据库访问控制器


通用数据库访问控制器是一套通用的数据库访问层封装器,可用于访问各种类型的数据库,实现多种开源数据库的支持; 实现方便、透明的数据库访问,调用过程、函数,并将数据库结果方便的返回给调用接口;可同时支持多种数据库的多个连接,方便实现根据不同客户端请求来切换相应的数据库连接;提供API函数供外部访问,数据库的访问连接或事务可以自动控制也可以由上层控制;通过数据库访问控制器可以屏蔽异构数据库的差异,提供安全的数据通信一致性协议访问接口,实现数据交互的安全访问。架构如图4所示。

该控制器采用基于事件驱动(Event-driven)响应客户请求的多线程服务器(Multi-threaded Server)模式—对每个客户请求建立一个线程主要包括事件调度模块,每当客户端发生一个请求,如连接建立、发送数据等,都进入相应的事件处理过程[7]。语法转换器是将请求命令转换成相应的数据库操作语句;连接池通过数据库适配器和远程服务模块维护多个数据库或者远程服务的连接;系统管理模块主要处理状态监控,日志处理等系统相关工作。


铁路客票系统遇见开源数据库技术,会怎样?

图4 通用数据库访问控制器基本架构图

3.2 数据库复制系统


目前,铁路客票系统使用的数据复制系统管辖范围大、效率高[8],用于维护多个数据库中的复制数据,并保证完整性和一致性。它向客户端提供在本地访问数据的能力,从而减少了网络和中央计算机系统的负担。复制命令语言(RCL)能自定义各种复制功能,监控和维护复制系统。例如,可以要求在数据表、数据行或数据列的级别上复制数据子集,通过在复制节点上只复制所需数据,可节省系统资源的开销。

3.3 消息中间件技术


消息中间件是一种由消息传送机制或消息队列模式组成的典型的中间件技术,用于分布式应用系统间进行信息交换。通过消息中间件,应用程序或组件之间可以进行可靠的异步通信,降低系统之间的耦合度,从而提高整个系统的可扩展性和可用性。分布式消息系统是消息中间件的一种实现,具有数据冗余、可恢复性,可扩展性、送达保证、排序保证、缓冲、异步通信等技术特点。通过分布式消息队列系统,应用系统可实现解耦,具备灵活性和峰值处理能力,实现异步处理和高速数据同步。

3.4 异构数据库同步


异构数据库同步技术可实现数据源和目标数据库的数据同步,解决数据共享和集成问题,而不需要考虑数据库的类型和部署位置。具体技术实现方式包括:数据文件、数据库复制、应用系统实现多点写入等。


结合数据库复制、消息中间件等技术,通过读取并转发关系型数据库复制服务主点到复制从点数据库的消息,作为数据桥模拟复制从点数据库的响应消息序列到复制主点以确保实时数据的完整和一致,可完成数据复制主、从点之间的数据同步,同时通过数据适配器、解析器将消息和数据实时同步至其它数据节点,可实现到包括文件、内存数据库集群以及其它类型数据库在内的数据节点的异构数据同步功能。架构如图5所示。


通过异构数据库复制技术,可在既有的数据库和应用程序基础上建立复制系统,而不必进行数据库的转换、迁移以及应用程序的改变,同时,可以向复制系统添加不同种类数据库服务器满足业务发展和变化的需求。

4 研究成果

客票系统研发团队通过调研分析、详细设计、关键技术研究实现了一个客票系统典型业务—铁路局余票查询系统在开源数据库MySQL,PostgresSQL和国产数据库Gbase8t上的应用。承担4个铁路局线下余票查询,包括车站大屏,人工窗口售票,自动售票机(TVM),站车系统。基于开源数据库的余票查询系统试运行6个月,运行稳定,日均处理余票查询请求13万次,并通过了2016年国庆节和2017年春运客运高峰期的考验,高峰日处理余票查询请求达30万次。

铁路客票系统遇见开源数据库技术,会怎样?

图5 异构数据库复制流程图


铁路客票系统遇见开源数据库技术,会怎样?

图6 基于开源数据库的铁路局余票查询系统架构图


如图6所示,线下余票查询系统分两种架构:(1)车站在铁路局本地查询余票(图6中左侧部分);(2)车站通过铁路局中间件在铁路总公司中心查询余票(图6中右侧部分)。开源数据库在第2种架构试运行,两种架构里,余票数据通过复制保持同步。


此外,非关系型开源数据库也在客票系统中应用,如:开源数据仓库Greenplum在客票营销系统中得到应用,开源内存数据库Gemfire在12306网上售票余票查询系统中也已经上线。

5 结束语

客票系统中应用开源数据库是必要的,是提高客票系统技术水平,实现数据库系统国产化,提高技术支持能力的重要途径。通过分析开源数据库现状和优势及政策环境,证明了客票系统中采用开源数据库是可行的,客票系统团队秉承坚持自主创新,理论与实践相结合,先简单后复杂,先外围后核心的研究原则,通过理论研究、技术研究和应用推广3条路线,形成开源数据库研究应用的指导策略和理论依据,并在客票系统典型业务中进行试点应用。通过及时总结、完善应用研究经验,指导客票系统后续在开源技术深入应用研究。

在客票系统中应用开源数据库成熟、稳定后,可将开源数据库自主化、产品化,形成客票数据库产品并在铁路行业内进行市场推广,引领铁路信息系统实现国产化。


分享到:


相關文章: