![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
服务器架构
服务器架构
聂炳玉
不断学习,不断提升
展开
-
服务器框架——订阅观察和订阅投票事件
一、前言如果问我最喜欢的设计模式,我会告诉你非观察者模式莫属,观察者模式在moba游戏中能发挥出巨大威力。观察者模式在游戏服务器中主要是订阅观察和订阅投票事件,让我们一起走进观察者模式领略它的魅力。二、场景我们先看几个游戏中的场景。2.1 场景一,玩家上线游戏中的需求:登录日志记录登录玩家信息 聊天系统,对未隐身的玩家,需要能收到聊天信息 游戏中有一个帮会A,帮会中需要显示在线玩家战斗力,帮会中玩家可以在玩家头顶显示帮会名称 地图中显示玩家打点,方便队伍或者自己能看到自己.原创 2020-08-03 23:36:19 · 290 阅读 · 0 评论 -
服务器——异常处理
一、前言服务器在运行过程如果出现数组越界访问、访问空指针、迭代器访问越界等等,可能会导致出现抛出异常,导致系统崩溃。怎样捕获异常并快速定位问题呢?二、异常捕获和问题定位在window下可以用minidump将崩溃转存,通过生成的dmp可以快速定位到导致异常的地方。2.1 异常捕获使用__try __except,捕获异常,通过函数MiniDumpWriteDump生成dmp文件2.2 通过dmp文件定位异常打开dmp文件,设置符号路径选择pdb、dll文件所在目录,如果是在.原创 2020-06-22 21:47:46 · 1003 阅读 · 0 评论 -
服务器——UID
一、介绍在rpg这类游戏中,有大量的实体存在,实体包括玩家、NPC、怪物、坐骑、宠物等等,每天实体有一个id,这个id是在实体创建的时候生成的,我们称之为uid,通过uid我们可以获取到实体对象。(对于玩家实体它们还有一个id,是在玩家注册账号的时候db生成的id,我们称之为dbid,用于数据库中记录玩家唯一标记。)二、uid设计uid是实体的唯一标记,通过uid我们需要查询到实体对象。uid设计重要考虑的是怎样通过uid查询到实体对象。这里有几种设计方案:方案一:map存储map.原创 2020-06-20 00:26:36 · 4654 阅读 · 0 评论 -
服务器框架——网络消息协议
一、介绍用于服务器和客户端应用层之间的协议,通过定义的协议,可以将接收的数据转发给相应的模块,相应模块可以将数据按照约定的结构进行解析。二、协议体2.1 消息码定义消息码分为:分类消息码,主消息码,子消息码2.2 消息码作用消息码用于消息转发,将消息一层一层传给对应模块。消息码作用介绍:分类消息码,用于网关服转发消息,网关服通过分类消息码,将消息发送给对应的服务器 主消息码,将消息转发给对应模块 子消息码,一个模块中定义的消息码,用于处理一个具体某个逻辑在这三种模.原创 2020-06-18 22:23:16 · 348 阅读 · 0 评论 -
服务器框架——内存管理
一、介绍内存管理模块用于保存其他模块中的数据申请和释放,让服务器中其他模块中逻辑处理和数据进行分离。例如,广场服和游戏服中的插件,插件中的数据我们都可以在内存管理模块中申请,这样当我们需要热更新插件的时候,不用额外处理插件中的数据(数据都在内存管理模块中),只需要在插件加载的时候读取对应的数据即可。二、用途可用于插件数据管理,以及用于其他模块数据保持。三、类图3.1 CDataCenterCDataCenter是数据内存管理的数据中心,它负责数据节点的创建和读取数据,..原创 2020-06-16 21:12:37 · 427 阅读 · 0 评论 -
游戏服服务器——对象池
一、介绍在实际开放中如果某个对象,需要频繁创建和销毁,且创建代价较大,我们可以用对象池来进行管理,在需要对象的时候我们在对象池中找一个空闲的对象,如果对象池中没有,先创建,并交给对象池进行管理,当对象使用完,将对象返回到对象池,用于下次调用。二、用途例如游戏服务器中玩家创建,当玩家上线我们需要给玩家创建一个对象,玩家对象创建开销大且很频繁,我们可以用对象池来管理玩家对象的创建和回收。三、实现过程在负责对象的类中,维护一个队列用于记录空闲的对象,当我们需要一个对象的时候就去队列..原创 2020-06-15 20:23:26 · 301 阅读 · 0 评论 -
网关服代理
一、功能介绍玩家在游戏期间需要进行通信的服务器有:登录服、广场服、游戏服(不考虑网站)。玩家和服务器之间通信是通过网关服转发。连接的方式是网关服主动和登录服、广场服、游戏服进行连接,登录服、广场服、游戏服是用网关服代理模块负责接收网关服连接,并进行数据接收和发送。二、类图2.1 调用网关代理客户端对象创建网络监听,用于监听网关服连接 调用网关服代理的对象需要继承IServerProxySink,OnClientAccpet()用于创建客户端连接对象并返回对象指针。 负责客户.原创 2020-06-04 20:23:47 · 486 阅读 · 0 评论 -
游戏服服务器——DB服
一、DB服介绍整个服务器(除网站后台)与数据库交互都是通过DB服进行。DB服用于数据库交互和数据缓存,使用sqlserver做为存储,用来保存用户的所有相关数据。二、服务器启动流程1、启动准备初始化网络库 监听事件注册2、开始启动创建日志、定时器 用户代理服务启动和监听(监听网关服和数据交互) 创建DB代理服务(用于存储过程与数据库交互) 挂接逻辑事件(用户线程读取网络数据) 创建守护中心(与守护中心服连接,用于服务器拉起)说明:DB代理服务器,创建的时候会创建DBE.原创 2020-06-04 19:57:10 · 2431 阅读 · 0 评论 -
08.游戏服服务器——DB服
一、DB服介绍与数据库交互和用户数据缓存服务,使用sqlserver做为存储,用来保存用户的所有相关数据。二、服务器启动流程1、启动准备初始化网络库 监听事件注册2、开始启动创建日志、定时器 用户代理服务启动和监听(监听网关服和数据交互) 创建DB代理服务(用于) 挂接逻辑事件(用户线程读取网络数据) 创建守护中心(与守护中心服连接,用于服务器拉起)3、启动流程图三、DB服与其他服务器交互参考前面四、类图先上图,后续再细谈...原创 2020-05-30 08:26:11 · 362 阅读 · 0 评论 -
游戏服服务器——游戏服
一、游戏服介绍负责用户游戏逻辑处理。一个游戏服是一个游戏房间,例如:掼蛋金币房间(初级场、中级场、高级场),好友房,比赛场分别对应一个游戏房间,后台配置决定房间游戏玩法。一个房间有多个桌子,桌子数量后台配置,同一个桌子上的玩家可以一起玩牌,一个桌子有多个椅子,椅子数据感觉玩法来定,斗地主椅子数量是3,竞技掼蛋椅子数是4个。二、服务器启动流程1、启动准备初始化网络库 监听事件注册2、开始启动创建日志、定时器 创建网络服务 挂接逻辑事件(用户线程读取网络数据) 创建广场客户端.原创 2020-05-14 20:13:20 · 1550 阅读 · 0 评论 -
游戏服务器——广场服
一、广场服介绍用户的数据服务,用户的金币消耗,道具购买等操作都是通过本服务进行。二、服务器启动流程1、启动准备初始化网络库 监听事件注册2、开始启动创建日志 创建定时器 创建配置中心 用户代理服务启动和监听(监听网关服和数据交互) 游戏房间服务启动和监听(监听游戏服和数据交互) 挂接逻辑事件(用户线程读取网络数据) 创建DB服代理服务(连DB服并进行消息交互) 创建中心服代理服务(连中心服务器并进行消息交互) 创建Redis客户端 创建对象工厂 初始化网络连.原创 2020-05-12 20:22:09 · 969 阅读 · 0 评论 -
游戏服务器——登陆服
一、中心服介绍用户登录校验,校验通过生成秘钥之后其他的登录都是通过此处得到的秘钥进行登录。二、服务器启动流程1、启动准备初始化网络库 监听事件注册2、开始启动创建日志、创建定时器 创建网络监听服务并启动监听 挂接逻辑事件(用户线程读取网络数据) 创建DB服代理服务(连DB服并进行消息交互) 创建中心服代理服务(连中心服务器并进行消息交互) 创建守护中心(与守护中心服连接,用于服务器拉起)3、启动流程图三、登陆服与其他服务器之间消息交互DB...原创 2020-05-11 20:40:22 · 2096 阅读 · 0 评论 -
游戏服务器——中心服
一、中心服介绍中心服用于应用统一调度中心和数据脚本发放中心。一 服务器信息调度:DB Server第一个启动,随后中心服启动,中心服启动前会和DB Server进行连接,之后其他服务器(网关服、登陆服、广场服、游戏服、Web Server)启动前都会和中心进行连接,当中心服收到别的服务器连接时,会将新连接的服务器信息广播给所以已经连接的服务器。网关服务器就是通过中心服广播的(网关服、登陆服、广场服、游戏服、Web Server)信息在必要的时候和他们进行连接。二 数据脚本发放:网站后台配置修改同原创 2020-05-09 21:12:04 · 3044 阅读 · 0 评论 -
游戏服务器——网关服
一、网关服介绍客户端与服务器之间消息交互通过网关服进行转发,客户端与网关服通过TCP进行连接,网关服将客户端消息发送对应服务器(登陆服、广场服、游戏服),对应服务器收到消息之后进行处理,处理完再通过网关服将消息发送给客户端。网关服也可以的对消息进行校验,防止恶意攻击。这里只考虑客户端与游戏服务器之间消息交互,客户端与CDN、Web服务器之后通信不考虑。二、服务器启动流程1、启动准备初始化网络库 监听事件注册2、开始启动创建日志、定时器 创建网络监听服务并启动监听 挂接逻辑事.原创 2020-05-08 21:24:02 · 2358 阅读 · 1 评论 -
服务器架构概述
一、框架应用该框架用于棋牌游戏,可以承受1W玩家同时在线游戏。接下来篇章主要介绍游戏相关的服务器(网关服、登陆服、大厅服、游戏服、中心服、DB服务器、Web服)。二、架构总览三、各个模块说明3.1 Game Client——客户端实际游戏客户端,与网关相互作用,通过网关与游戏进行正常的交互处理。相关的资源通过CDN进行更新下载3.2 GateWay Serv...原创 2020-05-07 21:33:13 · 1203 阅读 · 1 评论 -
服务器架构——开篇
该系列讲解游戏服务器框架,从服务器整体框架和刚刚模块——网关服、登陆服、广场服、游戏服、中心服、DB服、Web服,进行归纳和总结,将会分为多个篇章进行总结和说明。...原创 2020-05-07 21:25:02 · 953 阅读 · 0 评论