近期工作的内容主要是设计一个通用的游戏排行榜服务器, 通用的含义指的是同时为多个项目组提供一套通用的解决方案, 经过不断的调研, 最终写下此文.
本文将会讲述 排行榜的多种实现方式, 不过最终我选择了 SkipList 作为底层的数据结构, 因此会着重讲SkipList.
先来讲一下排行榜的主要功能.
排行榜主要功能
- 更新/删除/获取 一个 Key 在某个 排行榜 上的 排名, 及展示信息
- 获取 一个排行榜 任意区间(例如排名区间) 的展示信息
排行榜排序方案
游戏中的排行榜的排序方案无非就两种
- 实时排序, 即玩家数值变化的瞬间, 就完成了对它的排序
- 非实时排序, 亦可称之为定时排序, 玩家数据变动不立即排序, 而是直到策划所配的时间点到的时候才进行排序
这两种排序方案没有好坏之分, 主要是看策划他想要什么? (或许他自己也不知道想要什么, 他都想试试看, 他只顾着他自己)