天天看点

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

基本设计概念和处理流程

调用模型

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