We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近使用 wlua 实现了一个通用的排行榜服务,目前只提供了 http 接口访问。主要就是更删改查的接口。
具体的文档可以去看 rank
使用了 skynet 的服务模式来实现的,一个管理服务 rankmgr_service 用于管理所有的排行榜,一个排行榜占用一个 rank_service 。排行榜 id 由 appname 和 tag 组成,一个 appname 相当于是同一个应用下的排行榜,更新和删除接口是可以一次性更新一个 appname 下的多个 tag 的,这样可以用于删除某个玩家时,一次性从多个排行榜上移除,或者玩家数据更新时一次性更新多个排行榜,而查询接口都只能是针对单个排行榜的。
wlua 是一个 http 服务框架,会有多个 http agent 服务接受和处理请求,请求来到 http agent 后会去 rankmgr_service 上获取 rank_service 的服务地址(首次请求会创建服务),并缓存起来。这样设计后,rankmgr_service 就不是单点了,rank_service 则是单点的,一个排行榜一个服务的粒度还是合理的,这样实现起来比较简单,单个 rank_service 上是使用的 lua-zset 库来实时排序的,数据会实时落地到 mongodb 。如果确实某个排行榜很庞大,访问量很高,可以考虑单独部署。
如果想要这个排行榜服务更实用,应该还需要有更多的功能,比如:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
最近使用 wlua 实现了一个通用的排行榜服务,目前只提供了 http 接口访问。主要就是更删改查的接口。
具体的文档可以去看 rank
设计思路
使用了 skynet 的服务模式来实现的,一个管理服务 rankmgr_service 用于管理所有的排行榜,一个排行榜占用一个 rank_service 。排行榜 id 由 appname 和 tag 组成,一个 appname 相当于是同一个应用下的排行榜,更新和删除接口是可以一次性更新一个 appname 下的多个 tag 的,这样可以用于删除某个玩家时,一次性从多个排行榜上移除,或者玩家数据更新时一次性更新多个排行榜,而查询接口都只能是针对单个排行榜的。
wlua 是一个 http 服务框架,会有多个 http agent 服务接受和处理请求,请求来到 http agent 后会去 rankmgr_service 上获取 rank_service 的服务地址(首次请求会创建服务),并缓存起来。这样设计后,rankmgr_service 就不是单点了,rank_service 则是单点的,一个排行榜一个服务的粒度还是合理的,这样实现起来比较简单,单个 rank_service 上是使用的 lua-zset 库来实时排序的,数据会实时落地到 mongodb 。如果确实某个排行榜很庞大,访问量很高,可以考虑单独部署。
后续扩展
如果想要这个排行榜服务更实用,应该还需要有更多的功能,比如:
The text was updated successfully, but these errors were encountered: