CN110898434A - 处理数据的方法、服务器、***和计算机可读程序介质 - Google Patents
处理数据的方法、服务器、***和计算机可读程序介质 Download PDFInfo
- Publication number
- CN110898434A CN110898434A CN201911073558.1A CN201911073558A CN110898434A CN 110898434 A CN110898434 A CN 110898434A CN 201911073558 A CN201911073558 A CN 201911073558A CN 110898434 A CN110898434 A CN 110898434A
- Authority
- CN
- China
- Prior art keywords
- player
- data
- game data
- server
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/5526—Game data structure
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/5546—Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种处理数据的方法和服务器,其中方法包括:初始化服务器时,将玩家游戏数据储存在第一数据库中,服务器启动后,将玩家游戏数据载入到内存中的不同数据结构中;玩家发送玩家游戏数据到服务器后,服务器对玩家游戏数据进行分类,将分类后的数据发送到预先配置的分管各类玩家游戏数据的消息队列中;读取服务器的数据时,优先从内存的不同数据结构中读取,若读取失败,则从第二数据库中读取数据,若读取失败,则从第一数据库中读取;存储数据时,优先更新内存中数据,再更新第一数据库中的数据,最后更新第二数据库中的数据。本申请实施例对不同类数据使用不同的存储和读取策略,降低了获取数据的复杂度,提高了游戏体验。
Description
技术领域
本申请涉及互联网技术领域,尤其是涉及一种处理数据的方法、服务器、***和计算机可读程序介质。
背景技术
随着数字经济产业的发展,中国游戏市场规模近年来保持高速增长,行业销售规模迎来重大突破,随之而来的高并发、数据共享、数据安全问题成了特别需要关注的问题,许多公司因此遭受了巨大损失。为了实现高并发时,不同地域位置的游戏服务器共用一个数据库的情况下,玩家能够无障碍、安全地切换服务器登录,就需要实现不同服务器间的数据同步与共享。在生产环境中,假设A、B为游戏服务器、C为客户端、D为数据库服务器,要保证玩家通过C用同一个账号可以切换登录A、B服务器,并且数据保持一致性以及良好的用户体验。
对于网站平台,由于不用用户的数据相对独立,用户响应时间不是游戏中那么敏感,采用的手段是每次更新数据,都对数据库直接操作,每次提取数据也直接从数据库中提取,从而数据始终是一致的。在游戏***中,玩家之间通过关注或者添加好友等方式相互关联,如果每次读取数据都从数据库中读取,势必导致嵌套查表,造成N2(N为玩家个数)的数据复杂度,导致游戏体验不佳。
发明内容
本申请实施例的主要目的在于提供一种处理数据的方法和服务器,对不同类玩家游戏数据使用不同的存储和读取策略,降低了获取玩家游戏数据的复杂度,提高了游戏体验。
第一方面,提供了一种处理数据的方法,包括:初始化服务器时,将玩家游戏数据储存在第一数据库中,服务器启动后,将所述玩家游戏数据载入到内存中的不同数据结构中;
玩家发送玩家游戏数据到服务器后,服务器对所述玩家游戏数据进行分类,将分类后的玩家游戏数据发送到预先配置的分管各类玩家游戏数据的消息队列中;
读取服务器的玩家游戏数据时,优先从所述内存的不同数据结构中读取,若读取失败,则从所述第二数据库中读取玩家游戏数据,若读取失败,则从所述第一数据库中读取;
存储玩家游戏数据时,优先更新内存中数据,再更新所述第一数据库中的玩家游戏数据,最后更新所述第二数据库中的玩家游戏数据。
其中一种设计中,所述第一数据库为Mysql数据库,第二数据库为Redis 缓存数据库。
其中一种设计中,所述方法还包括步骤:按照预设帧率轮询所述消息队列中是否有新的玩家游戏数据,如果有新的玩家游戏数据,则将所述新的玩家游戏数据发给同一个房间内的所有玩家。
其中一种设计中,所述方法还包括步骤:通过玩家任务管理对象对所述玩家的任务进行管理,每个玩家ID对应一个玩家任务管理对象;当玩家数据更新时,通过邮件配置数据,生成一条邮件保存在玩家邮件管理对象中,供所述玩家加载查看,所述每个玩家ID对应一个玩家邮件管理对象。
第二方面,本申请实施例提供了一种服务器,该服务器包括:
存储单元,用于初始化服务器时,将玩家游戏数据储存在第一数据库中,服务器启动后,将所述玩家游戏数据载入到内存中的不同数据结构中;还用于存储玩家游戏数据时,优先更新内存中数据,再更新所述第一数据库中的玩家游戏数据,最后更新所述第二数据库中的玩家游戏数据
分类单元,用于玩家发送玩家游戏数据到服务器后,服务器对所述玩家游戏数据进行分类,将分类后的玩家游戏数据发送到预先配置的分管各类玩家游戏数据的消息队列中;
读取单元,用于读取服务器的玩家游戏数据时,优先从所述内存的不同数据结构中读取,若读取失败,则从所述第二数据库中读取玩家游戏数据,若读取失败,则从所述第一数据库中读取。
其中一种设计中,所述第一数据库为Mysql数据库,第二数据库为Redis 缓存数据库。
其中一种设计中,所述的服务器还包括:
轮询单元,用于按照预设帧率轮询所述消息队列中是否有新的玩家游戏数据,如果有新的玩家游戏数据,则将所述新的玩家游戏数据发给同一个房间内的所有玩家。
其中一种设计中,所述的服务器还包括:
玩家任务管理对象单元,用于对所述玩家的任务进行管理,每个玩家ID对应一个玩家任务管理对象;
玩家邮件管理对象,用于当玩家数据更新时,通过邮件配置数据,生成一条邮件,保存在玩家邮件管理对象中,供所述玩家加载查看,所述每个玩家ID 对应一个玩家邮件管理对象。
第三方面,提供了一种游戏***,包括客户端以及如第二方面所述的服务器,游戏玩家通过所述客户端连接到所述服务器。
第四方面,提供了一种计算机可读程序介质,其存储有计算机程序指令,当所述计算机程序指令被计算机执行时,使计算机执行根据第一方面所述的方法步骤。
综上所述,本申请实施例通过将玩家游戏数据先分类,对不同类玩家游戏数据使用不同的存储和读取策略,并结合高效的消息队列和多线程技术,使本技术方案能够让处于不同地域位置的游戏服务器高效、准确的实现数据共享与同步,从而玩家可以用同一个账号在不同的服务器上登录游戏,游戏体验顺畅。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种处理数据的方法流程图;
图2(a)为本申请实施例提供的一种服务器的架构示意框图;
图2(b)为本申请实施例提供的另一种服务器的架构示意框图;
图2(c)为本申请实施例提供的另一种服务器的架构示意框图;
图3为本申请实施例提供的一种游戏服务器***示意图;
图4是本申请实施例提供的一种游戏服务器***示意图;
图5是本申请实施例提供的一种游戏服务器***多线程处理原理的示意图;
图6是本申请实施例提供的一种游戏服务器***多线程处理原理示意图。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
本说明书中的各个实施例示出了一种基于数据共享的高并发游戏服务器架构。通过将数据先分类,对不同类数据使用不同的存储和读取策略,并结合高效的消息队列和多线程技术,使本架构方案能够让处于不同地域位置的游戏服务器高效、准确的实现数据共享与同步,从而玩家可以用同一个账号在不同的服务器上登录游戏。
如图1所示,本申请实施例提供了一种处理数据的方法,至少包括以下步骤(以下所述第一数据库为Mysql数据库,所述第二数据库为Redis缓存数据库):
步骤101:初始化服务器,将游戏初始数据储存在第一数据库中(初始数据包括但不局限于任务配置数据、邮件配置数据、玩家等级配置数据等)。当服务器启动时,将玩家游戏数据载入到内存中的不同数据结构。
步骤102:玩家发送玩家游戏数据到服务器后,服务器对相应数据进行分类,所述玩家游戏数据信息包括但不局限于:玩家信息、战斗匹配消息和战斗消息;将各类消息发送到预先配置的分管各类消息的消息队列中,再由对应的线程池进行消息处理。
步骤103:读取服务器数据时,优先从内存数据结构中读取,若无数据,则从第二数据库中读取玩家游戏数据,若无数据,则从第一数据库中读取。
步骤104:存储数据时,优先更新内存中数据,再更新第一数据库中的数据,最后更新第二数据库中的数据。
本实施例中在高并发情况下,实现不同服务器之间的数据共享与同步。结合内存、Mysql数据库和Redis数据库三种存储方案。初始服务器时,将初始数据分类存入内存、第一数据库和第二数据库,初始数据包括但不局限于任务配置数据、邮件配置数据。高并发是指在某一时刻访问量比较大。服务器接收多个客户端的请求,许多客户端同时请求形成高并发数据。将***内数据分为三类,具体如下:
第一类:公共配置数据,例如任务配置数据、邮件描述信息等。这类数据是所有服务器都相同的,而且读取很频繁。这类数据在各个服务器启动时,分别载入自己的内存中。
第二类:玩家私有数据,例如玩家信件、玩家任务、玩家物品等。因为每个玩家的数据是独立的,所以当玩家对自己的数据操作时,并不会影响到别的玩家。因此这部分的数据同样需要载入内存中,当发生变化时,先更新内存中的数据,再修改数据库中的数据。
第三类:需要实时更新显示的数据,例如排行榜数据、玩家个人信息数据。将这类数据存放到Redis中,每次更新数据,先更新第一数据库Mysql中的数据,再更新第二数据库Redis中的数据,读取数据则直接从Redis中读取。
同时,本申请实施例还结合消息队列与多线程的技术方案实现以上的步骤方法流程。比如消息队列包括玩家信息消息队列,战斗匹配消息队列和战斗消息队列,多线程由线程池进行分配,线程池提供多线程处理数据并将数据进行分片推送到对应的本地队列,提升消息的处理速度。服务器利用线程池分配的多线程快速消费所述主数据队列中的高并发数据。其中,处理所述主数据队列中的高并发数据是指将主数据队列中的高并发数据移出该主数据队列。
本发明实施例通过将玩家游戏数据分类,对不同类玩家游戏数据使用不同的存储和读取策略,并结合高效的消息队列和多线程技术,使本架构方案能够让处于不同地域位置的游戏服务器高效、准确的实现数据共享与同步,从而玩家可以用同一个账号在不同的服务器上登录游戏。
如图2所示,本申请实施例公开了一种服务器,该服务器包括:
存储单元201,用于初始化服务器,将游戏初始数据储存在第一数据库中(初始数据包括但不局限于任务配置数据、邮件配置数据、玩家等级配置数据等)。当服务器启动时,将玩家游戏数据载入到内存中的不同数据结构。
分类单元202,用于玩家发送玩家游戏数据到服务器后,对相应数据进行分类,所述玩家游戏数据信息包括但不局限于:玩家信息、战斗匹配消息和战斗消息;将各类消息发送到预先配置的分管各类消息的消息队列中,再由对应的线程池进行消息处理。
读取单元203,用于读取服务器数据时,优先从内存数据结构中读取,若无数据,则从第二数据库中读取玩家游戏数据,若无数据,则从第一数据库中读取。
所述存储单元201还用于存储数据时,优先更新内存中数据,再更新第一数据库中的数据,最后更新第二数据库中的数据。
优选地,第一数据库为Mysql数据库,第二数据库为Redis缓存数据库。
另一实施例中,如图2(b)所示,服务器还可以包括:轮询单元204,用于按照预设帧率轮询所述消息队列中是否有新的玩家游戏数据,如果有新的玩家游戏数据,则将所述新的玩家游戏数据发给同一个房间内的所有玩家。
另一实施例中,如图2(c)所示,服务器还可以包括:玩家任务管理对象单元205,用于对所述玩家的任务进行管理,每个玩家ID对应一个玩家任务管理对象;玩家邮件管理对象,用于当玩家数据更新时,通过邮件配置数据,生成一条邮件,保存在玩家邮件管理对象中,供所述玩家加载查看,所述每个玩家ID对应一个玩家邮件管理对象。
下面以多人在线战术竞技游戏(Multiplayer Online Battle Arena,MOBA) 服务器***为例说明。如图3所示,本服务器的核心***主要由战斗***、排行***、任务***、好友***构成。
如图4所示,本实施例中服务器至少包括网络通信框架Netty、设计层开源框架Spring、序列化通信协议Probuf、持久层框架Mybatis,第一数据库Mysql 和第二数据库Redis用于数据的持久化和缓存。有的数据直接对Mysql进行操作,有的数据需要先写入Redis并从Reids中进行读取,Mysql中的数据会用于更新Redis,而Redis中的数据不会用于更新Mysql。
具体的配置和部署方式如下:
Server1和Server2为两台地域位置不同的阿里云Centos7 64位***服务器,在上面安装相同的Jdk版本,本实施例所用版本号为openjdk version 1.8.0_191(其它版本也可以,但或许部分逻辑接口要根据相应版本调整),用于运行游戏服务端jar包。
Mysql和Redis安装在另外一台服务器中,本实施例中使用的版本分别为 Redis-4.0.10和Mysql-14.14 Linux(x86_64),用于数据的持久化和缓存。
开发环境配置:服务端程序开发环境为Window 10 64位、Eclipse 2018,Jdk1.8.0_191,并通过maven发布jar包。
客户端发起连接后,以长连接的方式登录游戏,相应建立一个Channel,通过这个Channel进行通信。玩家上线时,Channel处于激活状态,玩家下线时, Channel则转为非激活状态。玩家登录以后,通过玩家的id检查该玩家是否为新用户,如果是新用户,创建玩家的User实例,并通过Map将Channel和玩家User映射。这样就可以通过Channel找到玩家;如果是老用户,同样要更新 Channel和User对应关系。
任务和邮件的配置数据,建成对应的表格保存在Mysql中,并在服务器启动的时候加载到内存中作为缓存,对应的管理类为TaskManager和MailManager。加载在内存中的好处是,下次读取数据时,不用去Mysql中取数据,直接从内存中取数据,效率更高。而且这些配置数据量不是很大,不会占用太多内存。
如图5所示,当新注册的玩家登录游戏后,通过获取TaskManager中缓存的任务配置数据,生成玩家自己的任务(Task)数据,保存在UserTaskManager 中,需要注意的是,每个User必须要拥有一个UserTaskManager对象,负责该玩家的Task管理。同理,每个User拥有一个UserMailManager对象,在玩家等级提升或者达成成就时,通过MailManager中的配置数据,生成一条玩家的 Mail,保存在UserMailManager中,供玩家加载查看等操作。这部分的数据,既需要保存在内存中,并持久化到数据库中。玩家再次登录时,需要从数据库重新加载一次这些数据,从而保证玩家从不同服务器登录时的数据是同步的。
对于像排行榜数据、玩家个人信息数据等数据是需要实时更新显示的数据。每次更新这些数据,先更新Mysql中的数据,再更新Redis中的数据,读取数据则直接从Redis中读取。
如图6所示,本实施中游戏***包括三个消息队列:UserMsgQueue、MatchMsgQueue和FightMsgQueue。同时设置三个线程去分别处理三个队列中的数据。UserMsgQueue保存玩家个人以及玩家之间的数据操作消息; MatchMsgQueue保存玩家战斗匹配相关消息;FightMsgQueue保存战斗中的操作数据。具体逻辑为:当玩家向服务器发送消息时,服务端通过channel进行传输到不同的handle中进行处理。首先进行解码,然后根据获取到的消息类型,对消息进行分类,添加到对应的三个消息队列中。对应的三个线程在***启动时开始运行,检测到对应消息队列中的消息后就进行相应处理。结合Netty本身的NIO特性,该***的并发性能够解决绝大多数游戏服务器的需求。
对于战斗***,本实施例通过帧同步技术,实现同一个房间里的玩家数据同步。一种实现方式是在FightMsgQueue对应的线程中,设定好帧率,不断轮询FightMsgQueue中是否有新数据,如果有新数据,就封装成Frame,分发给房间内所有的玩家。玩家根据收到的数据,对界面进行刷新。在这个过程如果涉及到相对复杂的任务(如数据统计、分发消息给玩家),都需要异步处理,不能让复杂的运算阻塞了消息的同步。
对于排行榜,由于要支持成千上万玩家同时在线的实时得分排行,因此不能简单得通过O^2的算法实现,但是如果把数据加载到内存中,通过树形区间算法排序,同样会占用非常大的内存,而且是不能回收的内存,因此采用Redis,将排序功能做成一个单独的服务放在数据服务器上,玩家直接调用,就可以圆满解决上述问题。具体的做法是:
当玩家获得新的分数时,通过算法获得一个新的分数值作为要存入Redis 的数据。关于算法,比如是首先获得当前时间的秒数,获得时间差,为了使相同分数的玩家,先获得者排在前面,后获得的玩家排在后面,所以先获得的玩家加一个较大数,后获得玩家加一个较小数。然后再获得redis要存放的分数值。通过玩家的uid区分不同玩家,再用RankKey字符串区分不同的排行榜(不同战斗模式对应不同),添加到Redis的SortedSet(有序集合)中。
调用的接口如下所示,参数Key对应RankKey,score对应redis_score, member对应uid。
通过如下算法获得排名在某区间内的玩家,根据玩家获得的分数从大到小排序。参数start和stop对应具体区间,key则对应不同的排行榜,由于 Redis中数据索引从0开始,因此要进行减一操作。
在游戏服务器启动时,将玩家的排行数据载入Redis中,多个游戏服务器共用一个Redis,加载数据时,Redis会根据玩家的uid刷新Redis中已经存在的数据,所以不会造成数据的重复。当玩家进行操作时产生了新的分数,那么将玩家的分数分别存入到Redis和Mysql中。当玩家需要获得排行榜数据时,直接从Redis中调用,这样所有玩家调用到的排行榜数据都是实时的。
读取玩家个人信息时,优先读取Redis,并保持与Mysql中的数据一致。在游戏中,玩家的权限只能通过排行榜或者好友列表查看其他玩家的个人基本信息,因此,玩家获取的数据,也是实时同步数据。如果玩家的好友很多,就通过分页加载的方式,这样客户端就不会出现卡顿的情况。
本申请实施例还公开了一种游戏***,包括客户端和如图2(a)、或2(b)、或2(c)所示的服务器,游戏玩家通过所述客户端连接到所述服务器。
本申请实施例还公开了一种计算机可读程序介质,其存储有计算机程序指令,当所述计算机程序指令被计算机执行时,使计算机执行如图1所示的方法流程步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等) 执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U 盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种处理数据的方法,其特征在于,包括:
初始化服务器时,将玩家游戏数据储存在第一数据库中,服务器启动后,将所述玩家游戏数据载入到内存中的不同数据结构中;
玩家发送玩家游戏数据到服务器后,服务器对所述玩家游戏数据进行分类,将分类后的玩家游戏数据发送到预先配置的分管各类玩家游戏数据的消息队列中;
读取服务器的玩家游戏数据时,优先从所述内存的不同数据结构中读取,若读取失败,则从所述第二数据库中读取玩家游戏数据,若读取失败,则从所述第一数据库中读取;
存储玩家游戏数据时,优先更新内存中数据,再更新所述第一数据库中的玩家游戏数据,最后更新所述第二数据库中的玩家游戏数据。
2.根据权利要求1所述的方法,其特征在于,所述第一数据库为Mysql数据库,第二数据库为Redis缓存数据库。
3.根据权利要求2所述的方法,其特征在于,还包括:
按照预设帧率轮询所述消息队列中是否有新的玩家游戏数据,如果有新的玩家游戏数据,则将所述新的玩家游戏数据发给同一个房间内的所有玩家。
4.根据权利要求1所述的,其特征在于,还包括:
通过玩家任务管理对象对所述玩家的任务进行管理,每个玩家ID对应一个玩家任务管理对象;
当玩家数据更新时,通过玩家邮件管理对象中的配置数据,生成一条邮件保存在玩家邮件管理对象中,供所述玩家加载查看,所述每个玩家ID对应一个玩家邮件管理对象。
5.一种服务器,其特征在于,包括:
存储单元,用于初始化服务器时,将玩家游戏数据储存在第一数据库中,服务器启动后,将所述玩家游戏数据载入到内存中的不同数据结构中;
分类单元,用于玩家发送玩家游戏数据到服务器后,服务器对所述玩家游戏数据进行分类,将分类后的玩家游戏数据发送到预先配置的分管各类玩家游戏数据的消息队列中;
读取单元,用于读取服务器的玩家游戏数据时,优先从所述内存的不同数据结构中读取,若读取失败,则从所述第二数据库中读取玩家游戏数据,若读取失败,则从所述第一数据库中读取;
所述存储单元,还用于存储玩家游戏数据时,优先更新内存中数据,再更新所述第一数据库中的玩家游戏数据,最后更新所述第二数据库中的玩家游戏数据。
6.根据权利要求5所述的服务器,其特征在于,所述第一数据库为Mysql数据库,第二数据库为Redis缓存数据库。
7.根据权利要求6所述的服务器,其特征在于,还包括:
轮询单元,用于按照预设帧率轮询所述消息队列中是否有新的玩家游戏数据,如果有新的玩家游戏数据,则将所述新的玩家游戏数据发给同一个房间内的所有玩家。
8.根据权利要求6所述的服务器,其特征在于,还包括:
玩家任务管理对象单元,用于对所述玩家的任务进行管理,每个玩家ID对应一个玩家任务管理对象;
玩家邮件管理对象,用于当玩家数据更新时,通过邮件配置数据,生成一条邮件,保存在玩家邮件管理对象中,供所述玩家加载查看,所述每个玩家ID对应一个玩家邮件管理对象。
9.一种游戏***,其特征在于,包括客户端和如权利要求5-8所述的服务器,游戏玩家通过所述客户端连接到所述服务器。
10.一种计算机可读程序介质,其特征在于,其存储有计算机程序指令,当所述计算机程序指令被计算机执行时,使计算机执行根据权利要求1-4所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911073558.1A CN110898434B (zh) | 2019-11-06 | 2019-11-06 | 处理数据的方法、服务器、***和计算机可读程序介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911073558.1A CN110898434B (zh) | 2019-11-06 | 2019-11-06 | 处理数据的方法、服务器、***和计算机可读程序介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110898434A true CN110898434A (zh) | 2020-03-24 |
CN110898434B CN110898434B (zh) | 2023-07-25 |
Family
ID=69816229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911073558.1A Active CN110898434B (zh) | 2019-11-06 | 2019-11-06 | 处理数据的方法、服务器、***和计算机可读程序介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110898434B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015815A (zh) * | 2020-08-27 | 2020-12-01 | 中国平安财产保险股份有限公司 | 数据同步方法、装置及计算机可读存储介质 |
CN112494954A (zh) * | 2020-12-15 | 2021-03-16 | 网易(杭州)网络有限公司 | 数据处理方法、装置、设备及存储介质 |
CN112597163A (zh) * | 2020-12-25 | 2021-04-02 | 珠海金山网络游戏科技有限公司 | 数据处理***、方法及装置 |
CN112867003A (zh) * | 2021-04-25 | 2021-05-28 | 广州边在晓峰网络科技有限公司 | 一种无线通信的游戏数据通道通信连接*** |
CN113032151A (zh) * | 2021-03-31 | 2021-06-25 | 广州虎牙科技有限公司 | 业务消息的处理方法、电子设备、移动终端及存储介质 |
CN115193026A (zh) * | 2022-09-16 | 2022-10-18 | 成都止观互娱科技有限公司 | 一种高并发全球同服游戏服务器架构及数据访问方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004008358A1 (ja) * | 2002-07-16 | 2004-01-22 | Konami Online, Inc. | ネットワークサービスシステム及びポイント振替システム |
US20120083343A1 (en) * | 2010-10-01 | 2012-04-05 | Xpec Entertainment Inc. | Online game system and method of data resource handling for an online game |
CN103944993A (zh) * | 2014-04-25 | 2014-07-23 | 北京乐动卓越信息技术有限公司 | 百万级用户同时在线移动平台服务器架构 |
CN104135506A (zh) * | 2014-06-25 | 2014-11-05 | 深圳市盛讯达科技股份有限公司 | 网络数据负载均衡设计***及方法 |
CN105491029A (zh) * | 2015-11-26 | 2016-04-13 | 盛趣信息技术(上海)有限公司 | 游戏服务器集群 |
CN105797381A (zh) * | 2014-12-30 | 2016-07-27 | 博雅网络游戏开发(深圳)有限公司 | 游戏冷数据的存储、读取方法和装置 |
CN105999702A (zh) * | 2016-05-23 | 2016-10-12 | 浙江工业大学 | 一种基于数据重演机制的网页游戏存档还原方法 |
CN106031827A (zh) * | 2015-03-18 | 2016-10-19 | 广州四三九九信息科技有限公司 | 基于redis的游戏服务器数据存储、读取方法及*** |
CN107239306A (zh) * | 2017-05-26 | 2017-10-10 | 黄晓咏 | 一种游戏通讯数据处理*** |
CN108093017A (zh) * | 2016-11-23 | 2018-05-29 | 上海冰穹网络科技有限公司 | 游戏数据后台操作方法及数据处理平台 |
CN108874903A (zh) * | 2018-05-24 | 2018-11-23 | 中国平安人寿保险股份有限公司 | 数据读取方法、装置、计算机设备及计算机可读存储介质 |
CN109408751A (zh) * | 2018-09-27 | 2019-03-01 | 腾讯科技(成都)有限公司 | 一种数据处理方法、终端、服务器及存储介质 |
-
2019
- 2019-11-06 CN CN201911073558.1A patent/CN110898434B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004008358A1 (ja) * | 2002-07-16 | 2004-01-22 | Konami Online, Inc. | ネットワークサービスシステム及びポイント振替システム |
US20120083343A1 (en) * | 2010-10-01 | 2012-04-05 | Xpec Entertainment Inc. | Online game system and method of data resource handling for an online game |
CN103944993A (zh) * | 2014-04-25 | 2014-07-23 | 北京乐动卓越信息技术有限公司 | 百万级用户同时在线移动平台服务器架构 |
CN104135506A (zh) * | 2014-06-25 | 2014-11-05 | 深圳市盛讯达科技股份有限公司 | 网络数据负载均衡设计***及方法 |
CN105797381A (zh) * | 2014-12-30 | 2016-07-27 | 博雅网络游戏开发(深圳)有限公司 | 游戏冷数据的存储、读取方法和装置 |
CN106031827A (zh) * | 2015-03-18 | 2016-10-19 | 广州四三九九信息科技有限公司 | 基于redis的游戏服务器数据存储、读取方法及*** |
CN105491029A (zh) * | 2015-11-26 | 2016-04-13 | 盛趣信息技术(上海)有限公司 | 游戏服务器集群 |
CN105999702A (zh) * | 2016-05-23 | 2016-10-12 | 浙江工业大学 | 一种基于数据重演机制的网页游戏存档还原方法 |
CN108093017A (zh) * | 2016-11-23 | 2018-05-29 | 上海冰穹网络科技有限公司 | 游戏数据后台操作方法及数据处理平台 |
CN107239306A (zh) * | 2017-05-26 | 2017-10-10 | 黄晓咏 | 一种游戏通讯数据处理*** |
CN108874903A (zh) * | 2018-05-24 | 2018-11-23 | 中国平安人寿保险股份有限公司 | 数据读取方法、装置、计算机设备及计算机可读存储介质 |
CN109408751A (zh) * | 2018-09-27 | 2019-03-01 | 腾讯科技(成都)有限公司 | 一种数据处理方法、终端、服务器及存储介质 |
Non-Patent Citations (3)
Title |
---|
孙启;: "网络游戏服务器面临的技术挑战及对策", 电子技术与软件工程, no. 21, pages 30 * |
杨珂, 中国优秀硕士学位论文全文数据库, no. 03 * |
洪学海等: "应用驱动的高效能计算机***的研究与发展", 《计算机研究与发展》, no. 10, pages 1633 - 1639 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015815A (zh) * | 2020-08-27 | 2020-12-01 | 中国平安财产保险股份有限公司 | 数据同步方法、装置及计算机可读存储介质 |
CN112015815B (zh) * | 2020-08-27 | 2024-02-02 | 中国平安财产保险股份有限公司 | 数据同步方法、装置及计算机可读存储介质 |
CN112494954A (zh) * | 2020-12-15 | 2021-03-16 | 网易(杭州)网络有限公司 | 数据处理方法、装置、设备及存储介质 |
CN112597163A (zh) * | 2020-12-25 | 2021-04-02 | 珠海金山网络游戏科技有限公司 | 数据处理***、方法及装置 |
CN112597163B (zh) * | 2020-12-25 | 2024-05-28 | 珠海金山数字网络科技有限公司 | 数据处理***、方法及装置 |
CN113032151A (zh) * | 2021-03-31 | 2021-06-25 | 广州虎牙科技有限公司 | 业务消息的处理方法、电子设备、移动终端及存储介质 |
CN113032151B (zh) * | 2021-03-31 | 2023-10-17 | 广州虎牙科技有限公司 | 业务消息的处理方法、电子设备、移动终端及存储介质 |
CN112867003A (zh) * | 2021-04-25 | 2021-05-28 | 广州边在晓峰网络科技有限公司 | 一种无线通信的游戏数据通道通信连接*** |
CN112867003B (zh) * | 2021-04-25 | 2021-07-06 | 广州边在晓峰网络科技有限公司 | 一种无线通信的游戏数据通道通信连接*** |
CN115193026A (zh) * | 2022-09-16 | 2022-10-18 | 成都止观互娱科技有限公司 | 一种高并发全球同服游戏服务器架构及数据访问方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110898434B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110898434A (zh) | 处理数据的方法、服务器、***和计算机可读程序介质 | |
CN112076464B (zh) | 一种数据请求处理方法、装置、计算机设备及存储介质 | |
US10055010B2 (en) | Detecting an event within interactive media including spatialized multi-channel audio content | |
US20140325070A1 (en) | Usage consumption for an invitee of a cloud system | |
US10739956B2 (en) | Information processing method, terminal, server, and computer storage medium | |
US9722869B2 (en) | Sharing an application configuration among social networks | |
US8517838B2 (en) | Online game system and method of data resource handling for an online game | |
JP7397094B2 (ja) | リソース構成方法、リソース構成装置、コンピューター機器、及びコンピュータープログラム | |
US20180193742A1 (en) | System and method for managing event data in a multi-player online game | |
US20090144357A1 (en) | Use of template messages to optimize a software messaging system | |
CN108452525A (zh) | 一种游戏中聊天信息的监控方法及*** | |
CN110781421B (zh) | 一种虚拟资源展示的方法以及相关装置 | |
CN108809855A (zh) | 消息管理方法、装置及电子设备 | |
CN113781119B (zh) | 一种虚拟资源发送方法、装置、电子设备及存储介质 | |
KR102307870B1 (ko) | 게임 테스트 방법 | |
WO2022166492A1 (zh) | 一种信息显示方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN114391144A (zh) | 信息推送方法、装置、电子设备及计算机可读介质 | |
CN110580257A (zh) | 数据共享方法、服务器及介质 | |
US20180337989A1 (en) | System and method for synchronizing data between computer devices | |
CN113230665A (zh) | 资源分配方法及装置 | |
CN109304032B (zh) | 游戏***的自适应进化方法、装置及服务器 | |
US20220360636A1 (en) | Identifying outdated cloud computing services | |
CN112764837B (zh) | 数据上报方法、装置、存储介质及终端 | |
US11241628B2 (en) | Augmented gaming with item gifting and online gameplay | |
CN111600858B (zh) | 一种应用登录方法、装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |