游戏分布式服务器框架搭建C#+MongoDB+Redis初步

后面为了学习准备搭建一个分部署的游戏服务器,还有一套基于Unity的客户端轻量级框架。架构图后面补上,用CSDN记录一下自己的开发笔记。

游戏服务器主要分成了四个库(Dll)、三个逻辑服务器、一个Web站点。

一、四个库(Dll)

1.Servers.Common

        Common类库主要做的是一些大家都需要用到的通用的事情,为了避免重复,所以就提取出来了一个Dll。Common库主要是实现了表格数据的加载模块、在CsRedisClient、MongoClient中间件的基础上进行二次封装。实现了数据库连接、Redis连接、以及数据库和Redis的增删改查断开操作。

2.Servers.Core

        Core类库做的事儿都是一些通用的每个服务器都会用到的通用工具和算法。实现的有:加密算法工具、字符串工具、压缩工具、内存操作工具、日志系统、Bit库、通用的枚举定义、委托定义。

3.Servers.Model

        每个服务器For每个服务器的Client,Manager类。每个服务器For每个服务器的ConnectAgent类都会在Model模型中实现,这里面会存放每个服务器都需要的数据。每个服务器都会依赖Model库,相当于GameServer也依赖,GateServer也会依赖,WorldServer还会依赖,当这些服务器引用Model.dll的时候,会多出来很多用不到的东西,比如GameServer里面应该只需要用到GameServerManager就行了,但是会出现GateserverManager、WorldServerManager。 这也是后面要优化的结构之一(全部写完再开始优化)

4.Servers.HotFix

        HotFix库是服务器的热更新库,HotFix的被依赖关系和Model库一样,需要被所有的可执行的服务器依赖,基本原理就是每次逻辑变更的时候通过在控制台敲击命令,Dll就会被重新加载,由于是依赖的接口实现的逻辑,变更了的时候给接口的指向重新赋值即可,就可以通过虚表Link到刚新完的那个Dll的函数里。可以再神不知鬼不觉的情况下实现服务器逻辑热更,修复bug,不过这个方案也有它的问题 第一就是逻辑重叠高,我A服务器就需要A服务器的逻辑就行,但是这个Dll里面有ABCD的所有逻辑。这种方法代码少可以这么干,写起来方便,快捷!。但是代码多了可能就得拆分成HotFixGS,HotFixGWS,HotFixWS几个Dll。后续可能还会研究下服务器Lua的热更新。

二、三个服务器

1.Servers.GameServer

        这个服务器只负责初始化配置、初始化与Redis连接、MogoDB连接、数据表初始化、GameServerManager初始化、日志管理器初始化。其实本身这个工程没啥逻辑,逻辑都被打散到了Model库克HotFix库里去了。

2.Servers.GateServer

        干的事儿和GS的工作差不多:负责初始化配置、初始化与Redis连接、MogoDB连接、数据表初始化、日志管理器初始化。其实本身这个工程没啥逻辑,逻辑都被打散到了Model库克HotFix库里去了。唯一不同的是初始化的是GateServerManager。

3.Servers.WorldServer

        一样,干的事儿和GS的工作差不多: 负责初始化配置、初始化与Redis连接、MogoDB连接、数据表初始化、日志管理器初始化。其实本身这个工程没啥逻辑,逻辑都被打散到了Model库克HotFix库里去了。唯一不同的是初始化的是WorldServerManager。

三、Web站点

1.WebAccount(账号服务器)

        WebAccount站点主要干的事儿是下发 服务器状态信息,这个服务器会和WorldServer建立连接,等所有的GameServer初始化完成之后会同步给WorldServer,WorldServer同步给账号服务器站点,然后账号站点等待玩家请求。

2.CDN站点

        CDN是资源(文件)站点,存放的主要是客户端热更资源,游戏客户端启动的时候会找到最近的CDN站点,下载CDN内的里的filelist文件,拿到文件中的所有md5和本地作比对热更新。cdn应该根据各个地区,分别架设,其目的主要是为了不同地区的玩家可以享受到相同的访问速度。

        这是这个专栏的第一篇文章,后续的心血历程会记录在游戏服务器框架(C#+MogoDB+Redis分布式服务器)这篇专栏里面,分享下自己写的东西,如果对大家有启发就更好了,也记录下自己的成长之路。 后续项目都传到国内的代码平台上去(github龟速,太慢了,目前考虑gitee,有更好的托管平台小伙伴儿可以留言呀,不要藏着掖着~)

        就这样,写完了~

猜你喜欢

转载自blog.csdn.net/qq_33531923/article/details/126944150