美文网首页tdengine
TDEngine游戏平台框架逻辑

TDEngine游戏平台框架逻辑

作者: 问蒙服务框架 | 来源:发表于2016-05-13 17:11 被阅读0次

    TDEngine游戏平台框架逻辑

    服务器组成

    服务器由网关服(可多个),大厅服(可多个),和游戏逻辑服组成,其中游戏逻辑服可布置在大厅服上,详情请参考下图


    逻辑图逻辑图

    如果没有外部负载均衡或者偏小型的服务器,网关服当做负载均衡,大厅即为实际服务器

    服务器连接情况

    客户端

    客户端只与网关服进行连接

    网关服

    网关服会监听两个端口,一个是来自客户端的端口,一个是来自大厅服的接口,网关服会连接Redis服,并定时的把自己的地址及负载情况通知出去。

    收到来自客户端的请求,建立连接,会分配一个对应处理的大厅服,完成验证后,之后的消息会传给相对应的大厅服,如果没有任何大厅服,则直接拒绝接受请求,关闭客户端的连接

    收到来自大厅服的请求(Ps.这里通过监听地址和防火墙来进行验证,也就是能连上此端口的都认为是合法的连接,不接受公网的请求),记录大厅服的连接

    大厅服

    大厅服启动时会连接Redis取所有的网关服连接,然后选择负载比较小的网关服进行连接。如果未发现任何的网关服,会定时的重新取,并重连直到连上网关服为止,一个大厅服同时只会连接一个网关服

    接受网关服转发过来的消息,进行真正的逻辑处理。

    如果信息为房间的信息,则通过Redis发布订阅到指定的频道,让指定房间服接收消息

    订阅以此服务器id的Redis频道,其它服得知服务器id可通过id发布消息到该频道

    房间服

    房间服会连接Redis然后订阅此房间名字的渠道,通常来说一组服务器内,房间名唯一的,也就是同时最多只有一台服务器服务于一个房间

    房间服并不持有用户的实际对象,比如玩家进入斗地主服务器,大厅服只会把玩家的基本数据和斗地主相关的数据及服务器id发给斗地主房间服,所以对玩家来说他只有连上了任一一个大厅服,他就可以进这组服务的任意玩家,并且这个房间服的玩家不要求在同一个大厅服

    房间服会定时把自己的房间及游戏类型及进入房间人数发布出去,由大厅服接收房间数据并解析

    用户异常情况

    用户掉线

    用户掉线时会发布掉线消息,此用户的对象不会被立刻进行析构

    如果此用户不在游戏状态中,则房间服接受到掉线消息,让玩家离开已进入的桌子,并且退出房间
    如果此用户正在游戏中,则房间服会把消息推送给其它与之正在玩游戏的人,并自动为其拖管,直至游戏结束或者重连上来

    用户登陆

    1. 如果此用户在别的服务器上登陆,或者已掉线但对象并没有被析构,则此时通知析构此玩家对象,等待析构完成之后跳转到2
    2. 正常的处理登陆流程,登陆成功后发布消息登陆成功,如果房间服接受到有此用户在此房间内,则推送消息给客户端上次进入哪个房间,进入后正常的参与游戏

    项目地址

    TDEngine

    相关文章

      网友评论

        本文标题:TDEngine游戏平台框架逻辑

        本文链接:https://www.haomeiwen.com/subject/blkmrttx.html