本申请涉及数据存储领域,特别涉及一种游戏服务器玩家数据处理方法、系统和电子装置。
背景技术:
1、大型游戏在运营期间,由于玩家数量众多,产生的数据非常庞大,需要实时将玩家的数据进行存储以及永久化存储。
2、传统的技术方案中,有的是通过在指定时间关停服务器完成,这样会导致所有在线用户在系统升级期间无法访问服务,不仅影响用户的用户体验,也给公司带来不小的经济损失,影响比较大。也有的方案是存储前发送指令给玩家用户端,断开用户端连接,要求其他服务器登录,从用户角度,这也导致了服务的中断,用户体验仍然不好。
3、因此,如何实现快速加载玩家数据,并且在不影响玩家游戏的同时,能够高效对玩家数据进行存储是当前亟待解决的问题。
技术实现思路
1、为解决上述问题,本发明提供一种游戏服务器玩家数据处理方法,应用于服务器系统中,所述服务器系统包括缓存同步服务器以及主服务器,所述主服务器中包括未被存盘的脏队列、失败队列以及存储队列,包括:
2、s1:将玩家数据缓存在redis中,作为缓存队列;
3、s2:启动缓存同步服务器,将缓存队列中的玩家数据同步至缓存同步服务器中,包括:
4、s21:缓存同步服务器不断尝试从主服务器中抢占地位,若抢占成功,则从待存队列中查询到缓存队列;
5、s22:将缓存队列存储到持久化数据库中,正在将缓存队列进行持久化存储的队列为存储队列,若存储失败,则将存盘失败的玩家uid集合设为失败队列。
6、进一步地,所述玩家数据包括数据以及版本。
7、进一步地,步骤s22中,如果失败队列超过预设的上限,则将缓存同步服务器让出主服务器地位。
8、进一步地,步骤s21中,从待存队列中查询到缓存队列具体包括:
9、按照优先级循环不断依次从失败队列、存储队列、脏队列中获取待存储的uid,最高不超过同时存盘数量上限,其中:
10、若从存储队列获取,则只在抢占主服务器成功后,执行一次;
11、若从脏队列中取uid,需要额外加入存储队列,其后删除脏队列对应uid,再加入待存队列。
12、进一步地,s22:将缓存队列存储到持久化数据库中,正在将缓存队列进行持久化存储中,若存储成功,则判断玩家数据缓存版本是否和当前redis中玩家数据缓存版本相同,如果相同,则设置redis中玩家数据缓存的过期时间,同时删除在存储队列中对应的uid。
13、进一步地,所述缓存队列采用redis的hash数据结构进行存储,uid作为redis的key,hash中的字段包括:用于保存玩家缓存数据以及用于保存数据的版本。
14、进一步地,所述脏队列采用redis的sort set数据结构,uid作为sort set的key,数据首次进入队列时间作为sort set的score。
15、本发明还提供一种游戏服务器玩家数据处理系统,包括加载单元以及同步存储处理单元,其中:
16、加载单元用以玩家数据的快速存储并进行持久化,具体包括:
17、同步存储处理单元启动缓存同步服务器,将缓存队列中的玩家数据同步至缓存同步服务器中,包括:
18、s21:缓存同步服务器不断尝试从主服务器中抢占地位,若抢占成功,则从待存队列中查询到缓存队列;
19、s22:将缓存队列存储到持久化数据库中,正在将缓存队列进行持久化存储的队列为存储队列,若存储失败,则将存盘失败的玩家uid集合设为失败队列。
20、本发明还一种计算机存储介质,所述计算机存储介质可存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述任一所述的游戏服务器玩家数据处理方法。
21、本发明还一种电子装置,所述电子装置包括处理器以及存储器,所述存储器用于存储可执行程序,所述处理器用于执行所述可执行程序以实现上述的游戏服务器玩家数据处理方法。
22、利用本发明公开的方法、系统和电子装置,能够实现玩家数据的快速加载以及如何保证玩家数据快速存储并进行持久化。
23、为了对本发明有更清楚全面的了解,下面结合附图,对本发明的具体实施方式进行详细描述。
1.一种游戏服务器玩家数据处理方法,应用于服务器系统中,所述服务器系统包括缓存同步服务器以及主服务器,所述主服务器中包括未被存盘的脏队列、失败队列以及存储队列,其特征在于,包括:
2.如权利要求1中所述的方法,其特征在于,所述玩家数据包括数据以及版本。
3.如权利要求1中所述的方法,其特征在于,步骤s22中,如果失败队列超过预设的上限,则将缓存同步服务器让出主服务器地位。
4.如权利要求1中所述的方法,其特征在于,步骤s21中,从待存队列中查询到缓存队列具体包括:
5.如权利要求1中所述的方法,其特征在于,s22:将缓存队列存储到持久化数据库中,正在将缓存队列进行持久化存储中,若存储成功,则判断玩家数据缓存版本是否和当前redis中玩家数据缓存版本相同,如果相同,则设置redis中玩家数据缓存的过期时间,同时删除在存储队列中对应的uid。
6.如权利要求1所述的方法,其特征在于,所述缓存队列采用redis的hash数据结构进行存储,uid作为redis的key,hash中的字段包括:用于保存玩家缓存数据以及用于保存数据的版本。
7.如权利要求1所述的方法,其特征在于,所述脏队列采用redis的sort set数据结构,uid作为sort set的key,数据首次进入队列时间作为sort set的score。
8.一种游戏服务器玩家数据处理系统,其特征在于,包括加载单元以及同步存储处理单元,其中:
9.一种计算机存储介质,其特征在于,所述计算机存储介质可存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述权利要求1-7任一所述的所述的游戏服务器玩家数据处理方法。
10.一种电子装置,其特征在于,所述电子装置包括处理器以及存储器,所述存储器用于存储可执行程序,所述处理器用于执行所述可执行程序以实现权利要求1-7任一所述的游戏服务器玩家数据处理方法。