游戏服务器框架
游戏服务器特征:
长期运行,要求有一定的稳定性和性能。如果需要动态扩容来提高承载能力还要考虑到维护部署的方便性。如果是手游服务器还要考虑到弱联网,保证通信交互的顺畅。
对于服务端需求主要有以下几点:
1:玩家交互数据的广播,同步
2:玩家数据存储
3:做好验证,防止外挂
4:交互的流畅性
为了满足以上需求,我们得考虑服务器的内存,cpu,带宽等因素,来制定最优的服务器开发和部署方案。
服务器演化进程
1:早期服务器架构图
优点:
简单,快速开发
缺点:
1.所有业务放在一起,系统负担大大增加.一个bug可能导致整个服务器崩溃,造成所有玩家掉线甚至丢失等严重后果。
2.开服一刹那,所有玩家全部堆积在同一个新手村.->>>>卡,客户端卡(同屏人数过多渲染/广播风暴) 服务器卡(处理大量同场景消息/广播风暴)
2: 第二代网游服务器(分区分服)
分服模型是游戏服务器中最典型,也是历久最悠久的模型。在早期服务器的承载量达到上限的时候,游戏开发者就通过架设更多的服务器来解决。这样提供了很多个游戏的“平行世界”,让游戏中的人人之间的比较,产生了更多的空间。其特征是游戏服务器是一个个单独的世界。每个服务器的帐号是独立的,每台服务器用户的状态都是不一样的,一个服就是一个世界,大家各部牵扯。后来游戏玩家呼吁要跨服打架,于是出现了跨服战,再加上随着游戏的运行,单个服务器的游戏活跃玩家越来越少,所以后期就有了服务器的合并以及迁移,慢慢的以服务器的开放、合并形成了一套成熟的运营手段。目前多数游戏还采用分服的结构来架设服务器,多数页游还是采用这种模式。
3第三代网游服务器
网关部分分离成单端的gate服务器,DB部分分离为DB服务器,把网络功能单独提取出来,让用户统一去连接一个网关服务器,再有网关服务器转发数据到后端游戏服务器。而游戏服务器之间数据交换也统一连接到网管进行交换。所有有DB交互的,都连接到DB服务器来代理处理。
上面版本的进化版
每个相同的模块分布到一台服务器处理,多组服务器集群共同组成一个游戏服务端。一般地,我们可以将一个组内的服务器简单地分成两类:场景相关的(如:行走、战斗等)以及场景不相关的(如:公会聊天、不受区域限制的贸易等)。经常可以见到的一种方案是:gate服务器、场景服务器、非场景服务器、聊天管理器、AI服务器以及数据库代理服务器。
最后小结:
现在mmo服务器框架基本延续了最后第三版本的演化版,但每个游戏的具体需求会有不同,会做一些相应的调整,但大致思路是不会差别很大。