当前位置: 首页 > news >正文

游戏服务器整体架构思考

1.启动层

        不管是单体架构还是微服务架构,其实服务器本身都是要启动的。 不管是用grpc实现远程调用,还是dubbo,还是说就一个简单的tcp监听,都是要启动的。

      启动的时候,肯定要整合下controller接入层,不管是叫:router还是啥,其实本质是接入层,别人发来请求后,我起码得知道到哪里处理呀。

     有的可以进行一些设计,比如:router,我一个服务器,可能既处理mj,又处理斗地主,又处理五子棋。 我又不想让客户端发送:moduleId+msgId,所以说,我可以做一下设计,比如:把2个int编码为1个(通过移位或者 100*moudleId + msgId也行)。  pomelo协议也有过人之处,router直接就是字符串: mj.enterRoom    fivechess.enterRoom 这样子天然就区分开了,我根据前缀,可以知道要转发到哪里处理(可能是远程节点,也可能是:单服下的某个线程)。

      除了controller的处理外,还有各种初始化,比如:日志。 数据库初始化。监控初始化。rpc初始化。 nats初始化。 世界初始化等等。

2.业务层

        controller // 这个其实就是扫描,知道请求到哪里处理,衔接启动层。

        service  // 业务层,我知道了到那个controller处理自然就知道用哪个service处理。

                注意的是:不要和Manager搞混了,就算是有Manager,也需要独立出来,然后new一个对象处理,我们对外只暴露service接口给各个服务使用,而不是去调用manager中的细节。

        dao // 持久层,而不是说:在service中直接操作数据库。userDao, bagDao。。。

思考:

        有了上面整体的2层架构,一切逻辑就会清晰起来,知道各自模块的职责。

http://www.lryc.cn/news/273430.html

相关文章:

  • labelme 标注的数据集转化为Mask-Rcnn适用的数据集
  • x-cmd pkg | tig - git 文本模式界面
  • 信息论与编码期末复习——概念论述简答题(一)
  • [Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目
  • 二叉排序树的创建、插入、查找和删除【数据结构】
  • 【管理篇 / 恢复】❀ 07. macOS下用命令刷新固件 ❀ FortiGate 防火墙
  • 工作纪实40-使用redis的几种姿势
  • 修改 docker /dev/shm 的大小
  • 【观察】Aginode安捷诺:坚守“长期主义”,服务中国数字经济
  • HttpClient库与代理IP在爬虫程序中的应用
  • C#最佳工具集合:IDE、分析、自动化工具等
  • promethues grafana 安装和使用
  • 华为DriveONE电机控制器拆解实拍
  • 【git使用】历史commit的分割(git rebase和 git reset的联合使用)
  • 栈和队列oj题——225. 用队列实现栈
  • 集合的三种遍历方式
  • Mysql 中的常用命令
  • 【Java】CompletableFuture使用方法
  • 摆烂式学习ssh
  • 用 Python 抓取 bilibili 弹幕并分析!
  • 目标检测YOLO实战应用案例100讲-基于红外图像处理的无人机光伏组件故障检测(续)
  • go mod 命令详解
  • 花了一小时,拿python手搓了一个考研背单词软件
  • 一篇文章学会Vim
  • 面试算法91:粉刷房子
  • js逆向第11例:猿人学第4题雪碧图、样式干扰
  • OpenEular23.09(欧拉)操作系统为企业搭建独立的K8S集群环境,详细流程+截图
  • 学生成绩管理系统半成品
  • 国家信息安全水平等级考试NISP二级题目卷⑤(包含答案)
  • 4.快速实现增删改查,模糊查询功能