分布式服务器逻辑关系数据模型及网络通讯规则全解析
首先我们要看服务器之间的逻辑关系,和它们存储的对象
比如Web服务器,它要存储玩家的账号,角色是区服上的。
客户端不再直接连到某一个GameServer上去。因为我们把服务器功能打散了,现在客户端是连接到GatewayServer(网关服务器)上。区服列表就要有网关1,网关2到网关N。一个网关承载是500人,人多了就要分流。当客户端拿到区服列表后,想去进这个区的时候,它要选择一个网关,但是这个网关不是客户端选择的,是我们通过一个算法你要连到哪个网关,这个算法是:如果这个服刚开服,你随机给它一个网关,如果已经开服半小时,你要根据网关的人数权重,给一个最低的让它进去。要确保网关服务器人数是相对均衡的。
Web服务器它存在主要就是玩家账号,区服列表。
首先要启动WorldServer,监听网关服务器和游戏服务器的连接。因为它们之间是有通讯的。
WorldServer(中心服务器)开启了,开启一个端口,监听游戏服务器和网关服务器的连接。
启动GameServer连接到中心服务器。中心服务器有一个配置表来显示有多少个游戏服务器来连接了。然后检测所有的游戏服务器都连接好了。它会把这些信息都存储到游戏服列表里。中心服务器肯定有一个类表示这是哪一个游戏服务器。
然后是启动网关服务器。连接到中心服务器。网关服务器可以从中心服务器拿到所有的游戏服列表,也可以读配置文件拿到。然后网关服务器连接到游戏服务器上去。
当网关服务器连接到游戏服务器。游戏服收到所有的网关服务器连接,存储网关服务器列表。
中心服务器会监听网关服务器的状态,如果这些服务器都就绪了,会通知web,因为游戏刚刚开服,这些服务器是没有准备好的,只有当准备好了,中心服务器才会告诉web服务器准备好了,可以让玩家登录了。同时中心服务器会定时监听网关服务器的状态。查看网关服务器人数,这样才能根据人数算权重,新的用户选择人最少的服务器登录。
整个区准备好之后,就可以让client登录了,会先登录web获取一个网关,连接到网关上去。
没有角色创建角色,往往是走中心服务器的,每一个client首先要知道这个账号。只有网关服务器知道是哪个client。