关闭

分布式音视频服务器之登陆

554人阅读 评论(0) 收藏 举报
分类:

本文讲述的是分布式音视频服务器之登陆.

设计上:

1)账号名请求登陆。在第一次登陆时需要进行完整的账号密码验证,验证通过后,正常登陆服务器后,为了简化登陆流程,客户端可以请求token,以便以后的快速登陆,在前端就表现为记密码登陆。

2)开始正常登陆。请求登陆验证成功后(不管是账号名请求登陆的账号验证,还是请求记密码登陆的token验证),就开始正常登陆,并获取角色相关数据以及其他数据。

3)登陆后请求Token 。正常登陆服务器后,客户端可以请求token,并把token加密保存到本地文件,以便以后的请求记密码登陆。

4)请求记密码登陆(imid+token登陆,imid是指角色id)。使用之前记录的token和角色id来快速验证登陆。


涉及的服务器类型如下:

FLServer :前端服务器。负责接入客户端,处理登陆请求。

HLServer:平台账号服务器。管理账号的生成以及查询。

NameServer:命名服务器。负责根据账号生成以及检查用户ID。

FLSuperServer:前端管理服务器。负责分配合适的网关。

GatewayServer:网关服务器。负责客户端正常登陆后的消息转发。

TokenServer:Token服务器。负责生成客户端登陆的Token并存档。

TokenVerifyServer:Token前端服务器。负责接入客户端并转发请求到TokenServer(如果有拓展其他类型的TokenServer,会根据类型选择转发)。

SessionServer:会话服务器。缓存了角色基本信息和状态。

1、通行证/账号名请求登陆

返回需要登陆的网关给客户端。之后可以开始正常登陆

1)发送用户请求登陆到FLServer 

2)转发请求到HLServer,查账号表,检查账号和密码合法性

3)转发请求到NameServer,根据账号检查对应的用户ID(登陆过的),或者分配一个对应玩家ID并存档(没有登录过的)

4)转发请求到FLSuperServer,由网络类型以及各个网关负载,选择合适网关

5)转发请求到GatewayServer,记录用户ID(IMID)到网关登录会话,记录登陆会话到登录会话管理器(为了登陆网关验证)。返回网关socket加密秘钥(des)、端口和ip给客户端。

2、开始正常登陆

(1)登陆网关

1)发送登陆请求到GatewayServer

2)GatewayServer注册用户,初始化网关连接,返回用户断线重连随机数、请求心跳

3)转发登录请求到其他服务器

(2)登陆SessionServer

1)请求角色基础信息

2)请求好友分组信息

3)请求用户Vip状态

4)请求公会任务 

5)获取用户关系信息


3、登陆后请求Token 

在正常登陆到网关服务器之后,请求token ,并存于客户端本地并加密,以便于以后的记密码快速登陆

1)发送请求到TokenServer,根据imid获取token,没有则生成。(从内存读取token,或从memcache或mysql读取)


4、请求记密码登陆

imid+token登陆.返回需要登陆的网关给客户端。之后可以开始正常登陆

1)发送请求到TokenVerifyServer,如果token类型是IM类型的就发送到TokenServer(否则到GameTokenServer ,是其他类型账号的登陆)

2)转发请求到TokenServer,验证imid和token的合法性

3)转发到FlSuperServer,选择合适的网关

4)转发到GatewayServer,记录登陆会话,加上网关的IP和端口

5)返回信息到客户端(经过TokenServer和TokenVerifyServer)


消息流程如下图:


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:452049次
    • 积分:7322
    • 等级:
    • 排名:第2996名
    • 原创:306篇
    • 转载:114篇
    • 译文:0篇
    • 评论:33条
    最新评论