游戏服排行榜实现(面试被问到)
最近面试连续被问到游戏服排行榜如何实现,因为以前一直不觉得是个事,所以突然问到一脸懵逼,现在我自己总结一下。
目前工作中KE排行榜的实现
1.单服排行榜,直接用ruby on rails封装的查询语句实现(这个效率其实非常低,可以优化为redis排序)。
2.跨服排行榜-名人堂,设置了redis的缓存,24小时更新一次,从中心服拉数据,由于数据量小中心服接口内也是用的ruby on rails封装的查询语句实现。
3.跨服排行榜-异族,游戏服定期分批上报本服数据到中心服,存在redis中,设置了redis的缓存,超过50秒可以请求一次中心服,拉取最新排名,中心服接口使用redis来排名,使用了redis的zrevrange(从大到小)排序函数来实现。
公司新项目例如303(erlang写的)游戏排行榜实现
1.有一个单独的的排行榜服务器,内部使用redis实现排序(使用redis的排序集Sorted sets(有序集合),这个的数据结构是跳跃表+字典),单服,全服都在这个服上实现排序,游戏服有数据变动就上传排序服,这个服务器对外提供http服务,其他游戏服通过http请求来set或get分数,一般是玩家在看排行榜的时候才请求更新,平时不请求。
2.当然单服也可以直接在游戏服上实现,用redis排序,或者自己写个排序数据结构,绝对杜绝直接用数据库来排序。
朋友公司,golang游戏排行榜实现
1.单服的话用redis排序,或者找个库用skiplist(跳跃表)实现就行,不要用数据库排(这个效率太低)。
2.全服排行榜的话,建一个单独的排行榜服务器,用这个服务器对外提供http服务,其他游戏服通过http请求来set或get分数,排行榜服务器底层也是用的redis或者找个库用skiplist(跳跃表)实现。
3.排行榜一般会做个缓存,多久更新一次,这是优化范畴。比如是更新的话,可以实时更新,但是外面包一个nginx,然后在nginx上做一个静态的缓存,每一小时过期。
上个公司,golang游戏排行榜实现
在上个公司遇到个比较特别的项目,排行榜用的切片实现的,更新分数后,先取自己之前的排名(也就是切片的index,当然那个排名结构里面也要存一个),如果之前没有排名就先放到榜的最后,如果有就先跟排自己前面的比较分数,大的话就依次向前调换位置,完了以后再跟排自己后面的比较分数,小的话就往后排,直到排名更新。因为这个游戏排名数量要求不多(一般就要求排前1000或者前2000名),显示就显示前100名,所以没有用跳跃表或者redis排序。
游戏服排行榜实现(面试被问到)相关推荐
- 面试官问你为什么选择做客服_在线客户服务-您的选择
面试官问你为什么选择做客服 On the Web, news travels fast - and a good customer testimonial is worth its weight in ...
- 游戏服务端框架之使用Redis实现跨服排行榜
跨服排行榜 游戏里为了刺激玩家的攀比心理,经常有各种各样的排行榜.排行榜又可以分为本服排行榜以及跨服排行榜. 简单说来,本服排行榜上的记录来自本服的玩家,而跨服排行榜上的记录是来自所有服务器前N名玩家 ...
- 【高并发】关于乐观锁和悲观锁,蚂蚁金服面试官问了我这几个问题!!
写在前面 最近,一名读者去蚂蚁金服面试,面试官问了他关于乐观锁和悲观锁的问题,幸亏他看了我的[高并发专题]文章,结果是替这名读者高兴!现就部分面试题目总结成文,供小伙伴们参考. 小伙伴们可以关注 冰河 ...
- 蚂蚁金服二面:面试官问我零拷贝的实现原理,当场跪。。。
本文来源:占小狼的博客 "狼哥,面试又跪了,碰到了知识盲区" "哪个?" "一面还可以,二面面试官问我零拷贝的原理,懵逼了...这块内容没去研究过&q ...
- Redis面试连环问:集群、复制以及与其他NOSQL数据库的区别?
欢迎关注方志朋的博客,回复"666"获面试宝典 前言 面试官问:您熟悉redis?搭建过redis集群?rediscluster底层的主从复制rdb如何工作的?-- 接下来,就是一 ...
- java面试所问到的问题和资料整理
必备基础知识面向对象的特征 继承:从当前类继承另外一个类,当前类为子类,继承的类为父类,本质是对程序的扩展和延伸(extends)封装:编写一个类就是对数据的一种封装,封装为隐藏一切可隐藏的东西,只对 ...
- 手撸架构,Redis面试41问
技术栈 传送门 JAVA 基础 手撸架构,Java基础面试100问_vincent-CSDN博客 JAVA 集合 手撸架构,JAVA集合面试60问_vincent-CSDN博客 JVM 虚拟机 手撸架 ...
- 面试阿里!妹子终面,阿里面试官问:有没有男朋友? 结果...
点击"开发者技术前线",选择"星标????" 在看|星标|留言, 真爱 作者: 前线小熙 | 责编: 可可 来源 :开发者技术前线 刚好要到端午节前 ...
- 测开工程师-面试常问测试用例
测开工程师-面试常问测试用例 一.网络测试的一般流程 二.弱网功能测试 四.微信红包测试 五.无网状态测试 三.微信朋友圈点赞测试 六.登陆界面测试 七.直播APP测试 八.微信搜索界面测试 九.水杯 ...
最新文章
- 教学思路SQL之入门习题《学员成绩》 一、建表
- java 模拟实现mq,RabbitMQ的5种模式,并使用java进行模拟操作
- linux性能优化实战-内存性能指标
- Spring boot添加员工
- linux常见紧急情况处理
- [C++]MySQL数据库操作实例
- circlegan_【源码解读】cycleGAN(二) :训练
- 幼儿课外活动游戏_泰国清迈大小学校介绍 --【Little Star小星星幼儿园】
- matlab tf-idf,java 兑现tfidf
- Solr删除managedschema
- 安全专家:70GB财务数据被僵尸网络盗窃
- 【论文笔记】Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- Netty 网络框架概述 与 快速入门
- 计算机cpu占用率高,CPU占用率高的原因及解决方法
- 僵尸网络_僵尸网络钓鱼
- Golang sqlx 使用 Where in 解决办法
- CF 1696 E. Placing Jinas 组合数 2000
- 第一个安卓app应用的开发--环境配置和第一项目创建
- Vue仿网易云音乐播放器(二)
- 投资理财-朋友好像的故事