IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

服务器排队系统的一点想法

云风的 BLOG 2011-04-01 13:28:11 累计浏览 3,205 次
本机暂存

    今天突然想到的,先记下来。

    以前考虑过这个问题,写过一篇 blog 。我今天想到,其实可以把排队完全独立出来。和原有系统分离。这样,所有不支持排队的游戏系统,只要简单加上就可以用了,不用对系统结构做大的调整。

    想法是这样的:

    游戏系统需要估计自己的环境大约可以支持一定时间段多少人可以进入。这个用来估算每个新用户的大致等待时间。

    游戏系统采用一个以时间为演算因子的序列 key ,用来做进入的验证。只有持有这个 key 的用户才认为是经过排队的。允许进入。

    排队服务器独立安置,当用户直接连接游戏服务器遇到拥堵时,服务器简单记录他的用户名,和等待鉴权的口令,然后让其去排队服务器排队。如果用户再次连接上来而没有经过排队。因为有用户名记录,所以可以在帐户信息里做记录。之后的处理就比较简单了。

    用户的这个流程(先尝试游戏服务器,再被转到排队服务器,并不可以二次尝试),这个过程由用户 Client 保证。用户不修改 Client 是不会违规的。游戏服务器只是记录那些用异常手法插队的用户。

    在排队服务器,首先向第一次进来的用户发放序号,以及通知大约等待时间。并记录用户的用户名,以及一个等待鉴权的口令。用户则可以离线,由 Client 等待指定时间再上来排队。为何要提交鉴权口令?因为要防止有人恶意冒充插队。当排队服务器检测到用户不守规定不在规定等待时间内重复尝试,则回头鉴定用户是否的确是本人,而后再决定在其帐号里做违规记录。

    等待用户快排到了,则可以向排队服务器保持长连接,直到排队服务器发放进入游戏服务器的口令。他就可以离开队伍,前去游戏了。


    这样做这个系统,可以让排队系统和游戏足够分离。便于开发。不受游戏服务器的构架变换影响,也更容易部署。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  2. 好的API设计 (累计阅读 12,397)
  3. Twitter/微博客的学习摘要 (累计阅读 12,262)
  4. 面试题 – 为什么我的朋友圈不见了? (累计阅读 11,953)
  5. Facebook 网站架构 (累计阅读 11,112)
  6. Feed架构-我们做错了什么 (累计阅读 8,732)
  7. 架构师给程序员的一封信 (累计阅读 7,988)
  8. Java技术路线 (累计阅读 7,729)
  9. 聊聊ThoughtWorks面试 (累计阅读 7,617)
  10. 一种基于长连接的社交游戏服务器程序构架 (累计阅读 7,505)