排名更新方法及装置制造方法及图纸

技术编号:13378471 阅读:32 留言:0更新日期:2016-07-21 07:28
本发明专利技术公开了一种排名更新方法和装置。所述排名更新方法包括:接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;从排名表中获取所述第一名次及其所对应的第一用户信息和所述第二名次及其所对应的第二用户信息,并保存在事务数据表中;对所述排名表中的所述第一名次所对应的第一用户信息和所述第二名次所对应的第二用户信息进行交换;当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次所对应的用户信息和所述第二名次所对应的用户信息。采用本发明专利技术实施例,能够避免排名的重复和混乱,保证排名更新的原子性和可靠性。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种排名更新方法和装置。
技术介绍
在现有技术中,对数据库中的排行榜进行更新的操作通常采用内存交换更新和数据库交换更新两种形式。其中,内存交换更新的做法是直接替换内存中两个玩家的排名信息。内存交换在实现上比较简单,但是需要在进程内存中维护整个排行榜数据表,并定时写回数据库,该方式仅适用于规模比较小的排行榜,当排行榜内玩家数量过大时,该方法将消耗大量内存,同时整个排行榜存在于某一个进程中,玩家访问排行榜的时候都要访问这个进程,容易产生单点故障。根据实际的压力测试,当排行榜中玩家的数量达到200000以上,或并发访问频率达到100次/秒的时候,进程占用的CPU会出现明显的飙升,同时整个排行榜在定时写回数据库的时候,由于数据量过大,也会造成数据库的卡顿。而数据库交换更新的做法是使用事务来操作这两个排名的数据,以保证这两个数据在操作的过程中不会受到其他操作的影响而发生改变,其可扩展性相对于内存交换更强。
技术实现思路
由于mongo数据库本身并不支持事务的特性,采用mongo数据库进行交换更新时,如果对两条数据分别进行操作,则有可能在操作完一条数据的时候,另一条数据已经发生了变化,或者在操作完一条数据的时候,游戏进程意外终止,使另一条数据的操作未完成,从而导致数据库中的数据不一致,使排行榜中的排名出现重叠和混乱。本专利技术实施例提出一种排名更新方法和装置,能够避免排名的重复和混乱,保证排名更新的原子性和可靠性。本专利技术实施例提供的一种排名更新方法,具体包括:接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中;对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。进一步地,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;所述从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中,具体包括:从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。进一步地,所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换,具体包括:将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户信息。进一步地,所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,具体包括:当检测到所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息,使所述第一名次仍对应所述第一用户信息,且使所述第二名次仍对应所述第二用户信息。进一步地,在所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息之后,还包括:删除所述事务数据表中所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息。进一步地,在所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换之前,还包括:对所述排名表中的所述第一名次及其对应的第一用户信息进行加锁处理;对所述排名表中的所述第二名次及其对应的第二用户信息进行加锁处理。进一步地,在所述当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息之后,还包括:对所述排名表中的所述第一名次及其对应的第一用户信息进行解锁处理;对所述排名表中的所述第二名次及其对应的第二用户信息进行解锁处理。相应地,本专利技术实施例还提供了一种排名更新装置,具体包括:更新请求接收模块,用于接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;数据保存模块,用于从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中用户信息交换模块,用于对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;以及,用户信息回滚模块,用于当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。进一步地,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;所述数据保存模块具体包括:用户信息获取单元,用于从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;用户信息对比单元,用于将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;以及,数据保存单元,用于在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。进一步地,所述用户信息交换模块具体包括:第一替换单元,用于将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;以及,第二替换单元,用于将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户信息。进一步地,所述用户信息回滚模块具体用于当所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所述第一本文档来自技高网...

【技术保护点】
一种排名更新方法,其特征在于,包括:接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中;对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。

【技术特征摘要】
1.一种排名更新方法,其特征在于,包括:
接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名
次和第二名次;
从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及
其对应的第二用户信息,并保存在事务数据表中;
对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应
的第二用户信息进行交换;
当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一
名次对应的用户信息和所述第二名次对应的用户信息。
2.如权利要求1所述的排名更新方法,其特征在于,所述排名更新请求还
包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;
所述从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名
次及其对应的第二用户信息,并保存在事务数据表中,具体包括:
从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对
应的第二用户信息;
将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数
据与所述第二用户信息进行对比;
在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二
用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对
应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数
据表中。
3.如权利要求1所述的排名更新方法,其特征在于,所述对所述排名表中
的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行
交换,具体包括:
将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户
信息;
将所述排名表中的所述第二名次对应的第二用户信息替换为所述第一用户
信息。
4.如权利要求3所述的排名更新方法,其特征在于,所述当检测到交换失
败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息
和所述第二名次对应的用户信息,具体包括:
当检测到所述第一名次对应的第一用户信息和所述第二名次对应的第二用
户信息中的至少一个替换失败时,根据所述事务数据表回滚所述排名表中的所
述第一名次对应的用户信息和所述第二名次对应的用户信息,使所述第一名次
仍对应所述第一用户信息,且使所述第二名次仍对应所述第二用户信息。
5.如权利要求1所述的排名更新方法,其特征在于,在所述当检测到交换
失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信
息和所述第二名次对应的用户信息之后,还包括:
删除所述事务数据表中所述第一名次及其对应的第一用户信息和所述第二
名次及其对应的第二用户信息。
6.如权利要求1至5任一项所述的排名更新方法,其特征在于,在所述对
所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二
用户信息进行交换之前,还包括:
对所述排名表中的所述第一名次及其对应的第一用户信息进行加锁处理;
对所述排名表中的所述第二名次及其对应的第二用户信息进行加锁处理。
7.如权利要求6所述的排名更新方法,其特征在于,在所述当检测到交换
失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信

\t息和所述第二名次对应的用户信息之后,还包括:
对所述排名表中的所述...

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

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

1