|
本帖最后由 gavingqf 于 2014-12-15 11:35 编辑
服务器架构以及登陆过程
一, 服务器大区的概念
1.1 大区组成
一个大区中包含很多小的服务器,玩家可以选择其中一个游戏服务组登陆。这里设计的大区中包含几个逻辑单元:login server, center server, game server, db server,和物理mysql数据库, 以及或根据性能增加redis server(memory cache)。整个大区的概念如下图1-1:
图1-1
二,客户端登陆以及创建角色过程
2.1 大区中各个节点功能说明
login server: 负责登陆验证过程,并将信息保存以便能检查。
center server: 负责收集各个区的信息,并反馈给登陆验证ok的客户端。
game server: 主要负责游戏逻辑以及包括存储数据库(集中了db server的功能),一个game server就是游戏组。
mysql: 物理数据库,角色信息存储。
redis server: 负责角色的信息缓存,相当memory cache,提高执行的效率。
2.2 客户端登陆验证
客户端登陆验证过程如下:
1, client利用第三方sdk登陆到第三方平台服务器,服务器返回一个token信息。
2, client携带token到本地服务器(login server),服务器将token发送到第三方平台进行认证,无效的token信息,就直接返回。
3, login server如果认证成功,第三方平台会返回一个能唯一确定本地角色信息的账号信息(accountid),login server将该信息保存到认证数据库中({accounted, authenticate-time})或memory cache中。
4, login server通知center server返回区服列表信息({id, ip, name})。
5, client选择其中一个(区id)进入该区(game server),发送进入该组服务器,协议(login_game_req)。
6, game server在验证数据库或memory cache验证是否合法。不合法的client不予理睬。
7, 对于合法的client,利用accountid查询数据库,如果有老的角色,返回角色信息(id, name)。如果没有老的角色,随机一堆名字,让client随机创建相应的角色。创建成功了,返回角色信息(这里有待商榷的是否主动发送随机名字)。
8, client利用返回的角色信息,进入游戏,server返回该角色的游戏信息。
第一次发帖,希望大家嘴下留情。
|
|