天天看點

網狐棋牌遊戲平台伺服器架構設計分析[轉]

基本設計概念和處理流程

調用模型

模仿com元件接口模式,利用面向對象思想多态性polymorphism,調用方儲存着被調用方的基礎接口指針(interface or sink鈎子)(pure virtual function),調用方直接調用接口指針内聲明的純虛方法,而此純虛函數的具體邏輯由該接口的派生類實作。

示意圖:

網狐棋牌遊戲平台伺服器架構設計分析[轉]

基于事件驅動的資料處理模型

在系統功能設計中,針對網絡事件socketevent、資料庫事件databaseevent、定時器事件timerevent……的資料處理,建立資料隊列服務queueservice,為每一隊列建立多個子線程queueservicethread處理。資料隊列服務提供添加事件資料的方法addtoqueue,設定資料隊列服務鈎子setqueueservicesink,由資料隊列服務鈎子queueservicesink執行具體邏輯事件的資料處理。 示意圖:

網狐棋牌遊戲平台伺服器架構設計分析[轉]

 再者,根據網絡、資料庫等特定功能,建構網絡、資料庫等管理服務,實作資料隊列服務鈎子queueservicesink方法,排程事件資料執行外部處理接口,外部處理接口具體由二次開發使用者實作。

網狐棋牌遊戲平台伺服器架構設計分析[轉]

事件資料設計

網狐棋牌遊戲平台伺服器架構設計分析[轉]

軟體體系結構(架構 architecture)設計

網狐棋牌遊戲平台伺服器架構設計分析[轉]

功能子產品劃分

網狐棋牌遊戲平台伺服器架構設計分析[轉]

資料隊列服務queueservice子產品設計

    基本設計概念

    建立一個記憶體連結清單,儲存事件資料,對外部提供方法(向連結清單添加事件資料并通知線程,同時啟動多個處理線程,從資料連結清單裡擷取事件資料,執行外部鈎子方法進行處理。線程事件通知采用完成端口技術。

    類與接口設計

網狐棋牌遊戲平台伺服器架構設計分析[轉]

com接口

接口名

接口基類

接口實作類

a

隊列引擎

iqueueserviceengine

cqueueservicehelper

b

事件服務

ieventservice

ceventservicehelper

c

網絡引擎

itcpsocketengine

ctcpsocketenginehelper

d

定時器引擎

itimerengine

ctimerenginehelper

e

資料庫操作

idatabase

cdatabasehelper

f

資料庫引擎

idatabaseengine

cdatabaseenginehelper

i

排程引擎

iattemperengine

cattemperenginehelper

g

服務引擎

iserviceengine

cserviceenginehelper

k

異步引擎

iasynchronismengine

casynchronismenginehelper

 

自動清理參數輔助類

cautocleanparameters

自動關閉記錄集輔助類

cautocloserecord

斷開資料庫連接配接輔助類

cautoclosedatabase

内部接口

類别

接口

功能

繼承

實作類

資料隊列事件 (非元件實作)

cqueueserviceevent(iqueueservice、cthreadlock)

設定接口、發送通知事件

資料庫錯誤接口

iadoerror

錯誤類型與描述

: public iunknownex

cadoerror

資料庫連接配接接口

資料庫操作類

cdatabase

資料庫鈎子接口

idatabasesink

啟動關閉資料庫子產品、資料操作處理

資料庫引擎接口

啟動停止服務、注冊鈎子、擷取接口

cdatabaseengine

資料隊列接口

iqueueservice

加入資料

cqueueservice

資料隊列類鈎子接口

iqueueservicesink

通知回調函數

ctcpsocketenginecdatabaseenginecattemperengine

隊列類引擎接口

開始服務、停止服務、設定接口、負荷資訊

事件服務引擎接口

設定句柄、設定級别、事件通知

ceventservice

服務引擎接口

服務接口、配置接口、服務查詢、功能接口

cserviceengine

定時器引擎接口

設定定時器、删除定時器

ctimerengine

itimerenginemanager

開始服務、停止服務、設定接口

tcp socket 引擎接口

發送、批量發送、關閉連接配接、允許群發

ctcpsocketengine

tcp socket 引擎管理接口

itcpsocketenginemanager

設定接口、端口、數目、啟動服務、停止服務

連接配接對象回調接口

iserversocketitemsink

應答消息、讀取消息、關閉消息

排程子產品鈎子接口

iattemperenginesink

管理接口、事件接口(定時器、資料庫、網絡應答讀取關閉)

排程引擎接口

服務管理、設定鈎子、設定網絡、擷取接口

cattemperengine

異步引擎接口

管理接口(啟動停止服務、插入請求)、功能接口(注冊鈎子、取消注冊)

casynchronismengine

異步引擎鈎子接口

iasynchronismenginesink

啟動事件、停止事件、異步請求

接口實作

引用

網絡管理類

cqueueservice//隊列對象 cserversocketitemptrarray cqueueserviceevent//通知元件

排程管理類

itcpsocketengine//網絡引擎 iattemperenginesink//挂接接口cqueueservice//隊列對象

資料庫對象

_commandptr//指令對象 _recordsetptr//記錄集對象 _connectionptr//資料庫對象

資料庫管理類

cqueueservice//隊列對象 idatabasesink//通知鈎子

事件服務類

設定句柄-bool setrichedithwnd(hwnd); 設定級别-void configeventservice(...); 事件通知-void showeventnotify(...);

ctimerthread->(公共服務)

friend class ccontrolwnd; friend class cmessagethread; ccontrolwnd//控制視窗 cthreadlock//線程同步 cdatastorage//資料存儲 cmessagethread//線程元件

ctimerengine定時器引擎 cdatabaseengine資料庫引擎 cattemperengine排程引擎 ctcpsocketengine  網絡引擎 casynchronismengine 異步引擎

資料隊列類

cqueueservicethread->(公共服務)

ado 錯誤類

: public iadoerror

内部類:

意義

tcp socket 類

cserversocketitem

sock對象和操作、完成端口、加密解密等

資料隊列事件

cqueueserviceevent

事件通知,接口設定管理

代碼級引用

視窗控制類

ccontrolwnd

//消息映射 onasynrequest//請求消息

: public cwnd

應答線程對象

csocketacceptthread

運作函數(wsaaccept)

: public cservicethread

讀寫線程類

cserversocketrsthread

運作函數(getqueuedcompletionstatus) 參數cserversocketitem *

檢測線程類

csocketdetectthread

運作函數(非阻塞)、檢測m_dwtickcount

ctcpsocketengine*//管理指針

隊列線程類

cqueueservicethread

運作函數(getqueuedcompletionstatus) 參數cqueueservice *

消息線程

cmessagethread

運作函數(for casynchronismenginesinkarray*)

casynchronismengine*//異步引擎

定時器線程

ctimerthread

運作函數(for ctimeritemptr->getcount();)

ctimerengine*//定時器引擎

資料存儲類

cdatastorage

記憶體的管理

公共服務( dllimport class )

線程對象類

cservicethread

線程操作管理

iservicethread

公共服務( dllimport class )

事件輸出類

ceventtrace

事件管理、通知、級别(靜态類)

靜态全局 ieventservice 以及其他處理函數

類(非元件實作)

接口(元件接口)

資料庫引擎鈎子

cdatabasesink

排程引擎鈎子

cattemperenginesink

用戶端網絡引擎+鈎子

用戶端socket+=iclientsocketsink

中心伺服器

名字

類名

類型

: public iattemperenginesink

: public idatabasesink

中心服務類

ccenterservice

核心類

配置參數

cinitparamter

連接配接資訊結構

cconnectitem

資料管理

連接配接資訊管理

cconnectinfomanager

房間連接配接資訊

cconnectitem_gameserver

: public cconnectitem

廣場連接配接資訊

cconnectitem_plaza

應用程式對象

ccenterserverapp

: public cwinapp

mfc

主對話框

ccenterserverdlg

: public cdialog

配置對話框

csystemoptiondlg

登陸、大廳

中心連接配接類

ccentersocket

: public iasynchronismenginesink,  public iclientsocketsink

登入服務類

clogonservice

清單管理

cserverlist

清單資訊

cserverlistinfo

clogonserverapp

clogonserverdlg

遊戲裝載器

服務參數類

cserviceparameter

mfc/核心類

cserviceloaderapp

cserviceloaderdlg

遊戲服務架構

: public iattemperenginesink,  public igameserviceframe

簡介:09年入行,喜歡遊戲和程式設計,對3d遊戲和引擎尤其感興趣。 

版權聲明:本文版權歸作者和部落格園共有,歡迎轉載。轉載必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

轉載:http://www.cnblogs.com/geniusalex/p/3493399.html