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

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介:

基本设计概念和处理流程

 

调用模型

模仿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 CTCPSocketEngineCDataBaseEngineCAttemperEngine
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 接口实现

作者:码瘾少年·麒麟子 
出处:http://www.cnblogs.com/geniusalex/ 
蛮牛专栏:麒麟子 
简介:09年入行,喜欢游戏和编程,对3D游戏和引擎尤其感兴趣。 
版权声明:本文版权归作者和博客园共有,欢迎转载。转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/geniusalex/p/3493399.html

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
3天前
|
存储 人工智能 项目管理
2025年GitHub平台上的十大开源MCP服务器汇总分析
本文深入解析了GitHub上十个代表性MCP(Model Context Protocol)服务器项目,探讨其在连接AI与现实世界中的关键作用。这些服务器实现了AI模型与应用程序、数据库、云存储、项目管理等工具的无缝交互,扩展了AI的应用边界。文中涵盖Airbnb、Supabase、AWS-S3、Kubernetes等领域的MCP实现方案,展示了AI在旅行规划、数据处理、云存储、容器编排等场景中的深度应用。未来,MCP技术将向标准化、安全性及行业定制化方向发展,为AI系统集成提供更强大的支持。
50 2
2025年GitHub平台上的十大开源MCP服务器汇总分析
|
3月前
|
机器学习/深度学习 安全 算法
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
809 79
十大主流联邦学习框架:技术特性、架构分析与对比研究
|
15天前
|
SQL 人工智能 前端开发
JeecgBoot 低代码平台 v3.7.4 发布,后台架构大升级
JeecgBoot 是一款基于 SpringBoot2.x/3.x 和 SpringCloud Alibaba 的企业级 AI 低代码平台,采用前后端分离架构(Ant Design & Vue3),支持 Mybatis-plus 和 Shiro。它集成了强大的代码生成器,可一键生成前后端代码,无需手动编写,大幅减少重复工作。平台支持 DeepSeek、ChatGPT 和 Ollama 等主流大模型,提供 AI 对话
67 9
|
3月前
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
600 90
|
2月前
|
SQL 消息中间件 Kafka
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
本文介绍了阿里云实时数仓Hologres负责人姜伟华在Flink Forward Asia 2024上的分享,涵盖实时数仓的发展历程、从实时数仓到实时湖仓的演进,以及总结。文章通过三代实时数仓架构的演变,详细解析了Lambda架构、Kafka实时数仓分层+OLAP、Hologres实时数仓分层复用等方案,并探讨了未来从实时数仓到实时湖仓的演进方向。最后,结合实际案例和Demo展示了Hologres + Flink + Paimon在实时湖仓中的应用,帮助用户根据业务需求选择合适的方案。
675 20
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
|
2月前
|
SQL 运维 BI
湖仓分析|浙江霖梓基于 Doris + Paimon 打造实时/离线一体化湖仓架构
浙江霖梓早期基于 Apache Doris 进行整体架构与表结构的重构,并基于湖仓一体和查询加速展开深度探索与实践,打造了 Doris + Paimon 的实时/离线一体化湖仓架构,实现查询提速 30 倍、资源成本节省 67% 等显著成效。
湖仓分析|浙江霖梓基于 Doris + Paimon 打造实时/离线一体化湖仓架构
|
26天前
|
前端开发 JavaScript API
体育赛事即时比分 分析页面的开发技术架构与实现细节
本文基于“体育即时比分系统”开发经验总结,分享技术实现细节。系统通过后端(ThinkPHP)、前端(Vue.js)、移动端(Android/iOS)协同工作,解决实时比分更新、赔率同步及赛事分析展示等问题。前端采用 Vue.js 结合 WebSocket 实现数据推送,提升用户体验;后端提供 API 支持比赛数据调用;移动端分别使用 Java 和 Objective-C 实现跨平台功能。代码示例涵盖比赛分析页面、API 接口及移动端数据加载逻辑,为同类项目开发提供参考。
|
1月前
|
SQL 消息中间件 Serverless
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
|
4月前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
253 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
1月前
|
弹性计算 Linux 数据安全/隐私保护
幻兽帕鲁palworld自建游戏联机服务器,使用阿里云价格真优惠!
阿里云提供幻兽帕鲁(Palworld)游戏服务器搭建服务,支持4核16G(8人在线)和8核32G(20人在线)两种配置,带宽10M,价格低至70元/月起。通过阿里云计算巢服务,可实现一键购买与自动部署,简单快捷。玩家只需在本地安装STEAM客户端并登录游戏,输入服务器IP及端口8211即可联机游玩。教程详细涵盖服务器选择、配置设置及游戏接入全流程,助你轻松开启帕鲁冒险之旅!