后面为了学习准备搭建一个分部署的游戏服务器,还有一套基于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,有更好的托管平台小伙伴儿可以留言呀,不要藏着掖着~)

就这样,写完了~

分布式服务器框架之搭建C#+MongoDB+Redis初步相关推荐

  1. 《C#分布式服务器框架》尝试

    最近看了一大堆的分布式服务器框架,然后自己也向尝试着搭建一个,也算是对自己能力的一种总结吧,经过这些年,发现自己错过的东西太多啦,需要好好努力,才能不被时代给淘汰. 我准备参考skynet的框架,来搭 ...

  2. 分布式服务器框架之Servers.Core库实现 DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法

    1 介绍 1.1 DES对称加密算法介绍 对称加密算法 通信双方(通信主体)同时掌握一个钥匙,加解密都由这一个钥匙完成.通信双方通信前共同拟定一个密钥,不向第三方公开,发送前加密和接受后解密都由此密钥 ...

  3. 分布式服务器框架之Server.Core库中实现 XXTEA分组加密算法

    1 XXTEA分组加密算法介绍 在密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行的块密码,通常只需要很少的代码就可实现.其设计者是剑桥大学计算 ...

  4. 分布式服务器架构下的3v3团队对抗游戏

    [Warning] 本仓库作为本人的毕设课题,主要是初学者的学习/实践,谨慎用于正式用途. Github仓库链接:https://github.com/ZerlenZhang/distributed- ...

  5. Redis由浅到深层次讲解和springboot实战(服务器层面的搭建部署)

    Redis由深层次讲解到springboot实战 一.Nosql概述 为什么使用Nosql 1.单机Mysql时代 90年代,一个网站的访问量一般不会太大,单个数据库完全够用.随着用户增多,网站出现以 ...

  6. java 分布式游戏服务器框架,集群游戏服务器框架,游戏服务器网关框架 ioGame 网络游戏服务器框架

    网络游戏框架简介 ioGame 是一个由 java 语言编写的网络游戏服务器框架.支持 websocket.tcp ,适用于全球同服.回合制游戏.策略游戏.即时战斗等游戏服务器的开发.具有高性能.稳定 ...

  7. 【推荐】微服务分布式企业框架Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis

    摘要: 主要定位于互联网企业架构,已内置企业信息化系统的基础功能和高效的代码生成工具,包括:系统权限组件.数据权限组件.数据字典组件.核心工具 组件.视图操作组件.工作流组件.代码生成等.采用分层设计 ...

  8. 基于redis的简易分布式爬虫框架

    代码地址如下: http://www.demodashi.com/demo/13338.html 开发环境 Python 3.6 Requests Redis 3.2.100 Pycharm(非必需, ...

  9. 高性能分布式游戏服务器框架

    欢迎大家Fork mqant开源框架 为什么决定要重新造一个轮子? 目前网上优秀的开源游戏服务器框架也不少(当然与web框架比起来就少太多了),但总结起来都各有各的优缺点,下面列出我在选型过程中的一些 ...

最新文章

  1. SVN使用教程之——分支、合并
  2. python3 学习使用大纲梳理
  3. 运维 + 数据 + AI=企业数字化难题的应对之法?
  4. Linux android studio :'tools.jar' seems to be not in Android Studio classpath.
  5. 团队项目计划BACKLOG
  6. python语言map函数及map object at 乱码错误
  7. linux脚本中空格怎么显示,linux vim 显示空格
  8. 一个软件公司需要多少前端_内幕!软件外包公司开发一个软件需要多少钱?
  9. 浏览器地址栏传中文乱码
  10. UVA 11624 BFS
  11. 文件和异常——python从编程入门到实践
  12. 苏州大学计算机考研复试机试,2014年苏州大学计算机考研经验
  13. 1075_MISRA_C规范学习_2004_Rule_5.1
  14. 使用Sugar制作数据可视化大屏的操作过程
  15. python星号怎么输入_如何将密码显示为星号
  16. K8S Ingress的安装与使用
  17. markdown编辑微信公众号
  18. 培训机构无线覆盖解决方案
  19. 乱弹琴的系统设计套路(适合新手)
  20. Python小虫收集箱

热门文章

  1. Spring Cloud Gateway 参考指南
  2. 30、二维装箱(单品)
  3. android手机语音信箱,手机语音信箱设置方法【详细步骤】
  4. mysql多表成绩查询_MySQL多表查询答案
  5. python_习题四
  6. java保存文件filedialog保存路径 文件名_VB.Net保存文件对话框(SaveFileDialog)
  7. (2.4)【服务型木马-winshell】最小木马:使用方法
  8. 深度学习中EMA的使用场景
  9. 中文文本纠错(CSC)任务Benchmark数据集SIGHAN介绍与预处理
  10. TIB上海工作室成立!