游戏开发(skynet框架):开服操作接入中央后台

一个需求:控制游戏单服开服接入中央后台,支持定时(指定时间)、定量(当前已开放最新服的已注册数量)的方式;

定时定量开服主要是中央后台功能,游戏服只需要接入控制开服逻辑。那么

中央后台怎么通知游戏服;

通过http协议;(skynet框架提供了http组件的支持,可以方便快速地搭建起来)

对于滚服架构,单服进程内开启一个http服务,用于处理外部http消息和发起http请求,中央后台通知到指定单服上的http服务;

对于大服架构(这时候游戏单服可能只是逻辑上的分区),集群内单独开启一个skynet进程,暂时称之为http agent节点,用于处理外部的http消息和发起http请求,当收到中央后台开服请求时,将命令转发到登录服处理;

显然这个服务/节点需要支持配置白名单,用于拦截非法IP的访问,只对指定的中央后台机器开放;中央后台通过指定服务/节点将开服指令转发进服务器集群内处理;

大服架构下,为什么不是直接通知到指定单服,而是通知到登录服呢;

上面说到,大服架构下,单服只是逻辑分区,没有物理环境的隔离。这时的单服,只是玩家数据里的一个属性。那么数据库里必然维护一份每个单服的信息,这个通知做的事情实际上只是一次写库操作,标识指定单服可被新创角玩家使用,而创角显然是在登录流程完成的;

滚服构架下http通知的会是指定单服,从环境隔离控制风险的角度看,这比单独进程的做法会更好;

另外,认为外部注入是不可信的,因此这里并非是强依赖关系,需要支持手动切换和逻辑强校验;以保证游戏服的登录流程正常。

posted @ 2024-03-23 14:29  linxx-  阅读(68)  评论(0编辑  收藏  举报