游戏服务器架构演进读后感

1.游戏服务器特征

这类软件的特点是要非常关注稳定性和性能。。这类程序如果需要多个协作来提高承载能力,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。由于多进程协同工作,也带来了开发的复杂度,这也是需要关注的问题。功能约束,是架构设计决定性因素。

2.短连接游戏服务器架构

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

3.长链接游戏服务器架构

4.分区分服服务器架构

目前多数游戏还采用分服的结构来架设服务器,多数页游还是采用这种模式。服虽然可以解决服务器扩展的瓶颈,但单台服务器在以前单线程的方式来运行,没办法充分利用服务器资源,于是又演变出了以下2种线程模型。

异步-多线程,基于每个场景(或者房间),分配一个线程。每个场景的玩家同属于一个线程。游戏的场景是固定的,不会很多,如此线程的数量可以保证不会不断增大。每个场景线程,同样采用tick轮询的方式,来定时更新该场景内的(对象状态,刷新地图,刷新NPC)数据状态。玩家如果跨场景的话,就采用投递和通知的方式,告知两个场景线程,以此更新两个场景的玩家数据。

多进程。由于单进程架构下,总会存在承载量的极限,越是复杂的游戏,其单进程承载量就越低,因此一定要突破进程的限制,才能支撑更复杂的游戏。多进程系统的其他一些好处:能够利用上多核CPU能力、更容易进行容灾处理。

5.MMOARPG服务器架构

6.房间服务器架构

房间类玩法和MMORPG有很大的不同,在于其在线广播单元的不确定性和广播数量很小。而且需要匹配一台房间服务器让少数人进入一个服务器。

这一类游戏最重要的是其“游戏大厅”的承载量,每个“游戏房间”受逻辑所限,需要维持和广播的玩家数据是有限的,但是“游戏大厅”需要维持相当高的在线用户数,所以一般来说,这种游戏还是需要做“分服”的。典型的游戏就是《英雄联盟》这一类游戏了。而“游戏大厅”里面最有挑战性的任务,就是“自动匹配”玩家进入一个“游戏房间”,这需要对所有在线玩家做搜索和过滤。

总结:

以上就是目前游戏服务器的演化过程,由于涉及内容太多,关于服务器的相关网络IO以及内存模型没有介绍,以后有机会再具体讲讲这一部分,下面就说说我的个人感受吧!对于游戏的开发我基本上算是没有接触过,虽然自己平常也会玩游戏,但是对于游戏的实际知识却知道的很少,希望自己以后有机会再做详细的学习。

代码交流 2021