为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

游戏服务器系统框架分析

2017-09-19 7页 doc 1MB 20阅读

用户头像

is_977556

暂无简介

举报
游戏服务器系统框架分析游戏服务器系统框架分析 1 集群式游戏服务器架构 2 集群式服务器底层技术简述 3 游戏服务器的构架要求 1 集群式游戏服务器架构 在服务器程序被开发出来后,做到1:10000的连接比例并不困难,采用Server-Client的连接方式就可以解决问题。可是如果我们将数量级上升到 1001:10000的级别数量后,开发人员又如何应对呢,一般的解决之道会采用从客户端到登陆服务器再到逻辑服务器的方式进行解决。登陆服务器在接受完客户端的连接请求后,会将逻辑服务器直接暴露给客户端,并立刻断开连接。而之后的数据交互就和登陆服务器...
游戏服务器系统框架分析
游戏服务器系统框架分析 1 集群式游戏服务器架构 2 集群式服务器底层技术简述 3 游戏服务器的构架要求 1 集群式游戏服务器架构 在服务器程序被开发出来后,做到1:10000的连接比例并不困难,采用Server-Client的连接方式就可以解决问题。可是如果我们将数量级上升到 1001:10000的级别数量后,开发人员又如何应对呢,一般的解决之道会采用从客户端到登陆服务器再到逻辑服务器的方式进行解决。登陆服务器在接受完客户端的连接请求后,会将逻辑服务器直接暴露给客户端,并立刻断开连接。而之后的数据交互就和登陆服务器没有关系了。 我们将这种多个服务器程序并存,每个服务器程序的职能不同的服务器端开发成为“集群服务器架构”。集群服务器架构的原理图如下: 游戏服务器 客户端 游戏服务器客户端登陆服务器网关 客户端 游戏服务器 图1 典型集群服务器架构图 这样的架构是合理的,但如果仅仅沿着这样的模式进行开发而忽略了底层的细节,那么仍然不能满足系统的设计初衷。一些底层技术需要被特殊强调。 2 集群式服务器底层技术简述 需要被特殊强调的技术是:线程、线程池、内存池以及数据库连接池。下面本文一一介绍: , 线程 在服务器开发中,线程是一个非常重要的概念,尤其是现在多核服务器的发展。当然,提到了线程自然应该说到线程之间的互斥。这也是服务器开发者们在开发最初最容易出现的问题。体现在一个资源或者多个资源在多个线程中共享使用如何避免出现脏数据的问题。 , 线程池 线程池是线程的存储容器。这是一个由多个线程组成的一个队列,当有事情 我们把当前的空闲的线程丢给他,为他服务。当下一个事件发生的时发生时候, 候,我们又从池里面取一个空闲的线程丢给他,为他服务。当服务完毕,把线程丢回池中。起到反复利用的目的。 , 内存池 内存池概念的产生是为了避免服务器频繁的分配内存,而采取预先分配一定数目的对象,并将对象们放到队列中,当需要的时候,从该队列中取出,当用完,就返回池中。比如,服务器程序可能会存在10000个连接,我们预先开辟10000个Client对象,存储在list pFreeClientsList中,当需要的时候,从队列中出栈一个,当使用完毕就丢回pFreeClientsList。这种很好的起到了避免频繁开辟内存对象的目的,可以很好的提高系统的性能。 , 数据库连接池 数据库连接池,同上面一致的道理,在服务器中,数据库访问也是一个很大的瓶颈,所以同样采取上面的道理,使用连接池的概念。当然在数据库连接方面也有一个特殊的问题存在。就是数据库的连接不宜过多,所以传统的来一个处理,就开一个连接是不合理的,必须采用控制适当的连接次数。 除此之外还要涉及到的则是内存数据库。硬盘的访问速度和内存的访问速度不是一个数量级的,而且随着内存的硬件价格越来越低,内存数据库的可行性也越来越高,尤其是实时性要求高的系统,完全可以采用内存数据库和物理数据库想结合的来处理。 3 游戏服务器的构架要求 在介绍并分析完集群式服务器构架中,对于服务器端程序想要达到的目标,以及程序需要解决的问题后,对于游戏服务器的构架要求就要了个较为清楚的认 知。 大型的服务器通信软件在开发中通常会采用模块化设计的设计方式。当一个庞大的服务器系统执行任务时,往往要通过其中不同的模块进行协作完成,在这种情况下各机间的数据通信会变得异常繁琐和复杂。另外不同操作系统通信机制的不同也会影响通信软件的开发和效率,网络编程人员通常从底层进行开发,这大大增加了软件开发的难度和周期。 为了解决连接数量上问题,游戏服务器的构架采用如下的服务器架构模式: I. 支持GATE的服务器架构 在该架构下,Client和Gate Server相连,而不是直接和Game Server 相连。Gate Server主要负责转发客户端和Game Server之间的数据 包,Game Server负责处理游戏的所有逻辑。该架构如图2所示: 图2 支持Gate的服务器系统架构示意图 采用该架构,有如下几个优点: , 客户端通过Gate Setver和游戏服务器Game Servet相连, Game Server IP对外不可见,这样Game Server更安全、更 不易受攻击。 , 一个Game Server可以对应若干个Gate Server,当某个Gate Server受攻击或停机后,其他的Gate Server仍然照常运行, 和其他Gate Server相连的客户端仍然可正常进行游戏,可 支持更多的客户端连接。 , Gate Server把众多的客户端连接分散到多个Game Server 中去,而不是独自来承担,从而可支持更多的客户端连接。 , Gate Server可分担一部分安全管理工作,减轻Game Server 的压力。例如若某个客户端在一段时间内不发数据包,则把 该客户端踢下线的工作可由Gate Server来完成。 II. 软件功能模块划分 业界中,有关在设计服务器框架时,存在着一个基本原则,即框架和通信底层的具体实现需要分离,通信底层的具体实现不影响框架代码的修改。因为通信底层的具体实现有很多方式,不同操作系统平台的具体实现 差别也很大。例如仅在Windows平台下就有基于Windows消息机制的、基于事件机制的、也有基于完成端口I,O模型的实现等。采用框架与通信底层相分离的原则,也有利于利用一些成熟的开发框架,比如使用的ACE框架。这样,当采用一种新的通信技术实现通信底层时,则可以不改变服务器框架,而只需要修改通信底层。在设计服务器时按照服务器框架与通信底层相分离的原则,将服务器框架设计为多个模块。并生成相应的动态链接库以供调用。软件模块框架如图3 所示。 同步 联机管理 兴趣管理 线程模块 通信模块 Adaptive Communication Environment 操作系统平台 图3 服务器端系统的软件模块框架 在软件模块划分中,通信底层由线程模块和通信模块组成,上层则由同步、联机管理和兴趣区管理等模块组成。其中同步模块是基于保守,乐观的同步算法构建的服务器同步子系统,客户端方面则可以使用航位推测法减少服务器的发包频率。兴趣区管理模块用于相关性信息过滤,通过订购玩家感兴趣的范围,可以有效减低网络带宽消耗和服务器负载。联机管理模块主要负责数据封包中的通信以及数据报的压缩和加密,在数据包中采用加密以增加服务器系统的安全性能, 采用压缩以减少网络带宽消耗。
/
本文档为【游戏服务器系统框架分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索