一种提供票务支持的票池中间件的构建、购票及锁票方法

文档序号:8488175阅读:634来源:国知局
一种提供票务支持的票池中间件的构建、购票及锁票方法
【专利说明】一种提供票务支持的票池中间件的构建、购票及锁票方法
[0001]
技术领域
[0002]本发明涉及中间件领域,特别涉及一种提供票务支持的票池中间件的构建、购票及锁票方法。
[0003]
【背景技术】
[0004]很多商业活动中都存在一种业务一一凭票入座,比如车票、电影票、热门演唱会的门票等等。它们有两个共同的特点:一是稀缺性,票是有限的,越是热门的票争抢越激烈;二是准确性,票与座要一一对应,一张票只能卖给一个人。这类售票系统在逻辑上往往可以抽象出一个“池”,卖方可以向这个池加票、减票,而买方可以从这个池中取票。这个池也就是J票池。
[0005]传统的售票系统往往采用关系型数据库(例如SQL Server、MySQL)来实现票池,但是面对同一票池、甚至是对同一张票的大量并发操作,往往在高吞吐量和高可靠性之间难以两全,极有可能会出现一张票被卖给多个人、实时性低、响应速度非常慢、不支持灵活的票务操作的情况。因此非常有必要设计一种支持高并发、高可用的健壮的票池中间件,在支持各类票务操作的同时,能够以中间件的形式,适用于各种票务活动场景。
[0006]

【发明内容】

[0007]针对现有技术存在的缺陷和不足之处,本发明提供了一种提供票务支持的票池中间件的构建、购票及锁票方法,同时适用于大范围(比如全省联网、全国联网)的票务需求。
[0008]为了解决上述技术问题,提出了一种提供票务支持的票池中间件构建方法,如下所述:
搭建单个票池集群;通过构建底层的一个主票池服务器和至少一个从票池服务器,η个中间层的哨兵应用服务器,η为奇数且大于3,至少2个上层的监视器构成主从机制和哨兵机制;所述的票池中间件包括多个票池集群;具体包括如下步骤;
步骤1:在票池集群中采取相应的数据结构表示各类票务数据;将各项票务操作活动的读写属性,在票池中间层的哨兵应用服务器的配置文件中进行配置;
步骤2:在从票池服务器的配置文件中配置主票池服务器的IP地址和端口号,以至少一个底层的从票池服务器对一个主票池服务器的方式进行配置;
步骤3:在至少一个底层的从票池服务器对一个主票池服务器配置基础上,使用η个中间层的哨兵应用服务器对主从票池服务器的监视与管理,η为奇数且大于3 ;
步骤4:设置至少2个上层的监视器检测每个服务器的状态;并向外发布信息;单个票池集群搭建完成,所述的票池中间件包括多个票池集群,每个票池集群有唯一的ID标识,票池中间件构建完成。
优选的,所述的票池集群基于Redis内存数据库作为构建票池的存储基础。
[0009]优选的,所述的步骤I中的票池服务器数据结构特征如下:
1.车票信息使用“日期、班次号:座位号”的键值形式进行标识;
2.日期班次有3个集合,使用的键值分别是:“日期:班次号”、“日期:班次号:SaleLocked”、“ 日期:班次号:CommandLocked” ;
其中,“日期:班次号”表示某个日期班次的余票集,“日期:班次号-SaleLocked”表示某个日期班次的售票锁票集,“日期:班次号KommandLocked”表示某个日期班次的管理锁西隹
[0010]一种利用权利要求3所述票池中间件的购票方法,票池中间件接收售票客户端的票务请求,票池集群之间由VPN互联,票务请求由票池中间件代理服务器进行代理路由,然后定位到票池集群上;票池中间件再完成购票请求,返回购票或查询列表;
具体包括下述步骤:
步骤1:售票客户端首先根据日期、出发和到达站点信息,就近查询分布式缓存,获取到具体的日期班次信息;然后,向票池中间件,发起查询余票的请求,输入数据是出发站点的ID、以及一组日期班次集;
票池中间件根据请求中的票池集群ID,对于请求进行路由,将请求重定位到票池集群中水平分割之后、存储了指定始发站所有票据信息的票池集群,同时将一组日期班次集传入,作为进一步查询余票信息的输入数据;
票池集群将根据输入的日期班次集,逐一地在内存数据库中查找指定班次对应的班次余票集、对应班次的售票锁票集、对应班次的管理锁票集,将所有集合的内容汇总描述指定日期班次集;
步骤2:售票客户端根据票池集群中获取到日期班次集,在本地进行指定座位号、或者随机选座方式,进行购票;对于指定座位号的购票方式,将日期班次集、以及每个日期班次集关联的一个座位号的列表传递给票池集群;对于随机选座方式,指定购票信息,然后将日期班次集、以及每个日期班次集关联的待购张数信息传递给票池集群;
步骤3:票池集群根据售票客户端传入的购票信息,对待购票据进行售票锁票操作;对于指定座位号的购票方式,在接收到日期班次集、以及每个日期班次集关联的一个座位号的列表后,对票池集群中的实时票据进行逐张售卖活动;
对于随机选座方式,票池集群将根据连续优先原则,从低号段开始,为售票客户端请求生成一个座位号列表,对车票进行加锁处理,并将成功锁定的票据,返回给售票客户端;在票池集群中,以会话Sess1n的形式记录每个售票客户端的所有锁票请求,作为下一步售票的依据;
步骤4:售票客户端根据请求继续进行票据的购买或者放弃票据的购买;
步骤5:票池集群将根据售票客户端的请求,逐张进行票据售卖;对于每一张票据,首先将待售车票从相应的日期班次集中移除、从相应的日期班次售票锁票集中移除,完成单张车票的售卖;
步骤6:如果进行售卖活动时锁定成功的票超过了售票锁的时限,自动回到票池中变成待售状态;否则,票池集群将会在售票客户端提交购票请求后,返回给售票客户端完整的、成功购票的列表;
步骤7:锁定成功之后,票池中间件将成功购得的票加入到对应日期班次集的售票锁票集;
步骤8:结束。
[0011]一种利用权利要求3所述的票池中间件的锁票方法,具体包括下述步骤:
步骤1:管理客户端根据起始站点、日期、班次号、所属票池集群ID查询班次计划;选择要管理的班次计划,所述的班次计划包括日期和班次号标识,查询所有票的状态,包括被售票锁定、被管理锁定、可用、异常;对被售票锁定、被管理锁定和异常状态的票,不进行下一步操作;
步骤2:对于选择指定座位号的管理员请求,指定数目,生成请求的座位号列表,请求票池中间件进行锁定;票池中间件遍历输入座位号列表,逐张进行锁定操作,如锁票不成功,则返回锁定成功的座位号列表,得到管理锁票集;
步骤4:对于随机锁票,票池中间件先查询该班次计划的余票集,遍历余票集,逐张锁定,直至达到指定数目或者余票集遍历结束,同样返回锁定成功的座位号列表;票池中间件以随机的方式选择出指定数据的余票,得到管理锁票集;
步骤5:票池中间件对管理锁票集中的所有票,进行锁定操作;在锁定时,指定锁定时间,并且记录临时锁票的用户姓名;
步骤6:结束。
[0012]优选的,所述的管理客户端的权限包括锁定和解锁票,以管理员锁的形式预留或者放弃预留票。
[0013]本发明的有益效果是:一种提供票务支持的票池中间件构建方法购票及锁票方法,通过搭建一种高并发、高可用的健壮的票池中间件,在支持各类票务操作的同时,能够以中间件的形式,适用于各种票务活动场景。
[0014]
【附图说明】
[0015]图1-1本发明中锁票过程第一步骤的示意图;
图1-2本发明中锁票过程第二步骤的示意图;
图1-3本发明中锁票过程第三步骤的示意图;
图2本发明中票池集群设计图;
图3本发明的票池中间件构建的流程图。
[0016]
【具体实施方式】
[0017]一种提供票务支持的票池中间件构建方法,包括:
搭建票池集群;通过构建底层的一个主票池服
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1