【技术实现步骤摘要】
本专利技术涉及通信
,尤其涉及一种数据推送方法和时序控制器以及数据推送系统。
技术介绍
在应用程序(Application,APP)里需要展示用户数据,例如在游戏类的APP中需要展示玩家在游戏里的数据,包括玩家信息、好友列表、比赛战绩等。这些数据的产生来自游戏服务器,游戏服务器会在数据产生后推送一份给APP服务器,APP服务器再保存起来供用户查询。游戏服务器向APP服务器推送的数据量较大时,通常采用分包的方法来推送数据,即将一个较大的数据包拆分为多个较小的数据包推送至APP服务器。APP服务器就会在极短时间内接收到来自同一个用户的多个数据包。由于APP服务器在处理每一个数据包时,都要对存储服务器进行读和写两次操作,在保存数据的时候就会遇到高并发读写冲突的问题,导致数据保存失败或数据读写效率过低,APP服务器短时间内接收到多个数据包,APP服务器要进行针对每个数据包都进行一次读写操作,而这些读操作和写操作之间的顺序是随机的,因此可能会出现读出来的数据不是所需要的数据,写入的数据覆盖了其他服务器所写的数据,这种问题称之为并发性读写冲突。现有技术中针对并发性读写冲突的一种解决方法是采用比较并交换(CompareAndSwap,CAS)操作的方法进行加锁读写。具体的,APP服务器在对存储服务器的某个位置上存储的数据进行读写操作时采用CAS操作,CAS操作包含三个操作数:内存位置、预期原值和新值。如果内存位置的值与预期原值相匹配,那么APP服务器会自动将该位置值更新为新值。否则,APP服务器不做任何操作,因此通过加锁读写的方式可以解决并发性读写冲突。但是本专 ...
【技术保护点】
一种数据推送方法,其特征在于,包括:接收交互式应用服务器分别发送的至少两个数据包,将接收到的所述至少两个数据包分别存储到本地缓存队列中;从所述本地缓存队列中取出第一数据包,将所述第一数据包发送给应用程序服务器,由所述应用程序服务器使用所述第一数据包与存储服务器进行读写处理;获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理;若在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,从所述本地缓存队列中取出第二数据包,将所述第二数据包发送给所述应用程序服务器,由所述应用程序服务器使用所述第二数据包与所述存储服务器进行读写处理。
【技术特征摘要】
1.一种数据推送方法,其特征在于,包括:接收交互式应用服务器分别发送的至少两个数据包,将接收到的所述至少两个数据包分别存储到本地缓存队列中;从所述本地缓存队列中取出第一数据包,将所述第一数据包发送给应用程序服务器,由所述应用程序服务器使用所述第一数据包与存储服务器进行读写处理;获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理;若在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,从所述本地缓存队列中取出第二数据包,将所述第二数据包发送给所述应用程序服务器,由所述应用程序服务器使用所述第二数据包与所述存储服务器进行读写处理。2.根据权利要求1所述的方法,其特征在于,所述至少两个数据包是所述交互式应用服务器采用并发方式同时发送的;所述将接收到的所述至少两个数据包分别存储到本地缓存队列中,包括:对接收到的所述至少两个数据包分别进行依次顺序编号,并按照编号顺序将所述至少两个数据包依次存储到本地缓存队列中。3.根据权利要求2所述的方法,其特征在于,所述从所述本地缓存队列中取出第一数据包,包括:按照编号顺序从所述本地缓存队列中取出编号顺序为首位的第一数据包,所述本地缓存队列中取出所述第一数据包之后第二数据包处于编号顺序的首位;所述从所述本地缓存队列中取出第二数据包,包括:按照编号顺序从所述本地缓存队列中取出编号顺序为首位的第二数据包。4.根据权利要求1所述的方法,其特征在于,所述至少两个数据包是所述交互式应用服务器按照相邻数据包之间的依赖顺序发送的;所述将接收到的所述至少两个数据包分别存储到本地缓存队列中,包括:从接收到的所述至少两个数据包中确定相邻数据包之间的依赖顺序,并按照所述相邻数据包之间的依赖顺序将所述至少两个数据包依次存储到本地缓存队列中。5.根据权利要求4所述的方法,其特征在于,所述从所述本地缓存队列中取出第一数据包,包括:按照相邻数据包之间的依赖顺序从所述本地缓存队列中取出不依赖于其它数据包的第一数据包,所述本地缓存队列中与所述第一数据包具有依赖顺序的数据包为第二数据包;所述从所述本地缓存队列中取出第二数据包,包括:按照相邻数据包之间的依赖顺序从所述本地缓存队列中取出与所述第一数据包具有依赖顺序的第二数据包。6.根据权利要求1至5中任一项所述的方法,其特征在于,所述获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理,包括:判断当前是否接收到所述应用程序服务器发送的对所述第一数据包的处理完成消息,若接收到所述对所述第一数据包的处理完成消息,则确定在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,若没有接收到所述对所述第一数据包的处理完成消息,则确定在当前时刻所述应用程序服务器尚未完成对所述第一数据包的读写处理。7.根据权利要求1至5中任一项所述的方法,其特征在于,所述获取在当前时刻所述应用程序服务器是否完成对所述第一数据包的读写处理,包括:将所述第一数据包发送给所述应用程序服务器的发送时间点记录为起始时刻,判断从所述起始时刻直至当前所经过的时间长度是否达到时长阈值,若所述时间长度达到所述时长阈值,则确定在当前时刻所述应用程序服务器已经完成对所述第一数据包的读写处理,若所述时间长度没有达到所述时长阈值,则确定在当前时刻所述应用程序服务器尚未完成对所述第一数据包的读写处理。8.根据权利要求7所述的方法,其特征在于,所述时长阈值通过如下方式确定:获取所述应用程序服务器与所述存储服务器进行读写处理所需要的处理耗时;选择大于或等于所述处理耗时的时间段作为所述时长阈值。9.一种时序控制器,其特征在于,包括:数据包存储模块,用于接收交互式应用服务器分别发送的至少两个数据包,将接收到的所述至少两个数据包分别存储到本地缓存队列中;第一发送模块,用于从所述本地缓存队列中取出第一数据包,将所述第一数据包发送给应用程序服务器,由所述应用程序服务器使用所述第一数据包与存储服...
【专利技术属性】
技术研发人员:冯锋,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。