排行榜(rank)
分片排行榜组件:榜单数据分片存储在 rank_board_svr 集群,支持镜像、WAL 主备同步与周期结算。
位置:src/component/rank/。
快速上手
- 启用
rank-board-svr;需要周期结算时增加rank-settlement-svr,准备 Redis。 - 修改
resource/ExcelTables/Rank.xlsx中的规则、榜单定义和奖励池,导出并发布资源。 - 消费方
USE_COMPONENTS按需加入rank-board-svr-sdk与rank-logic-sdk; 公开接口在src/component/rank/sdk/rank_board_svr/rpc/rank_board/rank.h。 - 参照大厅服的
rank/查询入口,写入测试分数并查询榜单/排名; 使用周期结算时验证结算结果与奖励异步任务。实际发奖需业务注册处理,普通榜单配置不需要修改生成模板。
定制与详细设计
组成
| 部分 | 位置 | 说明 |
|---|---|---|
rank_board_svr | rank/rank_board_svr/ | 榜单服务:rank / rank_manager / rank_mirror_* 镜像 / rank_wal_handle |
| SDK | rank/sdk/ | rank_board(分片 RPC 客户端)+ rank_logic(排名算法) |
| 协议 | rank/protocol/ | rank_board_service.proto |
服务能力(task action)
set/modify score、get top、心跳、主备切换等;WAL 主备同步使用与 dtmq 相同的
distributed_system::wal_publisher / wal_subscriber 机制(rank_wal_handle)。
当前 rank_wal_handle 的 send_snapshot 回调只记录日志,未实际发送完整快照;
增量同步超出保留范围时的恢复不能仅依赖这一回调,需核对主备数据拉取路径。
结算
src/rank_settlement_svr/(rank_settlement_manager +
task_action_rank_send_settlement / task_action_rank_update_settlement)负责榜单周期结算:从 rank_board_svr 拉取榜单,
生成奖励异步任务、调整分数并保存历史记录。
奖励任务通过 rpc::async_jobs::add_jobs 写入;当前大厅服未注册 settle_rank 的业务处理回调,
接入方还需实现实际道具或邮件发放。
业务接入
lobbysvr 的 rank/ 目录演示了查询接入;接入方式:链接 rank SDK,用 rank_board 客户端按分片寻址发送
rank_board_service.proto 中的 RPC。