《游戏服务器的架构演进(完整版)》阅读笔记
因为个人偶尔也会玩一把缓解压力,舒缓心情的王者荣耀,并且有时候也会关注下他的端游版的“兄弟”——英雄联盟,其实主要还是因为电子竞技为国人长脸的那一刻才开始关注这些。见到此篇文章,我的兴趣十足,到底这款游戏,他的架构原理是什么呢?下面是我从原文中借鉴的他的技术点如下:
-
游戏服务器特征
-
短连接游戏服务器架构
-
长链接游戏服务器架构
-
分区分服服务器架构
-
MMOARPG服务器架构
-
房间服务器架构
现根据我所了解的进行分享,第一点游戏服务器特征,游戏服务器端,是一个会长期运行的程序,并且它还要服务于多个不定时,不定点的网络请求。所以这类软件的特点是要非常关注稳定性和性能。这类程序如果需要多个协作来提高承载能力,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。由于多进程协同工作,也带来了开发的复杂度,这也是需要关注的问题。在服务器端,我们往往会关注对电脑内存和CPU的使用,以求在特定业务代码下,能尽量满足承载量和响应延迟的需求。最基本的做法就是“空间换时间”,用各种缓存的方式来以求得CPU和内存空间上的平衡。在CPU和内存之上,是另外一个约束因素:网卡。网络带宽直接限制了服务器的处理能力,所以游戏服务器架构也必定要考虑这个因素。
第二点就是游戏服务器架构要素,对于游戏服务端架构,最重要的三个部分就是,如何使用CPU、内存、网卡的设计。而内存架构:主要决定服务器如何使用内存,以最大化利用服务器端内存来提高承载量,降低服务延迟。逻辑架构:设计如何使用进程、线程、协程这些对于CPU调度的方案。选择同步、异步等不同的编程模型,以提高服务器的稳定性和承载量。可以分区分服,也可以采用世界服的方式,将相同功能模块划分到不同的服务器来处理。
最后是王者荣耀特征是在游戏开始前,服务器为每个玩家分配一个随机种子,然后同步给client,如此每个client在计算每个角色的技能时候,就能保证伤害是一致的。这也是多数帧同步游戏采用的方案。
最后还想说一句就是大家还是要少玩游戏哦!少玩有益身心健康,沉迷网络游戏只会害人害己,多出去运动运动,尤其是我们计算机专业的,千万不能做一个“死肥宅”,那样不仅找不到对象,还会让你的身体一天不如一天的哦!