铁路客票系统中基于Paxos算法的数据一致性模型研究

2012-08-06 09:37王红爱祝红光贾新茹
铁路计算机应用 2012年2期
关键词:客票一致性服务器

王红爱,祝红光,贾新茹

(中国铁道科学研究院电子计算技术研究所,100081)

铁路客票发送和预定系统(简称客票系统)自1996年应用以来,已经建成了铁道部、地区中心、车站三级分布式结构。系统拥有以市场需求为导向的客票销售体系,满足旅客的不同需求。本系统每日与海量数据进行交互,这些数据是客票系统发展的基础,从应用的角度来说,分为基础数据和业务数据。基础数据一般包括站名字典、线路字典、票价基础价率等相对稳定的数据,由铁道部全表复制到各中心和各车站,而业务数据一般包括存根、席位、财收等动态数据,根据统计的要求由车站级或中心级向上级单位逐级传输。基础数据的一致性要求非常强,需要严格一致,关键数据的丢失会影响售票业务的正常进行。而业务数据的丢失会造成铁路局、铁道部报表的统计数据不完整,对分析运营结果和制定运营策略产生不利影响。云计算的Paxos算法可以解决分布式系统中的一致性问题。本文分析了客票系统的数据架构,介绍了目前客票系统保证数据一致性的技术,建立了基于Paxos算法的数据一致性模型,可以有效解决客票系统数据的一致性和完整性问题。

1 Paxos算法介绍

Paxos算法[1~2]是由Leslie Lamport最先提出的一种基于消息传递(Messages Passing)的一致性算法。用来解决一个分布式系统如何就某个值(决议)达成一致的问题。

一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。在该算法中规定了3种角色(proposers,acceptors,和 learners)和2个阶段(accept和learn)。其中proposers 提出决议,acceptors批准决议,learners获取并使用已经通过的决议。在这种情况下,满足以下3个条件[3]就可以保证数据的一致性:

(1)决议只有在被 proposers 提出以后才能批准。

(2)每次只批准一个决议。

(3)只有决议确定被批准后learners才能获取这个决议。

图1为Paxos算法的模型简图。

图1 Paxos算法的模型简图

Paxos算法实现时proposer向acceptors组发起请求告知需批准的编号n,获取acceptors多数派最新一次批准的最大编号m,如果此次提案编号n大于m,则acceptors根据收到的请求承诺不再批复编号小于n的提案,在收到该提案时即批准该请求,此时learner才能获取该提案。

2 数据复制与传输管理

数据复制(replication)和传输管理(DBCS)是客票分布式数据系统的2种技术手段。客票系统利用Sybase的复制服务器将数据从主站点复制到其他站点,通过在主点建立数据复制定义,在复制点建立复制约定,自动地把对主点数据的操作通过复制机制作用到复制点数据上。数据传输管理主要完成分布式数据库之间数据的相互透明传送,从而在分布式数据库之间实现数据的一致性和完整性,属于松散一致性的数据耦合机制。

2.1 数据复制

客票系统利用的复制服务器来完成复制功能。复制数据会在整个系统中有多份数据影像,分为紧密一致性和松散一致性两种方式,紧密一致性需要相关的复制节点都做好了提交准备才去提交,而松散一致性对于事物的执行主点和复制点总是会有延迟。数据复制具有以下优点:

(1)高可用性

如果有一个节点出错,其他节点可以接管它的工作,不会使整个系统停止工作。

(2)提高系统的扩展能力

通过把负载分布到多个节点上,或者增加节点来提高系统的扩展能力。

(3)高性能

复制服务器提供一种机制,复制系统是独立的,不会给各节点服务器造成负担。同时客户端可以访问就近的节点,提高了用户访问速度。

2.2 数据传输

客票系统拥有自主开发的传输中间件(DBCS),主要根据用户定制,从源节点数据库按照一定的规则导出数据,传输到目的节点服务器,再按照导入定义将文件导入到相应的数据库中,完成日常数据在各节点之间的传送。包括原始业务数据向上级节点传输,同级节点之间的传输,消息类数据向下级节点传输等场景。

3 客票系统客户端与服务端架构

图2 客票系统客户端与服务器端的结构图

如图2,以售票为例,当客户端要完成售票业务,需要分别向车站、铁路局、铁道部各级不同数据库发出指令,由于网络等原因,如果各服务器基础数据或者业务类数据不一致,可能会造成业务停滞,或者产生错误的结果,比如改点调令没有复制到车站,会造成票面开车时间不正确,导致旅客漏乘列车。为了使全路客票发售系统能够正常运营,数据的一致性尤显重要。在分布式系统中Paxos算法最大的用途就是保持多个节点数据的一致性。

客票系统是一个庞大的信息系统,根据业务的不同,有些需要采用分布式提交,提交意味着所有的操作均已完成。放弃意味着存在无法顺利完成的操作,需要放弃,那些已执行的操作也将撤销,系统回滚到本次提交之前的状态,即必须保证提交的原子性,这是保证数据一致性的重要前提。

4 基于Paxos算法的数据一致性模型

数据一致性模型从根本上来说是对任务和数据存储之间的控制。正常情况下,执行读操作时,它期待该操作返回的是该数据在其最后一次写操作之后的结果。为了保证业务正常、正确地进行,需使所有服务器端的基础数据最终一致。对于基础数据,由铁道部向下级服务器逐级复制;对于业务数据,由车站向上级服务器逐级传输。本文基于Paxos算法提出了加强数据一致性的方案。

图3为基于Paxos算法的数据一致性模型,处理流程如下:

(1)基础数据按照由上向下的复制机制,业务数据按照由下向上或同级间的传输机制。

(2)业务维护时,会在同步控制器存储本次更新的记录(编码n,更新值newvalue),其中value值可以是表名加索引值,也可以是在业务维护时的校验值等。

(3)铁道部、铁路局、车站各级数据库服务器作为节点集,通过Paxos算法推选出主节点。

(4)同步控制器(客户端或工作流进程)将本次更新的记录(编码n,更新值newvalue)向主节点发起更新申请。

(5)主节点比较最新一次更新的记录(编码m,更新值value),以下情况的更新是成功的:

value = newvalue,且m

value < > newvalue

(6)如果更新成功,说明新数据在某些节点不一致,发送消息给管理端,启动快照机制或者重新复制等手段保证最终数据的一致性。

图3 基于paxos算法的数据一致性模型

5 结束语

铁路客票系统的业务在不断扩展,为给旅客提供方便快捷的服务,客票系统对业务连续性提出了更高要求,因此数据的一致性和完整性尤显重要。在云计算飞速发展的今天,其中的关键技术也被各个行业吸纳,本文首先对其中的Paxos算法进行了研究,建立了基于Paxos算法的数据一致性模型,该模型可以解决铁路客票系统中数据的一致性和完整性问题,进一步提高客票系统的业务质量。

[1] LAMPORT, L. Paxos made simple[J] . ACM SIGACT News 32, 4 (2001): 18-25.

[2] LAMPORT, L. The part-time parliament[J] . ACM TOCS 16, 2 (1998): 133-169.

[3] 赵黎斌. 面向云存储的分布式文件系统关键技术研究[D] .西安:西安电子科技大学, 2011.

猜你喜欢
客票一致性服务器
关注减污降碳协同的一致性和整体性
注重教、学、评一致性 提高一轮复习效率
IOl-master 700和Pentacam测量Kappa角一致性分析
通信控制服务器(CCS)维护终端的设计与实现
中国铁路客票在跨境客运中的互通方案
PowerTCP Server Tool
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
航空公司客票直销的现状与分析
基于事件触发的多智能体输入饱和一致性控制