一种分布式服务器结构的游戏抽奖方法及装置制造方法及图纸

技术编号:20821324 阅读:21 留言:0更新日期:2019-04-10 06:19
本发明专利技术实施例提供了一种分布式服务器结构下的游戏抽奖方法及装置,分布式服务器运行多个游戏进程,所述游戏进程可以通过网络与Redis数据库直接连接,分布式服务器通过游戏进程获取报名玩家的标识信息,然后根据报名玩家的标识信息,从报名玩家中选取中选玩家,并获取中选玩家的玩家数据,接着通过游戏进程将中选玩家的玩家数据写入Redis数据库中,并按照预设排序规则对中选玩家的玩家数据进行排序,然后由游戏进程从Redis数据库依次选取中选玩家的玩家数据作为中奖玩家的玩家数据,实现了在对海量玩家进行抽奖的情况下,通过分阶段随机抽奖,分散了服务器的计算压力,且参数可配置,服务器的性能不会随用户量的增长而受到影响。

【技术实现步骤摘要】
一种分布式服务器结构的游戏抽奖方法及装置
本专利技术涉及游戏
,特别是涉及一种分布式服务器结构的游戏抽奖方法及装置。
技术介绍
大型多人在线角色扮演游戏(MassiveMultiplayerOnlineRole-PlayingGame,MMORPG),MMORPG分为客户端和服务器两部分。玩家从客户端通过互联网连接,登陆服务器端后才能进行游戏。玩家的资料保存在服务器端。在游戏运营过程中,当遇到一些重大的节点活动,如新年,周年庆典,网络游戏营运商会举办一些玩家参与门槛很低的,奖励价值很高的的活动——如全服免费抽奖,可以活跃气氛,冲击在线人数,制造营销话题。大部分在线运营的游戏都有这种全服抽奖活动的需求。在现阶段,实现MMORPG全服抽奖活动的方式主要有以下三种:第一种方式,单服游戏结构,例如比较早期mmorpg游戏(梦话,大话端游),不同服务器的玩家数据相互隔离,进度不同。同一个游戏服中有且仅有一个唯一逻辑游戏服务器,这种情况不需要跨服务器进行通信,一般只需要一个抽奖业务模块,在活动期间收集玩家数据到内存中,当达到指定时间时,通过随机方法,抽取玩家。这种情况一般为单个游戏服,玩家的数量不多,且在同一个服务器中,实现简单。第二种方式,单服游戏结构,但是由多个游戏服务器组成。一般的mmorpg游戏都采用类似结构,便于单个游戏服可以支撑更多的玩家。这种形式,需要在服务器内设计中心的游戏服务器,或者独立的处理公共逻辑的主服务器。可以通过服务器之间的通信把玩家的报名数据收集在单点服务器中,然后再定点实现抽奖。这种情况,玩家数量级,一般不会超过10W,处于可控的范围。第三种方式,大世界类型的游戏,这种类型游戏所有玩家都在同一个虚拟世界游戏,如现在的moba类游戏,吃鸡类游戏。特点是玩家众多,日活跃用户数量(DailyActiveUser,DAU)可以达到在千万级,甚至更高。其服务器结构的特点是分布式的,具备平行扩展,支持海量用户的能力。玩家在看上去统一的入口背后,运行着几百甚至上千的游戏服务器。这个情况,需要考虑玩家的数据量,存储的内存占用。一般的做法是由一个中心服的单点来登记参与玩家的信息。然后再通过随机算法抽奖,只不过由于服务器架构复杂,这种游戏的报名通信,通知广播等也都更加复杂。基于上述分析可知,第一种游戏服务器结构已经较为过时,处理方式虽然简单但不适用于当先游戏服务端的发展。第二种、第三种是当前游戏服务端的处理方案,然而在上述方案,需要考虑系统容灾能力,在数据量超大的情况下,容易造成I/O瓶颈,同时服务器启动时,也需要耗费较多的加载时间。
技术实现思路
本专利技术实施例提供一种分布式服务器结构的游戏抽奖方法和相应的一种分布式服务器结构的游戏抽奖装置。为了解决上述问题,本专利技术实施例公开了一种分布式服务器结构的游戏抽奖方法,所述分布式服务器运行了多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述方法包括:通过所述游戏进程获取报名玩家的标识信息;由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据。优选地,所述由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据,包括:通过所述游戏进程获取预设中选人数;由所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;判断所述报名玩家的第一数值是否在中选区间内;若是,则将所述报名玩家选取为中选玩家。优选地,所述通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序,包括:由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;通过所述游戏进程将所述中选数据写入所述Redis数据库中;由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。优选地,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据,包括:当达到开奖条件时,选取一个所述游戏进程作为开奖进程;所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目的所述中选数据作为中奖数据。优选地,所述选取一个所述游戏进程作为开奖进程,包括:所有所述游戏进程按照抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,并将所述第一键值写入所述Redis数据库的所述中选数据排序表中;将写入成功的游戏进程作为所述开奖进程。优选地,所述玩家数据包括:所述标识信息、玩家所在大厅标识、玩家头像、玩家头像框,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据的步骤之后,所述方法还包括:通过所述Redis数据库返回所述中奖数据;由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息;通过所述开奖进程向所有在线客户端发送所述中奖信息,并为所述中奖玩家发奖。本专利技术实施例还公开了一种分布式服务器结构的游戏抽奖装置,其特征在于,所述分布式服务器运行多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述装置包括:玩家信息获取模块,用于通过所述游戏进程获取报名玩家的标识信息;中选玩家选取模块,用于由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;玩家数据排序模块,用于通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;中奖玩家选取模块,用于由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据。优选地,所述中选玩家选取模块包括:中选人数获取子模块,用于由所述游戏进程获取预设中选人数的数值;第一数值分配子模块,用于通过所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;中选判断子模块,用于判断所述报名玩家的第一数值是否在中选区间内;中选玩家选取子模块,用于当所述报名玩家的第一数值落入所述中选区间内时,将所述报名玩家选取为中选玩家;中选玩家确定子模块,用于由所述游戏进程对所述第一数值与所述预设中选人数的数值进行比较,当所述第一数值小于或等于所述预设中选人数的数值时,将所述报名玩家选取为所述中选玩家。优选地,所述玩家数据排序模块包括:中选数据生成子模块,用于由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;中选数据写入子模块,用于通过所述游戏进程将所述中选数据写入所述Redis数据库中;排序表生成子模块,用于由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。优选地,所述中奖玩家选取模块包括:开奖进程选取子模块,用于当达到开奖条件时,选取一个所述游戏进程作为开奖进程;中奖数据读取子模块,用于所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目本文档来自技高网
...

【技术保护点】
1.一种分布式服务器结构的游戏抽奖方法,其特征在于,所述分布式服务器运行了多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述方法包括:通过所述游戏进程获取报名玩家的标识信息;由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据。

【技术特征摘要】
1.一种分布式服务器结构的游戏抽奖方法,其特征在于,所述分布式服务器运行了多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述方法包括:通过所述游戏进程获取报名玩家的标识信息;由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据;通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序;由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据。2.根据权利要求1所述的方法,其特征在于,所述由所述游戏进程根据所述标识信息,从所述报名玩家中选取中选玩家,并获取所述中选玩家的玩家数据,包括:通过所述游戏进程获取预设中选人数;由所述游戏进程为所述报名玩家分配一个与所述标识信息对应的第一数值;判断所述报名玩家的第一数值是否在中选区间内;若是,则将所述报名玩家选取为中选玩家。3.根据权利要求2所述的方法,其特征在于,所述通过所述游戏进程将所述中选玩家的玩家数据写入所述Redis数据库中,并按照预设排序规则对所述中选玩家的玩家数据进行排序,包括:由所述游戏进程采用所述中选玩家的玩家数据和所述第一数值生成中选数据;通过所述游戏进程将所述中选数据写入所述Redis数据库中;由所述Redis数据库按照所述第一数值的大小,生成中选数据排序表。4.根据权利要求3所述的方法,其特征在于,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据,包括:当达到开奖条件时,选取一个所述游戏进程作为开奖进程;所述开奖进程用于从所述Redis数据库中按照顺序,或,倒序读取预设数目的所述中选数据作为中奖数据。5.根据权利要求4所述的方法,其特征在于,所述选取一个所述游戏进程作为开奖进程,包括:所有所述游戏进程按照抽奖活动的抽奖名、抽奖时间和中选数据排序表的表名,生成第一键值,并将所述第一键值写入所述Redis数据库的所述中选数据排序表中;将写入成功的游戏进程作为所述开奖进程。6.根据权利要求4所述的方法,其特征在于,所述玩家数据包括:所述标识信息、玩家所在大厅标识、玩家头像、玩家头像框,所述由所述游戏进程从所述Redis数据库依次选取所述中选玩家的玩家数据作为中奖玩家的玩家数据的步骤之后,所述方法还包括:通过所述Redis数据库返回所述中奖数据;由所述开奖进程解析所述中奖数据,获得所述中奖玩家的玩家数据;由所述开奖进程将所述中奖玩家的所述标识信息、所述玩家所在大厅标识、所述玩家头像、所述玩家头像框,作为中奖信息;通过所述开奖进程向所有在线客户端发送所述中奖信息,并为所述中奖玩家发奖。7.一种分布式服务器结构的游戏抽奖装置,其特征在于,所述分布式服务器运行多个游戏进程,所述游戏进程与Redis数据库通过网络连接,所述装置包括:玩家信息获取模块,用于通过所述游戏进程获取报名玩家的标识信息;中选玩家选取模块,用于由所述游戏进程根据所述标识信息,从所述报名玩家...

【专利技术属性】
技术研发人员:宋浪
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江,33

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

1