每个人都可以看到自己的一个排行名次,而且是实时更新的,如果用户量少,可以用redis的有序集合,如果用户量很大,这种方案肯定不行。
我们都玩过游戏吧? 网页端的一些 和pc 或者手游 都是网友类型的 都有排行榜
然而 如果细心留意发现不管网页还是客户端类的网游,其实更新排名都是次日的 也就是说排名并不是当天的
首先你要了解一件事情 是从生活角度来了解,所谓排名即便是在生活中一场高中一年的入学分班排名 300个人,
分成6给班级 按照排名先后分班的话 那也是等成绩出来以后统一进行的 所以100万用户啊 你来100万给进场都不够写的 我想还是算了吧 换成达到目标后一段时间进行 现在老板们的需求是越来越奇怪,也越来越异想天开了
当然 100万 用户如果计算机运算能力达标也不是不行,但我认为一个小小的服务器或者就咱们这些人用的服务器 是达不到的 所谓的量子计算能解决这个问题 我信
我认为可以先对各个名次段评估一个大致的评分, 然后超过这个分数的放到响应的排名池里,根据业务的敏感性对前 n 名次的进行实时排名, 然后后面的比如10w 名之后的就给个'10w+' 这种名次不就好了?
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
大多数情况下都会牺牲一点实时性,因为很少有用户会关注实时排名。
有一个权衡方法可以考虑一下,就是将用户数据分片,再在各个分片中排名。因为一般来说短时间内的操作对真实排名的影响不会特别大。比如根据昨天统计的结果,每一千名内部进行排名统计,然后零点对总排名进行更新。