您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>C/C++语言编程>

关于游戏服务器的架构演进历程

大小:0.2 MB 人气: 2017-09-25 需要积分:1

  游戏服务器的架构演进

  本文阅读预计需要10分钟,主要技术点来如下,感兴趣请继续:

  游戏服务器特征

  短连接游戏服务器架构

  长链接游戏服务器架构

  分区分服服务器架构

  MMOARPG服务器架构

  房间服务器架构

  1游戏服务器特征

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

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

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

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

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

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

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

  2游戏服务器架构要素

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

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

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

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

  3服务器演化进程

  卡牌等休闲游戏弱交互游戏

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

  关于游戏服务器的架构演进历程

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

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

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!