一种数据推送方法和时序控制器以及数据推送系统技术方案

技术编号:14526422 阅读:128 留言:0更新日期:2017-02-02 05:49
本发明专利技术公开了一种数据推送方法和时序控制器以及数据推送系统,提高应用程序服务器的数据读写效率。本发明专利技术实施例提供一种数据推送方法,包括:接收交互式应用服务器分别发送的至少两个数据包,将接收到的至少两个数据包分别存储到本地缓存队列中;从本地缓存队列中取出第一数据包,将第一数据包发送给应用程序服务器,由应用程序服务器使用第一数据包与存储服务器进行读写处理;获取在当前时刻应用程序服务器是否完成对第一数据包的读写处理;若在当前时刻应用程序服务器已经完成对第一数据包的读写处理,从本地缓存队列中取出第二数据包,将第二数据包发送给应用程序服务器,由应用程序服务器使用第二数据包与存储服务器进行读写处理。

【技术实现步骤摘要】

本专利技术涉及通信
,尤其涉及一种数据推送方法和时序控制器以及数据推送系统
技术介绍
在应用程序(Application,APP)里需要展示用户数据,例如在游戏类的APP中需要展示玩家在游戏里的数据,包括玩家信息、好友列表、比赛战绩等。这些数据的产生来自游戏服务器,游戏服务器会在数据产生后推送一份给APP服务器,APP服务器再保存起来供用户查询。游戏服务器向APP服务器推送的数据量较大时,通常采用分包的方法来推送数据,即将一个较大的数据包拆分为多个较小的数据包推送至APP服务器。APP服务器就会在极短时间内接收到来自同一个用户的多个数据包。由于APP服务器在处理每一个数据包时,都要对存储服务器进行读和写两次操作,在保存数据的时候就会遇到高并发读写冲突的问题,导致数据保存失败或数据读写效率过低,APP服务器短时间内接收到多个数据包,APP服务器要进行针对每个数据包都进行一次读写操作,而这些读操作和写操作之间的顺序是随机的,因此可能会出现读出来的数据不是所需要的数据,写入的数据覆盖了其他服务器所写的数据,这种问题称之为并发性读写冲突。现有技术中针对并发性读写冲突的一种解决方法是采用比较并交换(CompareAndSwap,CAS)操作的方法进行加锁读写。具体的,APP服务器在对存储服务器的某个位置上存储的数据进行读写操作时采用CAS操作,CAS操作包含三个操作数:内存位置、预期原值和新值。如果内存位置的值与预期原值相匹配,那么APP服务器会自动将该位置值更新为新值。否则,APP服务器不做任何操作,因此通过加锁读写的方式可以解决并发性读写冲突。但是本专利技术的专利技术人在实现本专利技术的过程中发现,上述CAS操作的方式需要针对每次读写操作都进行加锁,并且还需要进行值的判断,这会导致APP服务器的数据读写效率很低,并且这种方式并无法缓解高并发的读写冲突对APP服务器造成的极大处理负荷。
技术实现思路
本专利技术实施例提供了一种数据推送方法和时序控制器以及数据推送系统,能够采用无锁读写的方式解决并发性读写冲突对应用程序服务器造成的处理负荷,提高应用程序服务器的数据读写效率。第一方面,本专利技术实施例提供一种数据推送方法,包括:接收交互式应用服务器分别发送的至少两个数据包,将接收到的所述至少两个数据包分别存储到本地缓存队列中;从所述本地缓存队列中取出第一数据包,将所述第一数据包发送给应用程序服务器,由所述应用程序服务器使用所述第一数据包与存储服务器进行读写处理;获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理;若在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,从所述本地缓存队列中取出第二数据包,将所述第二数据包发送给所述应用程序服务器,由所述应用程序服务器使用所述第二数据包与所述存储服务器进行读写处理。第二方面,本专利技术实施例提供一种时序控制器,包括:数据包存储模块,用于接收交互式应用服务器分别发送的至少两个数据包,将接收到的所述至少两个数据包分别存储到本地缓存队列中;第一发送模块,用于从所述本地缓存队列中取出第一数据包,将所述第一数据包发送给应用程序服务器,由所述应用程序服务器使用所述第一数据包与存储服务器进行读写处理;数据推送确定模块,用于获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理;第二发送模块,用于若在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,从所述本地缓存队列中取出第二数据包,将所述第二数据包发送给所述应用程序服务器,由所述应用程序服务器使用所述第二数据包与所述存储服务器进行读写处理。第三方面,本专利技术实施例提供一种数据推送系统,包括:交互式应用服务器、如第二方面中任一项所述的时序控制器、应用程序服务器和存储服务器,其中,所述交互式应用服务器和所述时序控制器之间建立有通信连接,所述时序控制器和所述应用程序服务器之间建立有通信连接,所述应用程序服务器和所述存储服务器之间建立有通信连接;所述交互式应用服务器,用于向所述时序控制器发送至少两个数据包;所述应用程序服务器,用于接收所述时序控制器发送的第一数据包,使用所述第一数据包与所述存储服务器进行读写处理;接收所述时序控制器发送的第二数据包,使用所述第二数据包与所述存储服务器进行读写处理;所述存储服务器,用于和所述应用程序服务器进行所述第一数据包的读写处理交互;和所述应用程序服务器进行所述第二数据包的读写处理交互。从以上技术方案可以看出,本专利技术实施例具有以下优点:本专利技术实施例中,交互式应用服务器并不是直接和应用程序服务器进行数据推送,交互式应用服务器发送的至少两个数据包先被存储到本地缓存队列中,然后从本地缓存队列中先取出第一数据包,该第一数据包被转发给应用程序服务器,本专利技术实施例中在第一数据包发送之后,需要获取在当前时刻应用程序服务器是否完成对第一数据包的读写处理,只有在当前时刻应用程序服务器已经完成对第一数据包的读写处理时,本专利技术实施例才会从本地缓存队列中继续取出第二数据包,该第二数据包被转发给应用程序服务器。也就是说,本专利技术实施例中并不改变交互式应用服务器发送多个数据包的处理方式,但是交互式应用服务器发送的多个数据包并不是同时到达应用程序服务器,而是第一数据包、第二数据包按照串行处理的方式依次发送给应用程序服务器,该应用程序服务器在第一数据包处理完成之后才会接收到第二数据包,对于应用程序服务器而言,并不是在很短时间内接收到大量数据包,因此本专利技术实施例可以缓解应用程序服务器的高并发的读写冲突,减少应用服务器的处理负荷。本专利技术实施例通过对多个数据包的时序调控,串行化地处理数据读写,以无锁的形式避免了读写冲突,提高了数据读写性能,同时也保证了数据包的完整性。附图说明图1为本专利技术实施例提供的数据推送方法的一个实施例的流程示意图;图2为本专利技术实施例提供的数据推送方法的系统架构示意图;图3为本专利技术实施例的数据推送系统内的一种交互流程示意图;图4为本专利技术实施例的数据推送系统内的另一种交互流程示意图;图5是本专利技术实施例提供的一种时序控制器的组成结构示意图;图6是本专利技术实施例提供的数据推送方法应用于服务器的结构示意图;图7是本专利技术实施例提供的一种数据推送系统的组成结构示意图。具体实施方式本专利技术实施例提供了一种数据推送方法和时序控制器以及数据推送系统,能够采用无锁读写的方式解决并发性读写冲突对应用程序服务器造成的处理负荷,提高应用程序服务器的数据读写效率。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部实施例。基于本专利技术中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。本专利技术实施例应用于数据推送过程中对应用程序服务器容易产生的并发性读写冲突进行有效缓解,首先对本专利技术实施例提供的数据推送方法应用的系本文档来自技高网
...

【技术保护点】
一种数据推送方法,其特征在于,包括:接收交互式应用服务器分别发送的至少两个数据包,将接收到的所述至少两个数据包分别存储到本地缓存队列中;从所述本地缓存队列中取出第一数据包,将所述第一数据包发送给应用程序服务器,由所述应用程序服务器使用所述第一数据包与存储服务器进行读写处理;获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理;若在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,从所述本地缓存队列中取出第二数据包,将所述第二数据包发送给所述应用程序服务器,由所述应用程序服务器使用所述第二数据包与所述存储服务器进行读写处理。

【技术特征摘要】
1.一种数据推送方法,其特征在于,包括:接收交互式应用服务器分别发送的至少两个数据包,将接收到的所述至少两个数据包分别存储到本地缓存队列中;从所述本地缓存队列中取出第一数据包,将所述第一数据包发送给应用程序服务器,由所述应用程序服务器使用所述第一数据包与存储服务器进行读写处理;获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理;若在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,从所述本地缓存队列中取出第二数据包,将所述第二数据包发送给所述应用程序服务器,由所述应用程序服务器使用所述第二数据包与所述存储服务器进行读写处理。2.根据权利要求1所述的方法,其特征在于,所述至少两个数据包是所述交互式应用服务器采用并发方式同时发送的;所述将接收到的所述至少两个数据包分别存储到本地缓存队列中,包括:对接收到的所述至少两个数据包分别进行依次顺序编号,并按照编号顺序将所述至少两个数据包依次存储到本地缓存队列中。3.根据权利要求2所述的方法,其特征在于,所述从所述本地缓存队列中取出第一数据包,包括:按照编号顺序从所述本地缓存队列中取出编号顺序为首位的第一数据包,所述本地缓存队列中取出所述第一数据包之后第二数据包处于编号顺序的首位;所述从所述本地缓存队列中取出第二数据包,包括:按照编号顺序从所述本地缓存队列中取出编号顺序为首位的第二数据包。4.根据权利要求1所述的方法,其特征在于,所述至少两个数据包是所述交互式应用服务器按照相邻数据包之间的依赖顺序发送的;所述将接收到的所述至少两个数据包分别存储到本地缓存队列中,包括:从接收到的所述至少两个数据包中确定相邻数据包之间的依赖顺序,并按照所述相邻数据包之间的依赖顺序将所述至少两个数据包依次存储到本地缓存队列中。5.根据权利要求4所述的方法,其特征在于,所述从所述本地缓存队列中取出第一数据包,包括:按照相邻数据包之间的依赖顺序从所述本地缓存队列中取出不依赖于其它数据包的第一数据包,所述本地缓存队列中与所述第一数据包具有依赖顺序的数据包为第二数据包;所述从所述本地缓存队列中取出第二数据包,包括:按照相邻数据包之间的依赖顺序从所述本地缓存队列中取出与所述第一数据包具有依赖顺序的第二数据包。6.根据权利要求1至5中任一项所述的方法,其特征在于,所述获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理,包括:判断当前是否接收到所述应用程序服务器发送的对所述第一数据包的处理完成消息,若接收到所述对所述第一数据包的处理完成消息,则确定在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,若没有接收到所述对所述第一数据包的处理完成消息,则确定在当前时刻所述应用程序服务器尚未完成对所述第一数据包的读写处理。7.根据权利要求1至5中任一项所述的方法,其特征在于,所述获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理,包括:将所述第一数据包发送给所述应用程序服务器的发送时间点记录为起始时刻,判断从所述起始时刻直至当前所经过的时间长度是否达到时长阈值,若所述时间长度达到所述时长阈值,则确定在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,若所述时间长度没有达到所述时长阈值,则确定在当前时刻所述应用程序服务器尚未完成对所述第一数据包的读写处理。8.根据权利要求7所述的方法,其特征在于,所述时长阈值通过如下方式确定:获取所述应用程序服务器与所述存储服务器进行读写处理所需要的处理耗时;选择大于或等于所述处理耗时的时间段作为所述时长阈值。9.一种时序控制器,其特征在于,包括:数据包存储模块,用于接收交互式应用服务器分别发送的至少两个数据包,将接收到的所述至少两个数据包分别存储到本地缓存队列中;第一发送模块,用于从所述本地缓存队列中取出第一数据包,将所述第一数据包发送给应用程序服务器,由所述应用程序服务器使用所述第一数据包与存储服...

【专利技术属性】
技术研发人员:冯锋
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1