游戏排行榜

2017-07-20  本文已影响0人  小星星幼儿园

排行榜要解决的几个问题:

一、 数据收集

首先谈数据来源问题,因为排行榜涉及到所有用户的数据,如果粗暴的周期性从数据库中取,会对数据库造成比较大的压力。另外,排行榜算法只使用了用户很小一部分数据,在取排行榜所需用户数据时,要避免将用户的所有数据从数据库中取出。目前我们采用的方式是专门存储了一个表来存储用户排行榜用到的数据,在开服时全部读入(要考虑一次性读出的数据大小是否超出了数据库的限制),在服务器运行期间不再读取数据库,而是定时将在线用户的信息刷新到排行榜所使用的信息中。通服架构下,需要由中心服务器做排行榜功能,用户的信息由各服务器收集并向中心服务器同步。

二、 排序算法

排序算法问题,首次排序是一个比较典型的top-k问题,采用堆排序算法复杂度为O(k*lgn),采用hash(sort-key)的方法算法复杂度为O(k)。在后续排序时,可以加入一些过滤优化,快速排除不会出现在排行榜的用户,这个跟具体的排行规则有关系。

三、 周期

周期是指多久进行一次排行榜排序,不宜实时排序,目前采用10分钟进行一次排序。

misc

一个比较常见的第三方的解决方案是依赖redis排序功能做排行榜功能。这个方案我没有测试过,不知道在跨服环境海量数据下,会不会出现性能瓶颈。

上一篇下一篇

猜你喜欢

热点阅读