游戏服务登录流程

2690阅读 0评论2013-03-09 moon_rock
分类:C/C++

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
服务器体系结构图:




----------------------------------------------------------------------------------------------------------------------------------------------------------------------
客户端交互LoginServer获取Gateway连接信息的时序:


Client                                    LoginServer                            CenterServer                           GatewayServer
    |            (UserID, ServerID)           |                                       |                                        |
    | ----------------LoginReq--------------->|                                       |                                        |
    |                                        Auth              (UserID)               |                                        |
    |                                         | -------------UserLoginReq-----------> |                                        |
    |                                         |                                   Get Best Gateway                             |
    |                                         |                                       |                                        |
    |                                         |                                   CreateUser                                   |
    |                                         |                                       |                                        |
    |                                         |                                   SetUserState(WantLogin)                      |
    |                                         |                                       |                                        |
    |                                         |                                   Gen CryptoCode                               |
    |                                         |                                       |                                        |
    |                                         |       (Gateway Info, CryptoCode)      |                                        |
    |                                         |<-------------UserLoginAck-------------|                                        |
    |       (Gateway Info, CryptoCode)        |                                       |           (UserID, CryptoCode)         |
    |<---------------LoginAck-----------------|                                       |-------------UserWantLoginNtf---------->|
    |                                         |                                       |                                        |
    |                                         |                                       |                                   Create ClientObject(UserID, CryptoCode)
    |                                         |                                       |                                        |
    |                                         |                                       |                                   Waiting For Client(UserId, CryptoCode) Connect
    |                                         |                                       |                                        |




----------------------------------------------------------------------------------------------------------------------------------------------------------------------
客户端连接到Gateway后验证的时序:(网关结点要做到尽可能少的分配服务器资源)


Client                                  GatewayServer
    |          (UserID, CryptoCode)          |
    |---------------ConnectReq-------------->|
    |                                      On Accept
    |                                        |
    |                                      Auth(UserID, CryptoCode)
    |                                        |
    | <-------------ConnectAck---------------|
    |                                        |
Connect Success                              |
    |                                        |




----------------------------------------------------------------------------------------------------------------------------------------------------------------------
客户端真正登录游戏的时序:


Client                                   CenterServer                            GameServer                              DBServer
    |                                         |                                      |                                      |
    |--------------------------------------------------------EnterGameReq-------------------------------------------------> |
    |                                         |                                      |                                      |
    |                                         |                                      |                                   Register[UserID, GatewayID]
    |                                         |                                      |                                      |
    |                                         |                                      |                                   User Data Exist?(LRU)
    |                                         |                                      |                                      |
    | <------------------------------------------------------EnterGameAck-------------------------------------------------->|
    |                                         |                                      |                                      |


上一篇:关于网络数据驱动的思考
下一篇:单线程与多线程逻辑的思考