余票更新的方法

文档序号:6540709阅读:216来源:国知局
余票更新的方法【专利摘要】本发明公开了一种余票更新的方法,包括如下步骤:步骤一,当余票数量发生变化时,交易服务器将余票数据整理后发送给车站票务服务器;步骤二,应用服务器定时查询并获取车站票务服务器中的余票数据,应用服务器先清空其内存的结构体中的原有余票数据,再将获取的余票数据存入结构体中。多个客户端通过负载均衡器与多个应用服务器连接,结构体中的数据存储结构为Dictionary存储结构。本发明的余票更新的方法将余票数据由数据库存放到每个应用服务器的内存的结构体中,通过对结构体的合理设计,而且多个客户端通过负载均衡器与多个应用服务器连接,能够大大减少对客户端的余票查询的请求响应时间,并满足大并发量的查询请求。【专利说明】余票更新的方法【
技术领域
】[0001]本发明涉及交通及其它领域中的票务管理,尤其涉及余票更新的方法。【
背景技术
】[0002]地铁、城际铁路、高铁等交通工具由于方便快捷等特点已被越来越多的人使用。广大旅客需要根据查询到的列车的余票信息和运行时间来安排自己的行程及相关事宜,并及时、方便、快捷地购票。[0003]以前旅客查询余票信息时,由于余票数据更新不及时,往往会出现查询时显示有余票,但在自动售票机或人工售票窗口购买车票时却被告知票已经售完。这种情况的出现不仅会打乱旅客出行计划,让旅客产生消极的情绪,严重时甚至会引起车站秩序混乱。【
发明内容】[0004]本发明的目的是要提供一种余票更新的方法,可以解决上述现有技术问题中的一种或多种。[0005]交易服务器,是指可以进行影响到余票数量改变的操作的服务器,例如可以进行售票、退票或改签的终端。[0006]应用服务器,是指与每个车站票务服务器都进行余票数据交换的服务器。为了处理大量的余票数据,需要设置多个应用服务器,每个应用服务器中的余票数据都是一致的。[0007]客户端,是指广播、余票数量显示屏、余票查询机等可以对余票数量进行查询或显示的终端。[0008]车站票务服务器,是在每个车站都设置的进行票务数据处理的服务器。[0009]根据本发明的一个方面,提供的余票更新的方法,包括如下步骤:步骤一,当余票数量发生变化时,交易服务器将余票数据整理后发送给车站票务服务器;步骤二,多个应用服务器定时查询并获取车站票务服务器中的余票数据,应用服务器先清空其内存的结构体中的原有余票数据,再将获取的余票数据存入结构体中。多个客户端通过负载均衡器与多个应用服务器连接,结构体中的数据存储结构为Dictionary存储结构。[0010]本发明的余票更新的方法将余票数据由数据库存放到每个应用服务器的内存的结构体中,每个应用服务器分别定时去查询并获取每个车站的车站票务服务器,将每个车站的车站票务服务器的余票数据加载到应用服务器的内存的结构体中。客户端查询到的是已存在于应用服务器中的余票数据,通过对应用服务器的内存的结构体的合理设计,能够大大减少对客户端的余票查询的请求响应时间。同时通过使用负载均衡技术,能够通过动态扩展应用服务器的数量来满足系统对性能的需求(并发量、响应时间等)。[0011]负载均衡器根据传入的客户端的IP地址和端口,以统计方式将其映射到多个应用服务器。当客户端的余票查询请求过来时,多个应用服务器同时执行这种映射,以快速确定哪个服务器处理这个请求。这种映射一直保持不变,直到应用服务器的数量发生改变时为止。与集中式负载平衡应用程序相比,负载平衡筛选算法处理数据包的效率更高,因为前者必须修改和重新传送数据包。[0012]在一些实施方式中,其中在步骤一,交易服务器将整理后的余票数据以xml格式发送给车站票务服务器。由于数据是经过整理的,车站票务服务器只做解析xml数据,不做业务逻辑处理,由此,具有提高数据处理速度的效果。[0013]在一些实施方式中,还包括车站票务服务器将余票数据按业务规则整理后传送到数据库中,根据List集合组合余票更新的SQL语句,更新数据库中原有余票数据。由于xml作为数据的载体通用性强,且解析速度快,由此,具有提高更新余票数据速度的效果。[0014]在一些实施方式中,其中在步骤二,车站票务服务器将xml格式的余票数据解析成相应的list集合,更新数据库中原有余票数据。由此,具有减少数据库中的余票数据的更新时间的效果。[0015]在一些实施方式中,其中在步骤二,应用服务器每隔30秒查询并获取车站票务服务器中的当前余票数据。由此,具有保证余票信息的及时性的效果。[0016]在一些实施方式中,其中在步骤二,应用服务器将获取的xml格式的余票数据解析后按照结构体的格式存入结构体中,并优化查询方法。由此,具有快速返回查询结果的效果O[0017]在一些实施方式中,其中在步骤二,应用服务器获取余票数据后,先将其内存的结构体使用互斥锁锁住,然后更新结构体的余票数据,更新完再释放结构体。因为在把余票数据更新到内存中的结构体中的时候,由于更新数据的同时,客户端可能也向应用程序服务器请求余票数据,为了保证应用服务器返回的请求数据的完整性,先将其内存的结构体锁住,可以避免余票数据更新前查询到的数据跟实际不符的情况。【专利附图】【附图说明】[0018]图1为本发明一种实施方式的余票更新的方法的数据传输结构示意图。[0019]图2为本发明一种实施方式的余票更新的方法的应用服务器和数据库的余票数据更新流程示意图。[0020]图3为本发明一种实施方式的余票更新的方法的旅客查询余票数据的流程示意图。【具体实施方式】[0021]下面结合附图及具体实施例对发明作进一步的详细描述说明。[0022]图1示意性地显示了本发明的一种实施方式的余票更新的方法的数据传输结构。[0023]如图1所示,该余票更新的方法包括如下步骤:[0024]步骤一、当余票数量发生变化时,交易服务器I将余票数据整理后发送给车站票务服务器2;[0025]步骤二、多个应用服务器6定时查询并获取每个车站票务服务器2中的当前余票数据,应用服务器6先清空其内存的结构体中的原有余票数据,再将获取的余票数据存入结构体中。[0026]多个客户端4通过负载均衡器3与多个应用服务器6连接,结构体中的数据存储结构为Dictionary存储结构。[0027]在步骤二之前、之后或同时,每个车站票务服务器2将余票数据按业务规则整理后传送到数据库5中,更新数据库5中原有余票数据。在本实施例中,每个车站都设置有一个与该车站的车站票务服务器2连接的数据库5,在其它实施例中,也可以多个车站共用一个数据库5。[0028]在步骤二,应用服务器6先清空其内存的结构体中的原有余票数据,再将获取的余票数据存入结构体中。采用这种数据存储方式比较节省时间,例如一趟车的席位等级有多个,如果不删除直接更新的话,那么每个席位等级都要比较一次,查看余票数量是否有变化,有变化就更新,而删除这样就不需要比较,相对节省时间。[0029]通过将余票数据加载到内存中,用内存抛弃了传统磁盘数据管理的方式,基于全部余票数据都在内存中,重新设计了结构体,并在内存中使用快速查找算法、并行操作等操作进行改进,因此数据处理的速度比传统数据库的数据处理要快很多,通常在10倍以上。[0030]应用服务器6的内部优化主要是优化结构体存储方式和优化查询方法:[0031]对结构体存储方式进行优化,由原来的list存储结构转换为Dictionary存储结构(类似于Hashtable),这样做方便、快速查询,例如list存储结构有10个值,要查询其中一个,list存储结构平均要查询(1+10)/2=5.5次,而Dictionary存储结构只需要查询一次。[0032]优化查询方法,可以采用二分查找算法,能快素查询到符合条件的余票数据。[0033]优化结构体存储方式、查询采用负载均衡方式可以优化WebService响应请求时间,优化前6600个用户同时请求每秒处理事务数(TPS)约在3600左右,优化后为7600。TPS为平均每秒处理请求量。响应时间优化前平均32毫秒,优化后平均11毫秒。[0034]业务规则,例如有如下两组余票数据:[0035]G1006二等座剩余100张一等座剩余20张[0036]G1006二等座剩余98张一等座剩余18张[0037]这里以时间靠后的为准。[0038]多个客户端4通过负载均衡器3与多个应用服务器6连接。负载均衡器3采用一种完全分布式的算法,根据传入的客户端4的IP地址和端口,以统计方式将其映射到多个应用服务器6上。例如本实施例中采用八个应用服务器,一台负载均衡服务器,当客户端4的查询请求过来时,八个应用服务器同时执行这种映射,以快速确定哪个应用服务器6处理这个请求。这种映射一直保持不变,直到应用服务器6的数量发生更改时为止。与集中式负载平衡应用程序相比,负载均衡器3处理数据包的效率更高,因为前者必须修改和重新传送数据包。在其它实施例中,应用服务器6的数量可以根据需要设置。[0039]负载均衡器3主要是把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。[0040]负载均衡算法大致分为集中式和分布式,本系统采用分布式算法,分布式策略是没有调度节点的,由若干个计算机共同参与来完成负载均衡的。计算机之间是对等关系,也就是每个计算机都参与负载均衡,以此来减轻其它计算机的压力。一般不进行整个系统的一致性维护工作,因此实现相对简单,且易于扩展,也能在云计算机环境中使用。[0041]快速确定的基本原理是:负载均衡器3记录自身到每一个集群节点(应用服务器6)的网络响应时间,并将下一个到达的连接请求分配给响应时间最短的集群节点,这种方法要求使用ICMP包或基于UDP包的专用技术来主动探测各节点。[0042]过程是:负载均衡器4对各应用服务器6发出一个探测请求(例如Ping或其它方法),然后根据应用服务器6对探测请求的最快响应时间来决定哪一台应用服务器6来响应客户端的服务请求。此种均衡算法能较好的反映应用服务器6的当前运行状态,但值得注意的是,这最快响应时间仅仅指的是负载均衡器3与应用服务器6间的最快响应时间,而不是客户端与应用服务器6间的最快响应时间。[0043]交易服务器I可以包括售票终端11、退票终端12和改签终端13等。当发生售票、退票或改签业务时,会使余票数量发生变化。[0044]在本实施例中,其中在步骤一,交易服务器I将整理后的余票数据以xml格式发送给车站票务服务器2;在步骤二,车站票务服务器2将xml格式的余票数据解析成相应的list集合,根据List集合组合余票更新的SQL语句,更新数据库5中原有余票数据;在步骤二,应用服务器6每隔30秒查询并获取车站票务服务器2中的当前余票数据,应用服务器将获取的xml格式的余票数据解析后按照结构体的格式存入结构体中,并优化查询方法。这样可以快速返回查询结果。在其它实施例中,应用服务器6查询并获取车站票务服务器2中的当前余票数据的时间间隔也可以根据需要设置成10秒、20秒或40秒等,时间越短更新越及时。通常情况下,30秒的查询间隔就足够及时了。[0045]在本实施例中,在步骤二,应用服务器6通过Webservice定时查询并获取车站票务服务器2中的余票数据。在其它实施例中,在步骤二,应用服务器6也可以通过socket或wcf定时查询并获取车站票务服务器2中的余票数据。[0046]内存的结构体可以根据需要显示的字段创建,例如车次、车站、始发站、终到站、开车时间、席位信息(席位等级、票价、数量)等信息。[0047]一般程序运行时,数据分别存储在堆内存和栈内存中。堆内存和栈内存都是程序在内存中存储数据的地方,系统自动管理堆内存和栈内存,无需程序员手动干预,本系统的结构体存放在栈内存中。[0048]为保证应用服务器6和车站票务服务器2的数据一致,要及时更新应用服务器6的内存中的数据,目前在每个应用服务器6中均设置一个定时更新的定时器,每隔一定时间间隔调用车站票务服务器2接口。时间间隔可以在60秒之内,目前设置的是30秒,当然时间越短更新越及时。[0049]应用服务器6每30秒定时查询车站票务服务器2的余票数据是否有更新操作,如有则将通过调用车站票务服务器2的WebService接口获取当前余票数据。[0050]应用服务器6收到变化后的余票数据,先将内存中结构体使用互斥锁锁住,然后更新结构体的余票数据,再释放结构体。如:减少某趟车次的席位等级的车票数量。这样可以避免在更新或查询的同时对内存的结构体中的数据进行操作,导致数据不准或不完整。锁住的目的是保证数据的完整性,在数据更新的时候,有可能有请求在读结构体的数据,就有可能导致数据不完整。所以加上互斥锁,读的时候不能写,必须等读取完毕后才能写入,同理在往结构体中写数据时,不能读取,直到结构体更新完成才能读取。[0051]图2示意性地显示了根据本发明一种实施方式的余票更新的方法的应用服务器和数据库的余票更新流程。[0052]在步骤101,交易服务器I发生影响余票数量的购票、退票或改签操作。[0053]在步骤102,交易服务器I将整理后的余票数据以xml格式发送给车站票务服务器2。[0054]在步骤103,应用服务器6每隔30秒定时查询车站票务服务器2的余票数据是否有更新操作,如有,则进入步骤104;如没有,则直接进入步骤107,结束一次应用服务器6的余票数据查询操作。[0055]在步骤104,应用服务器6使用互斥锁锁住内存中相应的结构体。[0056]在步骤105,应用服务器6更新结构体中的余票数据。[0057]在步骤106,应用服务器6是否内存中的结构体。[0058]在步骤107,结束一次应用服务器6的余票数据更新操作。[0059]在步骤108,车站票务服务器2将xml格式的余票数据解析成相应的list集合。[0060]在步骤109,车站票务服务器2将解析后的余票数据,根据List集合组合余票更新的SQL语句,更新数据库5中原有余票数据。[0061]客户端4可以包括进行文字或图形显示的显示屏41(IXD显示屏或LED显示屏等)、广播42和余票查询终端43(自助查询机或余票查询网页等)等。[0062]当旅客需要通过客户端4进行余票数量查询的时候,客户端4主动通过负载均衡器3与多个应用服务器6连接,由负载均衡器3确定哪个应用服务器6处理这个请求。应用服务器6将接收到的余票查询请求进行验证,判断是否符合查询规范,如符合查询规范,就查询应用服务器6的内存中的余票数据,再向客户端4返回该余票数据。[0063]在本实施例中,应用服务器6每隔30秒查询并获取车站票务服务器2中的当前余票数据,并更新应用服务器6的余票数据。客户端4通过负载均衡器3查询应用服务器6中的余票数据。这两个查询过程是独立的,使得旅客查询到的余票数据是准确及时的。[0064]查询规范:数据是否完整、正确以及是否符合查询范围(例如车站站码的验证)。这里会验证车站站码可以是自己定义的,例如:01001新塘,01004望洪。[0065]图3示意性地显示了根据本发明一种实施方式的余票更新的方法的客户端的余票更新流程。[0066]在步骤201,旅客在客户端4发出余票查询请求。[0067]在步骤202,客户端4主动通过负载均衡器3与应用服务器6连接,由负载均衡器3决定哪一台应用服务器6来响应客户端的服务请求。[0068]在步骤203,被选中的应用服务器6验证客户端4的查询请求舒服符合查询规范,如果符合就进入步骤203,该应用服务器6向客户端4返回当前余票数据;如果不符合,则返回客户端4,提示查询操作错误。[0069]为满足高并发量的需求,需要使用负载均衡技术,建立一个高负载的应用服务器。通常单一设备服务器无法满足,必须使用多服务器的分布式结构。本发明中还使用代理服务器和应用服务器6相结合的方式,或者采用多台应用服务器6相互协作的方式的结构,可以利用该技术,将外部发送来的请求均匀分配到对称结构中的每台应用服务器上,接收到连接请求的应用服务器6都独立回应客户的请求。代理服务器,其功能就是代理网络用户去取得网络彳目息。形象的说:它是网络彳目息的中转站。[0070]以上所述的仅是本发明的一些实施方式。对于本领域的普通方法人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。【权利要求】1.余票更新的方法,其特征在于,包括如下步骤:步骤一,当余票数量发生变化时,交易服务器(I)将余票数据整理后发送给车站票务服务器(2);步骤二,多个应用服务器(6)定时查询并获取所述车站票务服务器(2)中的所述余票数据,应用服务器(6)先清空其内存的结构体中的原有余票数据,再将获取的所述余票数据存入所述结构体中;多个客户端(4)通过负载均衡器(3)与多个所述应用服务器(6)连接,所述结构体中的数据存储结构为Dictionary存储结构。2.根据权利要求1所述的余票更新的方法,其中在步骤一所述交易服务器(I)将整理后的所述余票数据以xml格式发送给所述车站票务服务器(2)。3.根据权利要求2所述的余票更新的方法,还包括车站票务服务器(2)将所述余票数据按业务规则整理后传送到数据库(5)中,更新数据库(5)中原有余票数据。4.根据权利要求3所述的余票更新的方法,其中所述车站票务服务器(2)将xml格式的所述余票数据解析成相应的list集合,根据List集合组合余票更新的SQL语句,更新所述数据库(5)中原有余票数据。5.根据权利要求4所述的余票更新的方法,其中在步骤二所述应用服务器(6)将获取的xml格式的余票数据解析后,按照所述结构体的格式存入结构体中,并优化查询方法。6.根据权利要求1?5任一项所述的余票更新的方法,其中在步骤二所述应用服务器(6)每隔30秒查询并获取所述车站票务服务器(2)中的当前所述余票数据。7.根据权利要求1?5任一项所述的余票更新的方法,其中在步骤二所述应用服务器(6)获取所述余票数据后,先将其内存的所述结构体使用互斥锁锁住,然后更新所述结构体的余票数据,再释放所述结构体。【文档编号】G06F17/30GK103838855SQ201410097192【公开日】2014年6月4日申请日期:2014年3月17日优先权日:2014年3月17日【发明者】马军,付靖,乔明明,刘彦能,王华平,张凤飞,鞠伟光,唐杰胜申请人:广东创能科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1