网狐棋牌游戏平台服务器架构设计分析

 

基本设计概念和处理流程

 

调用模型

模仿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

E

数据库连接接口

IDataBase

数据库操作类

: public IUnknownEx

CDataBase


数据库钩子接口

IDataBaseSink

启动关闭数据库模块、数据操作处理

: public IUnknownEx


F

数据库引擎接口

IDataBaseEngine

启动停止服务、注册钩子、获取接口

: public IUnknownEx

CDataBaseEngine


 

 

 

 

 

A

数据队列接口

IQueueService

加入数据

: public IUnknownEx

CQueueService


数据队列类钩子接口

IQueueServiceSink

通知回调函数

: public IUnknownEx

CTCPSocketEngine
CDataBaseEngine
CAttemperEngine

A

队列类引擎接口

IQueueServiceEngine

开始服务、停止服务、设置接口、负荷信息

: public IUnknownEx

CQueueService


 

 

 

 

 

B

事件服务引擎接口

IEventService

设置句柄、设置级别、事件通知

: public IUnknownEx

CEventService

G

服务引擎接口

IServiceEngine

服务接口、配置接口、服务查询、功能接口

: public IUnknownEx

CServiceEngine


 

 

 

 

 

D

定时器引擎接口

ITimerEngine

设置定时器、删除定时器

: public IUnknownEx

CTimerEngine

D

定时器引擎接口

ITimerEngineManager

开始服务、停止服务、设置接口

: public IUnknownEx

CTimerEngine


 

 

 

 

 

C

TCP SOCKET 引擎接口

ITCPSocketEngine

发送、批量发送、关闭连接、允许群发

: public IUnknownEx

CTCPSocketEngine

C

TCP SOCKET 引擎管理接口

ITCPSocketEngineManager

设置接口、端口、数目、启动服务、停止服务

: public IUnknownEx

CTCPSocketEngine

C

连接对象回调接口

IServerSocketItemSink

应答消息、读取消息、关闭消息

CTCPSocketEngine


 

 

 

 

 


调度模块钩子接口

IAttemperEngineSink

管理接口、事件接口(定时器、数据库、网络应答读取关闭)

: public IUnknownEx

I

调度引擎接口

IAttemperEngine

服务管理、设置钩子、设置网络、获取接口

: public IUnknownEx

CAttemperEngine


 

 

 

 

 

K

异步引擎接口

IAsynchronismEngine

管理接口(启动停止服务、插入请求)、功能接口(注册钩子、取消注册)

: public IUnknownEx

CAsynchronismEngine


异步引擎钩子接口

IAsynchronismEngineSink

启动事件、停止事件、异步请求

: public IUnknownEx


 

 

 

 

 

 

接口实现

类别


引用


网络管理类

CTCPSocketEngine

CQueueService//队列对象

CServerSocketItemPtrArray

CQueueServiceEvent//通知组件


调度管理类

CAttemperEngine

ITCPSocketEngine//网络引擎

IAttemperEngineSink//挂接接口CQueueService//队列对象


数据库对象

CDataBase

_CommandPtr//命令对象

_RecordsetPtr//记录集对象

_ConnectionPtr//数据库对象


数据库管理类

CDataBaseEngine

CQueueService//队列对象

IDataBaseSink//通知钩子


事件服务类

CEventService

设置句柄-bool SetRichEditHwnd(HWND);

设置级别-void ConfigEventService(...);

事件通知-void ShowEventNotify(...);


定时器引擎

CTimerEngine

CTimerThread->(公共服务)


异步引擎接口

CAsynchronismEngine

friend class CControlWnd;

friend class CMessageThread;

CControlWnd//控制窗口

CThreadLock//线程同步

CDataStorage//数据存储

CMessageThread//线程组件


服务引擎

CServiceEngine

CTimerEngine定时器引擎

CDataBaseEngine数据库引擎

CAttemperEngine调度引擎

CTCPSocketEngine  网络引擎

CAsynchronismEngine 异步引擎


数据队列类

CQueueService

CQueueServiceThread->(公共服务)


ADO 错误类

CADOError

: public IADOError


 


 

 

内部类:

意义

功能

继承

引用

TCP SOCKET 类

CServerSocketItem

SOCK对象和操作、完成端口、加密解密等



数据队列事件

CQueueServiceEvent

事件通知,接口设置管理


代码级引用

窗口控制类

CControlWnd

//消息映射

OnAsynRequest//请求消息

: public CWnd


应答线程对象

CSocketAcceptThread

运行函数(WSAAccept)

: public CServiceThread


读写线程类

CServerSocketRSThread

运行函数(GetQueuedCompletionStatus)

参数CServerSocketItem *

: public CServiceThread


检测线程类

CSocketDetectThread

运行函数(非阻塞)、检测m_dwTickCount

: public CServiceThread

CTCPSocketEngine*//管理指针

队列线程类

CQueueServiceThread

运行函数(GetQueuedCompletionStatus)

参数CQueueService *

: public CServiceThread


消息线程

CMessageThread

运行函数(for CAsynchronismEngineSinkArray*)

: public CServiceThread

CAsynchronismEngine*//异步引擎

定时器线程

CTimerThread

运行函数(for CTimerItemPtr->GetCount();)

: public CServiceThread

CTimerEngine*//定时器引擎






数据存储类

CDataStorage

内存的管理


公共服务( dllimport class )

线程对象类

CServiceThread

线程操作管理

IServiceThread

公共服务( dllimport class )

事件输出类

CEventTrace

事件管理、通知、级别(静态类)


静态全局 IEventService 以及其他处理函数






类别

类(非组件实现)

接口(组件接口)



数据库引擎钩子

CDataBaseSink

IDataBaseSink



调度引擎钩子

CAttemperEngineSink

IAttemperEngineSink



客户端网络引擎+钩子

客户端SOCKET+=IClientSocketSink

IAsynchronismEngineSink



 

中心服务器

名字

类名

继承

类型


调度引擎钩子

CAttemperEngineSink

: public IAttemperEngineSink

接口实现


数据库引擎钩子

CDataBaseSink

: public IDataBaseSink

接口实现


 

 

 

 


中心服务类

CCenterService

 

核心类


配置参数

CInitParamter

 

核心类


 

 

 

 


连接信息结构

CConnectItem

 

数据管理


连接信息管理

CConnectInfoManager

 

数据管理


房间连接信息

CConnectItem_GameServer

: public CConnectItem

数据管理


广场连接信息

CConnectItem_Plaza

: public CConnectItem

数据管理


 

 

 

 


应用程序对象

CCenterServerApp

: public CWinApp

MFC


主对话框

CCenterServerDlg

: public CDialog

MFC


配置对话框

CSystemOptionDlg

: public CDialog

MFC


 

 

 

 

登陆、大厅

名字

类名

继承

类型


调度引擎钩子

CAttemperEngineSink

: public IAttemperEngineSink

接口实现


数据库引擎钩子

CDataBaseSink

: public IDataBaseSink

接口实现


中心连接类

CCenterSocket

: public IAsynchronismEngineSink,

 public IClientSocketSink

接口实现


 

 

 

 


登录服务类

CLogonService

 

核心类


配置参数

CInitParamter

 

核心类


 

 

 

 


列表管理

CServerList

 

数据管理


列表信息

CServerListInfo

 

数据管理


 

 

 

 


应用程序对象

CLogonServerApp

: public CWinApp

MFC


主对话框

CLogonServerDlg

: public CDialog

MFC


配置对话框

CSystemOptionDlg

: public CDialog

MFC


 

 

 

 

游戏装载器

名字

类名

继承

类型


服务参数类

CServiceParameter

: public CDialog

MFC/核心类


配置参数

CInitParamter

 

核心类


 

 

 

 


应用程序对象

CServiceLoaderApp

: public CWinApp

MFC


主对话框

CServiceLoaderDlg

: public CDialog

MFC


配置对话框

CSystemOptionDlg

: public CDialog

MFC


 

 

 

 

游戏服务框架

名字

类名

继承

类型


调度引擎钩子

CAttemperEngineSink

: public IAttemperEngineSink,

public IGameServiceFrame

接口实现


数据库引擎钩子

CDataBaseSink

: public IDataBaseSink

接口实现


中心连接类

CCenterSocket

: public IAsynchronismEngineSink,

 public IClientSocketSink

接口实现