游戏服务器与数据库的交互方法和系统技术方案

技术编号:11413830 阅读:141 留言:0更新日期:2015-05-06 13:32
为提供一种高效安全的游戏服务器与数据库的交互方案,本发明专利技术披露了一种游戏服务器与数据库的交互方法,包括步骤:游戏服务器在内存中执行数据处理,并将处理结果保存于内存;游戏服务器通过多线程方式将所述处理结果同步于数据库。本发明专利技术还同时披露了实现上述方法的一种游戏服务器与数据库的交互系统。区别于现有技术,上述技术方案在网络游戏服务器程序中实现一个自动化的数据库缓存框架,让所有的数据操作都在内存中进行,之后,再通过多线程的方式,让内存数据自动地同步到数据库管理系统中,这样,就将网络游戏服务器程序对数据的操作和数据到数据库管理系统的同步操作分离,极大地提高了网络游戏服务器程序的运行效率。

【技术实现步骤摘要】
游戏服务器与数据库的交互方法和系统
本专利技术涉及网络游戏领域,特别涉及一种游戏服务器与数据库的交互方法和系统。
技术介绍
网络游戏中包含了大量数据,这些数据主要可以分成两类:一类是动态的用户相关数据、一类是静态的系统配置数据,所有这些数据都存储在网络游戏服务器上的数据库管理系统(DBMS)中。网络游戏服务器程序在运行的过程中,需要加载、处理和保存所有这些数据,因此,网络游戏服务器程序需要频繁地和数据库管理系统进行交互。众所周知,对数据库管理系统的操作属于IO操作,相比于CPU的处理速度,IO操作所需要的处理周期是相当漫长的,因此,如何维护这些数据,便成了决定网络游戏服务器程序运行效率的一个最关键的因素。在游戏服务器与数据库的交互中的用户数据维护和同步的过程中,需要达到两个要求上的平衡,如何在需要新的数据时,即能够保证安全性(先生成数据,后使用数据),又能够保证高效性(不需要同步操作)?目前已有的一些内存数据库方案中,都没有很好地解决这个问题。现有的方案要么是保证安全性,即在数据库管理系统中先生成这条数据,之后再在内存中加载并使用这条新数据,这样做必然导致游戏服务器进程等待,效率低;要么是保证高效性,先在内存中生成一条内存数据,然后直接使用,之后再在某个时机同步数据库管理系统,这样做效率很高,需要新数据时马上就可以取用,但是当游戏服务器进程出现异常时,有可能导致内存数据未被同步到数据库管理系统中,安全性较低。为了解决这个问题,需要提供一种既能保证安全性,又兼顾高效性的技术方案。
技术实现思路
为此,需要提供一种能同时兼顾安全性与高效性的游戏服务器与数据库的交互方法和系统。为实现上述目的,专利技术人提供了一种游戏服务器与数据库的交互方法,包括步骤:游戏服务器在内存中执行数据处理,并将处理结果保存于内存;游戏服务器通过多线程方式将所述处理结果同步于数据库。进一步地,所述的游戏服务器与数据库的交互方法中,所述数据处理包括生成用户数据;步骤“游戏服务器在内存中执行数据处理,并将处理结果保存于内存”具体包括:游戏服务器生成用户缓存数据记录并将其保存于内存中的缓存数据集,所述用户缓存数据记录包括一实质判别字段,所述实质判别字段的属性包括空数据或用户真实数据;当游戏服务器判定需要生成新的用户真实数据时,在所述缓存数据集中查找是否有可用的缓存数据记录,若有则直接调取并将其中的空数据替换为所述用户真实数据,并分配同步数据修改结果任务于一第三子线程,所述第三子线程将所述处理结果同步于数据库。进一步地,所述的游戏服务器与数据库的交互方法中,所述数据处理还包括删除用户数据;步骤“游戏服务器在内存中执行数据处理,并将处理结果保存于内存”还包括:游戏服务器需要删除用户真实数据时,将相应的缓存数据记录中的用户真实数据以空数据替换、修改其实质判别字段为空数据,并保存于内存中的缓存数据集;然后分配同步数据修改结果任务于一第四子线程,所述第四子线程将所述处理结果同步于数据库。进一步地,所述的游戏服务器与数据库的交互方法中,第三子线程或第四子线程将所述处理结果同步于数据库具体包括:以预设频率监控用户数据修改处理;所述用户数据修改处理包括预设类别用户数据修改处理与非预设类别用户数据修改处理;当子线程监测到预设类别用户数据发生修改处理时,以即时模式将修改处理结果同步于数据库;当第三子线程监测到非预设类别用户数据发生修改处理时,以非即时模式将修改处理结果同步于数据库。进一步地,所述的游戏服务器与数据库的交互方法中,所述第三子线程或第四子线程将修改处理结果同步于数据库具体包括:以SQL合并算法对同一数据库表记录的修改SQL进行合并。进一步地,所述的游戏服务器与数据库的交互方法中,还包括步骤:游戏服务器开启一第五子线程,所述第五子线程用于监控缓存数据集并保证所述缓存数据集中的缓存数据记录数量处于一预设区间。进一步地,所述的游戏服务器与数据库的交互方法中,在步骤“游戏服务器在内存中执行数据处理”之前还包括步骤:游戏服务器从数据库中加载配置数据。进一步地,所述的游戏服务器与数据库的交互方法中,所述配置数据包括程序数据或用户数据。进一步地,所述的游戏服务器与数据库的交互方法中,游戏服务器从数据库中加载程序数据具体包括:游戏服务器分配程序数据加载任务于一第一子线程,在所述第一子线程加载程序数据时,服务器主线程处于等待状态,并在收到所述第一子线程发送的程序数据加载完成通知信号后恢复运行。进一步地,所述的游戏服务器与数据库的交互方法中,游戏服务器从数据库中加载用户数据具体包括:服务器主线程接收用户操作请求,并将所述用户操作请求对应的用户数据加载任务分配于内存池中一第二子线程;在所述第二子线程执行所述用户操作请求对应的用户数据加载任务时,服务器主线程不执行所述用户操作请求,并在收到所述第二子线程发送的用户数据加载任务完成通知信号后执行所述用户操作请求。专利技术人同时还提供了一种游戏服务器与数据库的交互系统,包括游戏服务器与数据库;所述游戏服务器包括主处理单元、内存储单元和同步单元;所述主处理单元用于在所述内存储单元中执行数据处理,并将处理结果保存于所述内存储单元;所述同步单元用于通过多线程方式将所述处理结果同步于数据库。进一步地,所述的游戏服务器与数据库的交互系统中,所述游戏服务器还包括判断单元;所述主处理单元包括数据生成模块;所述数据生成模块用于生成用户缓存数据记录并将其保存于内存储单元中的缓存数据集,所述用户缓存数据记录包括一实质判别字段,所述实质判别字段的属性包括空数据或用户真实数据;当判断单元判定需要生成新的用户真实数据时,数据生成模块在所述缓存数据集中查找是否有可用的缓存数据记录,若有则直接调取并将其中的空数据替换为所述用户真实数据;主处理单元分配同步数据修改结果任务于同步单元中的一第三子线程,所述第三子线程将所述处理结果同步于数据库。进一步地,所述的游戏服务器与数据库的交互系统中,所述主处理单元还包括数据删除模块;当判断单元判定需要删除用户真实数据时,所述数据删除模块将相应的缓存数据记录中的用户真实数据以空数据替换、修改其实质判别字段为空数据,并保存于内存储单元中的缓存数据集;然后主处理单元分配同步数据修改结果任务于同步单元中的一第四子线程,所述第四子线程将所述处理结果同步于数据库。进一步地,所述的游戏服务器与数据库的交互系统中,第三子线程或第四子线程将所述处理结果同步于数据库具体包括:以预设频率监控用户数据修改处理;所述用户数据修改处理包括预设类别用户数据修改处理与非预设类别用户数据修改处理;当第三子线程或第四子线程监测到预设类别用户数据发生修改处理时,以即时模式将修改处理结果同步于数据库;当第三子线程或第四子线程监测到非预设类别用户数据发生修改处理时,以非即时模式将修改处理结果同步于数据库。进一步地,所述的游戏服务器与数据库的交互系统中,所述第三子线程或第四子线程将修改处理结果同步于数据库具体包括:以SQL合并算法对同一数据库表记录的修改SQL进行合并。进一步地,所述的游戏服务器与数据库的交互系统中,所述同步单元还用于开启一第五子线程,所述第五子线程用于监控缓存数据集并保证所述缓存数据集中的缓存数据记录数量处于一预设区间。进一步地,所述的游戏服务器本文档来自技高网...
游戏服务器与数据库的交互方法和系统

【技术保护点】
一种游戏服务器与数据库的交互方法,包括步骤:游戏服务器在内存中执行数据处理,并将处理结果保存于内存;游戏服务器通过多线程方式将所述处理结果同步于数据库。

【技术特征摘要】
1.一种游戏服务器与数据库的交互方法,包括步骤:游戏服务器在内存中执行数据处理,所述数据处理包括生成用户数据,具体包括:游戏服务器生成用户缓存数据记录并将其保存于内存中的缓存数据集,所述用户缓存数据记录包括一实质判别字段,所述实质判别字段的属性包括空数据或用户真实数据;当游戏服务器判定需要生成新的用户真实数据时,在所述缓存数据集中查找是否有可用的缓存数据记录,若有则直接调取并将其中的空数据替换为所述用户真实数据,并分配同步数据修改结果任务于一第三子线程,所述第三子线程将所述处理结果同步于数据库,并将处理结果保存于内存;游戏服务器通过多线程方式将所述处理结果同步于数据库。2.如权利要求1所述的游戏服务器与数据库的交互方法中,所述数据处理还包括删除用户数据;步骤“游戏服务器在内存中执行数据处理,并将处理结果保存于内存”还包括:游戏服务器需要删除用户真实数据时,将相应的缓存数据记录中的用户真实数据以空数据替换、修改其实质判别字段为空数据,并保存于内存中的缓存数据集;然后分配同步数据修改结果任务于一第四子线程,所述第四子线程将所述处理结果同步于数据库。3.如权利要求1或2所述的游戏服务器与数据库的交互方法中,所述第三子线程或第四子线程将修改处理结果同步于数据库具体包括:以SQL合并算法对同一数据库表记录的修改SQL进行合并。4.如权利要求1所述的游戏服务器与数据库的交互方法中,还包括步骤:游戏服务器开启一第五子线程,所述第五子线程用于监控缓存数据集并保证所述缓存数据集中的缓存数据记录数量处于一预设区间。5.如权利要求1所述的游戏服务器与数据库的交互方法中,在步骤“游戏服务器在内存中执行数据处理”之前还包括步骤:游戏服务器从数据库中加载配置数据。6.如权利要求5所述的游戏服务器与数据库的交互方法中,所述配置数据包括程序数据或用户数据。7.如权利要求6所述的游戏服务器与数据库的交互方法中,游戏服务器从数据库中加载程序数据具体包括:游戏服务器分配程序数据加载任务于一第一子线程,在所述第一子线程加载程序数据时,服务器主线程处于等待状态,并在收到所述第一子线程发送的程序数据加载完成通知信号后恢复运行。8.如权利要求6所述的游戏服务器与数据库的交互方法中,游戏服务器从数据库中加载用户数据具体包括:服务器主线程接收用户操作请求,并将所述用户操作请求对应的用户数据加载任务分配于内存池中一第二子线程;在所述第二子线程执行所述用户操作请求对应的用户数据加载任务时,服务器主线程不执行所述用户操作请求,并在收到所述第二子线程发送的用户数据加载任务完成通知信号后执行所述用户操作请求。9.一种游戏服务器与数据库的交互系统,包括游戏服务器与数据库;所述游戏服务...

【专利技术属性】
技术研发人员:杨鹏陈宏展刘德建
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:福建;35

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

1