排队功能

最近更新时间:2022-04-22 16:01:49

我的收藏

使用场景

当云游戏的用户量大于机器并发数量时,需要引入用户排队系统,来提升用户体验。

关键点

队列不能堵塞。

参考方案

业务后台需要建立多个队列,相同 GroupId、GameId 的单独一个队列,如果有 VIP 区分的,也要单独一个队列。用户请求时,需要找到相应的队列进行处理。
队列需要支持插入队尾、插入队头和退出队列等操作。
用户进入排队后,需要每隔一段时间请求业务后台,来获取当前排名或锁定机器成功进入到下一步。
业务后台需要定时或每次用户请求时检测队头,如果队头的上次请求时间距离现在已超过一定时间,就认为超时,需要踢出队列,避免堵塞。
提供用户主动退出排队的接口。
为了便于下面流程描述,假设用户响应包括以下字段(以下仅为举例,业务方可自行定义这些字段):
参数名称
类型
描述
Code
integer
0:表示成功
-1:表示处理错误
Msg
string
错误信息
LockSuccess
boolean
true:表示锁定成功
false:表示锁定失败
Rank
integer
当前排名

流程图