现在越来越多的游戏,像皇室战争一样,会做成全球同服,统一入口。这种方案带来的用户体验和以前的滚服游戏很不一样。这里就全球服的游戏谈谈架构设计。

首先,所谓的全球同服只是给玩家的感觉是只有一个服,而非真的只有一台服务器。否则像皇室战争这样火爆的游戏性能上是不可能扛得住的。一般底层做成分布式的结构,主要划分成:

  1. login:负责注册和登录,注册时通过负载均衡选到合适的game服,然后返回game服id并保存下来。以后登录固定等到创角的game服。它是个单点结构。
  2. gate:负责维持客户端的连接,以及转发消息。它是一个消息的中转站,无论是客户端和服务端之间,还是服务端与服务端之间的通信都会经过gate。gate是状态无关的,所以是多点。
  3. game:游戏的主要逻辑,包括单人和多人。每个游戏角色从属于一个game,与其他game之间是rpc通信,通过gate转发。game必然是多点。
  4. global:负责全局性的游戏逻辑。如活动的开启结束、匹配战斗对手等。这种全局一份的内存数据和逻辑适合放在global上。它是单点。
  5. db:数据库这块,一种做法是分布式,把db挂在每个服务器下面;另一种是集中式,通过一个专门的db server来管理,可以做成mysql集群。
  6. zookeeper:用于服务器管理,非常方便,可以获得所有服务器的overview,万一有服务器down掉也能及时知晓。
  7. redis:全局性数据的缓存,例如可以用来做多点服务器(如game)的负载均衡,策略可以基于每个服的创角数、在线数等等。

下面是一些常见系统的架构设计:

  1. 聊天:功能较独立,适合放在单独的聊天服务器上,聊天主要涉及到消息的转发和历史记录的内存存储,负载不大,一般不会成为瓶颈,做成单点即可。
  2. 好友:可以做成独立服务器,也可以做在game端,后者需考虑数据的双向存储问题。
  3. 排行榜:适合做成单独的排行榜服务器,启动时在内存中构建排行榜,数据更新时game向rank服同步。
  4. 匹配战斗:对于皇室战争、王者荣耀这种匹配战斗的游戏模式,可以在global上做调度,找寻到合适的match服,再将所需战斗数据同步过去进行战斗。

以上只涉及到架构划分,至于运维部署那就是另一个话题了,参见游戏风云:阿里云全球同服游戏方案全面解读。

参考资料:类似coc这种全球同服,并且注册玩家与在线玩家庞大的游戏,服务器端架构该如何设计呢?

全球同服游戏服务端设计相关推荐

  1. 全球同服 游戏服务器架构设计

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:马剑飞 链接:https://www.zhihu.com/question/31103751/answer/6463111 ...

  2. 如何使用私有网络部署全球同服游戏服务

    近年来,随着移动互联网技术和全球社交化的发展,全球同服的玩法越来越受到游戏玩家的喜爱,最火爆的如<皇室战争>自16年3月份发布来便长期霸榜,支持全球同服的游戏架构在知乎上一度引起热议,面对 ...

  3. 基于skynet设计游戏服务端框架

    skynet并不是一个开箱即用的服务端框架,游戏后端在开展业务时,需要根据自身业务特点,合理设计相应的服务端框架.在这里我根据自身的设计目标,写下各方面的选择与取舍.对于小型企业来说,一些商业化的软件 ...

  4. 基于滴滴云的棋牌游戏服务端架构设计

    现在小团队开发的棋牌游戏有很多,棋牌行业的相互攻击是非常普遍的现象,同行之间往往会采取 DDOS.CC 等攻击的手段来打击对手,这是目前棋牌运营商们面临的比较严峻的一个问题,那么在设计棋牌游戏服务端架 ...

  5. CSGO社区服搭建服务器架设游戏服务端教程

    CSGO社区服搭建服务器架设游戏服务端教程 我是艾西,上一篇说了搭建CSGO服务器需要准备服务器以及安装好所需要的环境,那么今天说一下CSGO社区私人服务器怎么搭建游戏服务端 搭建CSGO服务器比较简 ...

  6. 棋牌游戏服务端开发和设计-苏劲-专题视频课程

    棋牌游戏服务端开发和设计-279人已学习 课程介绍         本门课程讲解棋牌游戏服务端的架构.数据库的设计.数据库异步存储.帐号管理.房间管理等棋牌游戏服务端的核心技术,有意向从事棋牌研发的同 ...

  7. 游戏交流社区BBS论坛APP客户端和网页服务端设计 毕业论文+前后端源码及数据库文件

    下载地址:https://download.csdn.net/download/m0_63680064/36065411 项目介绍: 游戏交流社区BBS论坛APP客户端和网页服务端设计 毕业论文+前后 ...

  8. 百万在线:大型游戏服务端开发

    进入手游时代,服务端技术也在向前演进.现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重.服务端技术并不简单,作为服务端新人,全面掌握服务端技 ...

  9. 谈谈一只菜鸟转行Erlang游戏服务端的经历(希望大佬指导,也希望我的经历能给一些还未毕业的同学或者正在迷茫自己工作内容的同学一些感触)

    入行半年Erlang游戏服务端的心得体验 个人经历 转方向后的工作经历 工作中遇到的问题和处理 一些游戏服务端开发的体验和想法 最后谈谈自己现在面临的问题 第一次发文章,主要想谈谈自己近半年来的心路历 ...

最新文章

  1. Feature Selection Techniques
  2. SetWindowRgn注意点
  3. python软件是免费的吗-谁说程序员不懂浪漫?用Python每天自动给女朋友免费发短信...
  4. python多久学会自学-怎么自学python,大概要多久?
  5. phpstrom php出现404
  6. iOS内存管理编程指南
  7. CentOS中使用Docker+nginx部署Vue打包的dist项目
  8. 网络协议 8 - TCP协议(上):性恶就要套路深
  9. 去除残缺条目java_为什么说Java匿名内部类是残缺的闭包
  10. 深入浅出 Java Concurrency - 目录 [转]
  11. 生成token和获取token
  12. php mb strimwidth,如何解决WordPress内置函数mb_strimwidth()不能用问题?
  13. psp3000 刷机
  14. 湖南大学计算机学院张柏杨,王树林-湖大信息科学与工程学院
  15. oracle 漏洞补丁修复,Oracle发布41个安全补丁 修复产品严重漏洞
  16. Java中类与对象编程题
  17. kali Linux的设置和优化(双系统)
  18. 【随缘侃史】蹈舞求生许敬宗
  19. 明日之后mumu模拟器找不到服务器,MuMu模拟器玩明日之后常见问题汇总
  20. 解决SQL适配器连接到字符集为US7ASCII的Oracle数据库的中文乱码问题

热门文章

  1. 跨专业考研2022.3.8
  2. 什么是肉鸡服务器,黑客说的肉鸡正确解释
  3. 超越ChatGPT:AgentGPT正在将自主AI带到浏览器中
  4. MyBatis缓存(一级缓存、二级缓存)
  5. 数字化转型热潮下,传统制造企业如何做好数字化转型建设规划?
  6. 让珍贵的非物质文化遗产“活”起来----青城派 刘绥滨掌门人
  7. python烟花表白引大火_代码实现女孩子表白烟花效果~让你快速撩妹!
  8. php上传图片卡_如何利用PHP实现上传图片功能详解
  9. Less:less的使用方法及如何使less文件
  10. DB2文件系统已满的解决方法