原文地址:https://mp.weixin.qq.com/s/l1pnVc_E-Nz6Z27iC0G6GA

1.游戏服务器特征

游戏服务器端,是一个会长期运行的程序,并且它还要服务于多个不定时,不定点的网络请求。所以这类软件的特点是要非常关注稳定性和性能。这类程序如果需要多个协作来提高承载能力,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。由于多进程协同工作,也带来了开发的复杂度,这也是需要关注的问题。

功能约束,是架构设计决定性因素。基于游戏领域的功能特征,对服务器端系统来说,有以下几个特殊的需求:

对于游戏数据和玩家数据的存储

对玩家数据进行数据广播和同步

把一部分游戏逻辑在服务器上运算,做好验证,防止外挂。

针对以上的需求特征,在服务器端,我们往往会关注对电脑内存和CPU的使用,以求在特定业务代码下,能尽量满足承载量和响应延迟的需求。最基本的做法就是“空间换时间”,用各种缓存的方式来以求得CPU和内存空间上的平衡。

在CPU和内存之上,是另外一个约束因素:网卡。网络带宽直接限制了服务器的处理能力,所以游戏服务器架构也必定要考虑这个因素。

2.游戏服务器架构要素

对于游戏服务端架构,最重要的三个部分就是,如何使用CPU、内存、网卡的设计:

内存架构:主要决定服务器如何使用内存,以最大化利用服务器端内存来提高承载量,降低服务延迟。

逻辑架构:设计如何使用进程、线程、协程这些对于CPU调度的方案。选择同步、异步等不同的编程模型,以提高服务器的稳定性和承载量。可以分区分服,也可以采用世界服的方式,将相同功能模块划分到不同的服务器来处理。

通信模式:决定使用何种方式通讯。基于游戏类型不同采用不同的通信模式,比如http,tcp,udp等。

2.服务器演化进程

(1)卡牌等休闲游戏弱交互游戏

服务器基于游戏类型不同,所采用的架构也有所不同,我们先讲一下简单的模型,采用http通信模式架构的服务器:

这种服务器架构和我们常用的web服务器架构差不多,也是采用nginx负载集群支持服务器的水平扩展,memcache做缓存。

唯一不同的地点不同的在于通信层需要对协议再加工和加密,一般每个公司都有自己的一套基于http的协议层框架,很少采用开源框架。

(2)长链接游戏服务器

长链接游戏和弱联网游戏不同的地方在于,长连接中,玩家是有状态的,服务器可以时时和client交互,数据的传送,不像弱联网一般每次都需要重新创建一个连接,消息传送的频率以及速度上都快于弱联网游戏。

转载于:https://www.cnblogs.com/qilin20/p/10749812.html

《王者荣耀游戏服务器架构演进(完整版)》读后感相关推荐

  1. GC13:XO独占游戏《神鬼寓言传奇》公布

    作者: 来源: www.bts668.com 微软日前公布了<神鬼寓言传奇>(Fable Legends),该游戏是此系列作品的新作,将作为Xbox One游戏出现. 这款由狮子头工作室开 ...

  2. Facebook 重金挖不到,ASP.NET 之父,微软大神“红衣教主”传奇

    作者 | 伍杏玲 出品 | CSDN (ID:CSDNnews) 2018 年底,微软"王者归来",时隔 16 年市值重返全球第一.人们纷纷用"力挽狂澜"&qu ...

  3. 乔布斯去世衍生多种周边产品(支持乔布斯请顶)

    各种乔布斯肖像 乔布斯公仔 乔布斯立体纸人 不管你是不是狂热的苹果粉丝,是不是拥有n多的苹果产品,苹果帮主乔布斯都应该值得我们纪念. "为什么说乔布斯改变了世界?没有 iPhone,就不会有 ...

  4. 一战封神!“中国飞人”苏炳添跑出9秒83到底有多牛?

    公众号后台回复"图书",了解更多号主新书内容作者:CDA数据分析师来源:CDA数据分析师 [导读] 在刚刚结束的东京奥运会百米飞人大战上,中国选手苏炳添在半决赛跑出9秒83,刷新了 ...

  5. 乔布斯导演的最后一幕

    连作者也说,他仅仅是这本书的写作者,真正的作者是乔布斯."中信出版社总编辑潘岳近日分享了<史蒂夫·乔布斯传>幕后的故事.这本传记预定期已达100万册,预估最终销量将达到500万册 ...

  6. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全

    史上最牛的Linux内核学习方法论   点击下载 我的arm_linux移植笔记   点击下载 S3C2440完全开发流程   点击下载 Linux系统命令及其使用详解完整版   点击下载 Linux ...

  7. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全...

    史上最牛的Linux内核学习方法论 点击下载 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击下载 Linux主要shell命 ...

  8. 养成励志的习惯,一生励志——文指星终极励志

    语言的突破全集 卡耐基 --励志经典     点击下载 人性的优点--卡耐基名著--励志经典     点击下载 人生格言精华总集     点击下载 人生定律与原则--励志经典     点击下载 厚黑学 ...

  9. 养成励志的习惯,一生励志

    语言的突破全集 卡耐基 --励志经典     点击下载 人性的优点--卡耐基名著--励志经典     点击下载 人生格言精华总集     点击下载 人生定律与原则--励志经典     点击下载 厚黑学 ...

  10. 【转】乔布斯经典语录

    2011年8月25日消息,乔布斯辞去了苹果公司CEO的职务.10月6日,传来了他去世的消息.在此缅怀乔帮主的同时,与大家分享乔布斯在世时的经典语录.(来自于<乔布斯传>--神一样的传奇的附 ...

最新文章

  1. 序列变换(Lis变形)
  2. 【测绘程序设计】坐标正算神器V1.0(附C/C#/VB源程序)
  3. spring security:第一个程序解析
  4. 集合源码阅读:LinkedList
  5. 域名使用cname方式跳转不到新域名_七牛云图床和Markdown使用
  6. .NET网络编程学习(一)
  7. 关于NFSv4服务共享目录里的文件UID和GID显示为nobody的解决方法
  8. win2008服务器系统玩红警,如何让Win8顺利兼容红警2
  9. python白鹅类型_SCP-CN-161 翻译器
  10. 五个了解自己天赋优势的分析工具(二)盖洛普优势测评
  11. 前沿技术,目前为止功能最全最强大的PLC智能远程模块,物联网模块
  12. 钉钉如何调整组织架构_[钉钉组织架构设置]如何设置组织架构 组织架构设置的五个步骤...
  13. 2022年9月电子学会Python等级考试试卷(一级)答案解析
  14. [Xcode]自己常用的Code Snippets、Xcode插件、文件目录
  15. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) —— 编写一个基本的 Spider 爬取微博用户信息
  16. Z-score 与 Fisher-Z 的区别
  17. Cisco路由器配置OSPF
  18. SAP MM物料与客户主数据的税分类
  19. Octave 软件的安装
  20. Android引导页图片拉伸问题

热门文章

  1. 用MFC编程时在源文件里经常看到的AFX或afx是什么意思?
  2. 微信聊天记录迁移及故障修复
  3. python 经纬度计算相关
  4. python怎么取共轭_python print出共轭复数的方法详解
  5. 新手提问!求解答QAQADODB.Recordset 错误 #x27;800a0bb9#x27; 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
  6. Android系统之制作开机LOGO
  7. 当公路的规则与秩序,被昇腾AI时刻守护
  8. 基于matlab的微分例题,基于MATLAB的rlc电路模型仿真例题.doc
  9. 64位ubuntu使用gcc -m32报错
  10. centos 6 安装 net-speeder