[发明专利]排名更新方法及装置有效
申请号: | 201610098421.1 | 申请日: | 2016-02-23 |
公开(公告)号: | CN105787011B | 公开(公告)日: | 2019-02-22 |
发明(设计)人: | 刘晗 | 申请(专利权)人: | 网易(杭州)网络有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F16/958;G06F7/08 |
代理公司: | 深圳新创友知识产权代理有限公司 44223 | 代理人: | 江耀纯 |
地址: | 310052 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 排名 更新 方法 装置 | ||
本发明公开了一种排名更新方法和装置。所述排名更新方法包括:接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;从排名表中获取所述第一名次及其所对应的第一用户信息和所述第二名次及其所对应的第二用户信息,并保存在事务数据表中;对所述排名表中的所述第一名次所对应的第一用户信息和所述第二名次所对应的第二用户信息进行交换;当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次所对应的用户信息和所述第二名次所对应的用户信息。采用本发明实施例,能够避免排名的重复和混乱,保证排名更新的原子性和可靠性。
技术领域
本发明涉及计算机技术领域,尤其涉及一种排名更新方法和装置。
背景技术
在现有技术中,对数据库中的排行榜进行更新的操作通常采用内存交换更新和数据库交换更新两种形式。其中,内存交换更新的做法是直接替换内存中两个玩家的排名信息。内存交换在实现上比较简单,但是需要在进程内存中维护整个排行榜数据表,并定时写回数据库,该方式仅适用于规模比较小的排行榜,当排行榜内玩家数量过大时,该方法将消耗大量内存,同时整个排行榜存在于某一个进程中,玩家访问排行榜的时候都要访问这个进程,容易产生单点故障。根据实际的压力测试,当排行榜中玩家的数量达到200000以上,或并发访问频率达到100次/秒的时候,进程占用的CPU会出现明显的飙升,同时整个排行榜在定时写回数据库的时候,由于数据量过大,也会造成数据库的卡顿。而数据库交换更新的做法是使用事务来操作这两个排名的数据,以保证这两个数据在操作的过程中不会受到其他操作的影响而发生改变,其可扩展性相对于内存交换更强。
发明内容
由于mongo数据库本身并不支持事务的特性,采用mongo数据库进行交换更新时,如果对两条数据分别进行操作,则有可能在操作完一条数据的时候,另一条数据已经发生了变化,或者在操作完一条数据的时候,游戏进程意外终止,使另一条数据的操作未完成,从而导致数据库中的数据不一致,使排行榜中的排名出现重叠和混乱。
本发明实施例提出一种排名更新方法和装置,能够避免排名的重复和混乱,保证排名更新的原子性和可靠性。
本发明实施例提供的一种排名更新方法,具体包括:
接收客户端发送的排名更新请求;所述排名更新请求包括待更新的第一名次和第二名次;
从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中;
对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换;
当检测到交换失败时,根据所述事务数据表回滚所述排名表中的所述第一名次对应的用户信息和所述第二名次对应的用户信息。
进一步地,所述排名更新请求还包括所述第一名次对应的第一用户数据和所述第二名次对应的第二用户数据;
所述从排名表中获取所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息,并保存在事务数据表中,具体包括:
从所述排名表中获取所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息;
将所述第一用户数据与所述第一用户信息进行对比,并将所述第二用户数据与所述第二用户信息进行对比;
在所述第一用户数据与所述第一用户信息都对应于同一用户,且所述第二用户数据与所述第二用户信息也都对应于同一用户时,将所述第一名次及其对应的第一用户信息和所述第二名次及其对应的第二用户信息保存在所述事务数据表中。
进一步地,所述对所述排名表中的所述第一名次对应的第一用户信息和所述第二名次对应的第二用户信息进行交换,具体包括:
将所述排名表中的所述第一名次对应的第一用户信息替换为所述第二用户信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610098421.1/2.html,转载请声明来源钻瓜专利网。