<button id="hu96j"><acronym id="hu96j"></acronym></button><dd id="hu96j"><pre id="hu96j"></pre></dd>
        <video id="hu96j"><font id="hu96j"><th id="hu96j"></th></font></video>
          <nav id="hu96j"></nav>
        <tbody id="hu96j"><center id="hu96j"><video id="hu96j"></video></center></tbody>

      1. <dd id="hu96j"><track id="hu96j"></track></dd>

        <dd id="hu96j"></dd>
        <rp id="hu96j"><acronym id="hu96j"></acronym></rp>
      2. <button id="hu96j"></button>

        • 保存到桌面加入收藏設為首頁
        服務器技術

        棋牌游戲服務器架構方案

        時間:2014-12-24 00:18:25   作者:tanym   來源:廣東數據中心   閱讀:14378   評論:0
        內容摘要:棋牌游戲服務器架構方案?棋牌游戲服務器租用,咨詢QQ303210272;服務器系統(中心服務器控制系統,服務器登陸控制系統,游戲登陸服務器,游戲房間控制系統,游戲組件系統),游戲客戶端(游戲大廳,游戲組件)。
        一、物理架構說明
         
        游戲系統組件包括:
         
            服務器系統(中心服務器控制系統,服務器登陸控制系統,游戲登陸服務器,游戲房間控制系統,游戲組件系統),游戲客戶端(游戲大廳,游戲組件)。
            數據庫系統用于保存用戶信息數據、游戲積分數據、游戲系統運行狀態數據,系統日志數據等數據。
            中心服務器控制系統:用于向客戶端提供全局配置,初始化數據使用。
            服務器登陸控制系統:用于房間服務控制系統登陸效驗使用。
            游戲房間控制系統:用于控制游戲房間的啟動,停止,添加,刪除,管理等。
            游戲組件系統:用于具體游戲服務,被游戲房間控制系統掛接,提供游戲服務。
            游戲大廳:游戲玩家連接游戲使用。
         
        二、系統結構
         
            系統選用的開發工具是優秀的Microsoft Visual C++.net2003,系統采用客戶端/服務器(C/S)編程模式,TCP/IP協議作為客戶端和服務器的通信f絡層,運用具有性能最優的完成端口(IOCP:Input/Output Completion Port )網絡開發模型搭建服務器軟件.客戶端采用WinSocket API作為網絡層。
         
            系統采用多服務器分布式架構,由一f中心服務器(CENTERSERVER),多個主服務器(MainServer)和多個從服務器(LocalServer)同時工作以實現游戲邏輯和用戶管理及通訊的功能。中心服務器向客戶端提供全局配置,初始化數據(主要是定位一個主服務器IP地址),主服務器管理客戶端用戶身份驗證、登錄以及管理從服務器的建f,由多個從服務器管理游戲通信,大廳及房間,從服務器可任意添加、刪除、修改等。
         
            系統首先啟動中心服務器(CENTERSERVER), 中心服務器從INI文件中讀取MainServer列表信息, 客戶端提供全局配置,初始化數據,然后等待客戶聯結, 客戶聯結后CENTERSERVER定位一個MainServer的IP地址和端口號,發往客戶端, 客戶端收到后斷開CENTERSERVER的聯接,并馬上用MainServer的IP地址和端口號,和主服務器(MainServer)連接.主服務器從數據庫中讀取從服務器的所有信息到主服務┑哪詿?。首先读菴omType表以建立所有的游戲類型的基本信息,然后讀取ServiceInfo(界面樹結點信息表)以獲得包括客戶端界面結構、從服務器的信息、大廳和房間的一切信息。當有客戶端請求登錄并成功和主服務器連接的時候,主服務器將這所有的信息一次性發到客戶端內存,客戶└據這些信息生成界面結構樹。
         
            主服務器啟動后還可以在主服務器里創建多個從服務器及房間,創建完成后從服務器的IP地址及端口號就作為它的唯一標識被同時寫進數據庫和主服務器的內存;房間號、房間所屬的游戲類型、所屬的從服務器號也作為房間的唯一標識被同時寫進數據庫和主服務器的內存。從服務器創建以后就在它所屬的機器上啟動。
         
            客戶端登錄后首先和主服務器建立連接(并且一直到客戶端退出才斷開)連接成功后生成界面結構樹(前述),當用戶點擊某個游戲房間的時候系統從內存中讀出這個房間的所有信息(前述),根據房間所屬從服務器的IP地址及端口號試圖和這個從服務器建立連接,連接成功后相應的從服務器就將這個房間的所有信穹⒌秸飧隹突Ф??蛻舳耸盏揭院缶透鶕@些信息生成房間。每當有客戶端的游戲位置發生改變的時候就向從服務器發送改變信息,從服務器保存、修改所有與它連接的客戶端的位置信息列表。
         
            當一張桌子坐滿時游戲開始。游戲開始后客戶端也是和從服務器通信以更新游戲信息。 當客戶端退出游戲后就回到大廳的這個房間,當退出大廳的時候首先和從服務器斷開連接,然后和主服務器斷開連接,最后終止整個客戶端程序。
         
        三、模塊結構
         
            系統包括三大主要模塊結構:MainServer,LocalServer,Com.此外還有客戶端安裝,更新模塊等。在三大主要模塊結構中<有子DLL(動態鏈接庫)模塊。www.idcsped.com
         
            1、MainServer(EXE項目):封裝主服務器功能,包括管理客戶端用戶身份驗證、登錄以及管理從服務器的建立,數據庫讀寫等。
         
            2、LocalServer(EXE項目):封裝從服務器功能,包括管理客戶端游戲通信,游戲邏輯,大廳及房間等。
         
            3、Com(EXE項目):封裝客戶端所有功能,包括客戶端登錄,大廳及房間,客戶端游戲通信,游戲邏輯等。Com包括以下子模塊:
         
            客戶端通用庫PubLib(DLL模塊)封裝了客戶端通用的調用接口,控件,類。供客戶端所有的模塊調用.
            麻將游戲通用庫MJLib(DLL模塊)封裝了客戶端麻將游戲通用的調用接口類和十堰麻將類。通用的調用接口類供特殊的麻將游戲模塊調用。
            撲克牌游戲通用庫PisaLib(DLL模塊)封裝了客戶端撲克牌游戲通用的調用接口類。通用的調用接口類供特殊的撲克牌游戲模塊調用。
            大廳庫RoomLib(DLL模塊)封裝了客戶端大廳的調用接口。
            象棋庫XQLib(DLL模塊)封裝了客戶端象棋的調用接口。
            圍棋庫XQLib(DLL模塊)封裝了客戶端圍棋的調用接口。
            軍棋庫XQLib(DLL模塊)封裝了客戶端軍棋的調用接口。
         
        服務器架構示意圖
        棋牌游戲服務器架構方案

        組件模塊結構示意圖:
        棋牌游戲服務器架構方案
         
            組件模塊以中心數據"理模塊為中心,數據庫處理模塊和SOCKET管理模塊提供外部操作聯系。以下是對每個模塊的功能和接口的介紹:
         
            中心數據管理模塊繼承于CBaseMainManage類,主要是協調各個模塊的聯系,"理模塊的邏輯處理,保證數據的完整性和合理性和合法性。中心數據管理類是單線程類,使用單線程的目的是為了使數據的處理避免了同步問題,數據的操作不需要使用臨界變量鎖定數據,加快了處理速度,但前題條件是數據處理中,不能出現長時間的數據等待,鎖定操作存在。中心數據"理類實現了                       IServerSocketService網絡數據處理接口和IDataBaseResultService數據庫結果處理接口,提供了網絡模塊和數據庫模塊的進入接口,這兩個接口是供網絡模塊和數據庫模塊調用(意思就是"用線程不是于中心管理模塊的處于同一線程內,要注意數據同步問題)。數據管理模塊對于這些接口調用的處理方式是先把投入的數據處理包分類,分別分為網絡定時器數據包,網絡讀取數據包,網絡連接關閉數據包,數據庫結果數據包,打包為數據管理類識別的數據形式,投遞到數據管"類的處理隊列,等待數據管理類處理。當中心數據管理類需要投遞數據庫操作的時候,就通過數據管理類的                       IDataBaseHandleService接口投遞請求(異步方式),當數據庫處理完畢后,數據庫管理模塊"調用中心管理類的IDataBaseResultService數據庫結果接口。
            SOCKET 管理模塊CTCPSocketManage類,主要是實現了管理網絡連接資源,處理網絡SOCET的讀寫操作,主要提供了單SOCKET發送函數,群發SOCKET函數,SOCKET關閉函數,提供SOCKET事件通知。網絡管理類是多線程處理類。單 SOCKET 發送函數是 SendData 函數,存在著多種重載實現,提供不同的數據發送請求,群發 SOCKET 函數是 SendDataBatch 函數,關閉 SOCKET 函數是 CloseSocket 函數,存在著多種重載實現,當發送了網絡消息取事件,此類主要是通過調用OnNetMessage 虛擬函數,利用IServerSocketService接口把數據讀取數據包投遞到中心數據管理類。當網絡關閉的時候,也通過IServerSocketService接口把數據讀取數據包投遞到中心數據管理類。(詳細的實現見代碼)
         
        主要有的線程介紹:
         
        static unsigned __stdcall ThreadAccept(LPVOID pThreadData) (SOCKET 連接應答線程)
         
            網絡應答線程,等待外部連接,激活一個空閑的 SOCKET 對象,設置 SOCKET 參數,并把這新的 SOCKET 對象綁定到完成端口,然后投遞緩沖區為零的數據讀取操作調用,繼續等待下一個外部連接,詳細的算法見代碼。
         
            static unsigned __stdcall ThreadRSSocket(LPVOID pThreadData) (SOCKET 數據接收線程)
        一個網絡管理類提供了 CUP*2+2 個 SOCKET 消息響應線程,負責處理網絡數據的發送,讀取,關閉消息處理,詳細的算法見代碼。
        棋牌游戲服務器架構方案
            static unsigned __stdcall ThreadBatchSend(LPVOID pThreadData) (SOCKET 批量發送數據線程)
            一個網絡管理類提供了一個數據群發線程,負責處理數據的群發異步操作。此線程采用優化的隊列方式處理群發數據,避免了隊列的數據移動而帶來的數據拷貝操作,加快了處理速度,詳細的算法見代碼。
            static unsigned __stdcall ThreadKeepActive(LPVOID pThreadData) (SOCKET 維護線程)
            一個網絡管理類提供了一個SOCKET 維護線程,IDCsped認為負責維護斷線或者超時的 SOCKET 對象,每個 SOCKET 對象自動被激活開始,服務器就會大約 15 秒向客戶端發送一個檢測數據包,客戶端會在收到此檢測數據包的時候馬上向服務器返回同樣的檢測數據包。在這前題條件下,維護線程就會大約 15 秒向所有的 SOCKET 對象都發送一個檢測數據包,并關閉掉沒有響應的 SOCKET 對象,詳細的算法見代碼。
            數據庫管理模塊,主要包括了數據庫管理CAFCDataBaseManage類和數據庫處理CDataBaseHandle類(繼承于IDataBaseHandleService接口)。CAFCDataBaseManage只實現了數據的連接、關閉操作和數據庫操作請求的投遞任務,而實際的數據處理是根據不同的模塊進行不同的數據庫處理操作,通過 CDataBaseHandle實現實際的數據操作。這樣就避免了不同的數據庫操作重復編寫數據庫的維護,連接等代碼。CAFCDataBaseManage在會啟動一個DataServiceThread線程,等待數據庫處理請求操作數據包,交到類的成員變量CDataBaseHandle指針處理。
         
        模塊編寫實際類分布: 
         
            每個游戲模塊(繼承于IModuleManageService接口),都包含了數據管理模塊(繼承于CBaseMainManage類)和數據庫處理模塊(繼承于CDtaBaseHandle類),實現了模塊的啟動,停止,初始化,卸載功能,每個模塊需要繼承重寫的部分就是數據庫處理模塊和數據管理模塊。
         
            數據管理模塊包含了此組件的數據信息,邏輯處理,負責處理和發送網絡數據包,更具需要投遞數據庫處理請求,處理數據庫處理結果。實現了網絡數據包投遞接口,數據庫處理結果處理接口。
         
            數據庫處理模塊包含了處理數據庫請求處理,發送數據庫處理結果到數據管理模塊處理。實現了根據請求,實現合適的數據庫操作。
         
            數據庫管理類和網絡管理類對象存在于CBaseMainManage類中,而實際的數據庫操作類是個獨立的類,存在于模塊管理類中,僥?槌跏薊的時候把此類的對象指針傳遞到數據庫管理類,供數據庫管理類調用。
         
        游戲房間模塊示意說明:
            游戲房間模塊是應用得最多模塊之一,于其他模塊最大的不同點的是中心數據管理類(繼承于CbaseMainManage類的CComMainManage類)
            數據管理類繼承于基礎數據管理類,還存在CComUserInfoManage用戶管理類和CComDesk游戲桌子類對象數據。


        IDCsped 提供最新的IT互聯網資訊,本著分享、傳播的宗旨,我們希望能幫助更多人了解需要的信息!

        部分文章轉載自互聯網、部分是IDCsped原創文章,如果轉載,請注明出處:www.idcsped.com !
        微信號:13430280788  歡迎加微信交流!

        標簽:棋牌游戲服務器租用  棋牌服務器租用  高防服務器租用  游戲服務器租用  棋牌服務器架構方案  
        相關評論

        銷售電話:13430280788

        Copyright © 2012-2017 | www.idcsped.com 版權所有

          粵公網安備 44010502001126號  粵ICP備12006439號-1
        Powered by OTCMS V3.61
        日韩欧美永久中文字幕视频
          <button id="hu96j"><acronym id="hu96j"></acronym></button><dd id="hu96j"><pre id="hu96j"></pre></dd>
            <video id="hu96j"><font id="hu96j"><th id="hu96j"></th></font></video>
              <nav id="hu96j"></nav>
            <tbody id="hu96j"><center id="hu96j"><video id="hu96j"></video></center></tbody>

          1. <dd id="hu96j"><track id="hu96j"></track></dd>

            <dd id="hu96j"></dd>
            <rp id="hu96j"><acronym id="hu96j"></acronym></rp>
          2. <button id="hu96j"></button>