- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中间件_设计文档
中间件_设计文档
1 引言 1
1.1 编写目的 1
1.2 背景 1
2 总体设计 2
2.1 需求规定 2
2.2 运行环境 2
2.3 开发环境 2
2.4 基本设计概念和处理流程 2
2.4.1 调用模型 2
2.4.2 基于云服务器的数据处理模型 2
2.4.3 事件数据设计 3
2.4.4 框架体系设计 3
2.5 功能模块划分 3
3 模块详细设计 4
3.1 数据队列服务QueueService模块设计 4
3.1.1 基本设计概念 4
3.1.2 类与接口设计 4
3.3.1 运行流程 8
3.2 网络引擎TCPSocketEngine模块设计 8
3.2.1 网络重叠完成端口IOCP简介 8
3.2.2 基本设计概念 9
3.2.3 网络数据命令包结构设计 10
3.2.4 网络数据加密设计 10
3.2.5 类与接口设计 11
3.3 数据库引擎DataBaseEngine模块设计 11
3.3.1 基本设计概念 11
3.3.2 类与接口设计 11
3.3.3 运行流程 22
3.4 定时器引擎TimerEngine模块设计 23
3.4.1 基本设计概念 23
3.4.2 类与接口设计 23
3.4.3 运行流程 26
3.5 调度引擎AttemperEngine模块设计 26
3.5.1 基本设计概念 26
3.5.2 类与接口设计 26
3.5.3 运行流程 30
3.6 异步引擎AsynchronismEngine模块设计 31
3.6.1 基本设计概念 31
3.6.2 类与接口设计 31
3.6.3 运行流程 34
3.7 服务引擎ServiceEngine模块设计 35
3.7.1 基本设计概念 35
3.7.2 类与接口设计 35
3.7.3 运行流程 40
引言
编写目的
方便二次开发人员理解服务器核心技术
背景
为一般游戏服务器设计的核心模块
本项目的任务开发者:Godzilar
系统使用用户: 游戏服务器二次开发人员
总体设计
需求规定
系统功能
提供网络服务接口,数据库访问接口,定时器接口,并提供调度钩子接口,让二次开发人员调用,更多精力处理游戏逻辑
系统性能
网络负载支持2000同时在线连接以上
数据库访问支持100并发访问
定时器时间精度达25ms之内
运行环境
硬件平台:x86体系结构
软件平台:Window2003操作系统
开发环境
开发工具:Visual C++ 2003
开发语言:C++
基本设计概念和处理流程
调用模型
利用面向对象思想多态性,调用方保存着被调用方的基础接口指针(一般称呼为 钩子),调用方直接调用接口指针里面方法,方法具体实现逻辑由该接口的派生类实现.示意图:
基于云服务器的数据处理模型
为系统功能设计,需要处理网络事件数据SocketEvent,数据库事件数据DatabaseEvent,定时器事件数据TimerEvent等,为此建立数据队列服务QueueService,为每一队列建立多个子线程QueueServiceThread处理。数据队列服务提供添加事件数据方法AddToQueue,设置数据队列服务钩子SetQueueServiceSink,让数据队列服务钩子QueueServiceSink做具体逻辑事件数据处理。
示意图:
再者,根据网络,数据库等特定功能,构建网络,数据库等管理服务,实现数据队列服务钩子QueueServiceSink方法,调度事件数据执行外部处理接口,外部处理接口具体由二次开发用户实现。示意图:
事件数据设计
名称 描述 类型 定时器事件
TimerEvent 根据时间间隔,定期产生 自发,被动 数据库事件DatabaseEvent 请求访问数据库 用户自定义,主动 网络应答事件
SocketAcceptEvent 客户端连接网络服务,成功连接 自发,被动 网络读取事件
SocketReadEvent 客户端发送数据,网络服务成功读取 自发,被动 网络关闭事件
SocketControlEvent 客户端失去连接 自发,被动 控制事件
ControlEvent 用户自定义控制服务 用户自定义,主动
框架体系设计
功能模块划分
名称 描述 开发优先 数据队列服务
QueueService 外部接受输入事件数据,内部实现事件数据链表保存与管理, 处理子线程从链表获取事件数据调用数据队列钩子方法处理事件数据 1 网络引擎
TCPSocketEngine 实现数据队列服务钩子方法,管理网络事件数据,内部启动网络服务器监听服务,接收与发送网络数据,并调用网络处理钩子进行逻辑处理 2
数据库引擎
DataBaseEngine 实现数据队列服务钩子方法,管理数据库事件数据,并调用数据库处理钩子进行逻辑处理,还提供
文档评论(0)