APP下载

一种新型MMOG游戏服务器架构设计方案

2016-06-08马利麒

现代计算机 2016年13期
关键词:大区区分客户端

马利麒

(西南交通大学电气工程学院,成都 610031)



一种新型MMOG游戏服务器架构设计方案

马利麒

(西南交通大学电气工程学院,成都610031)

摘要:

关键词:

0 引言

在网络游戏中,服务器是网络游戏的大脑和心脏,是网游中最重要的部分,一方面,服务器和客户端保持连接,负责大量玩家的同时接入。另一方面,服务器负责游戏的运行,包括游戏的同步和广播,同时,要承担起避免游戏玩家作弊的责任[1]。当游戏的受欢迎程度很高的时候,游戏玩家数量会激增,这时就会有很高的并发连接数,从而产生大量的数据运算和数据吞吐量,此时服务器的性能决定了玩家的用户体验,为了提供良好的服务品质,网络游戏的服务端的设计显得尤为重要,进行网络游戏服务端架构的研究,对于游戏产业的蓬勃发展和现行游戏的开发都有积极的意义[2]。

1 设计原则

在网络游戏中,服务器端负责响应客户端的连接请求和游戏内的逻辑处理,伴随着网游的玩家越来越多,服务器端所承受的压力也越来越大,面对海量的用户,既要保证流畅的运行环境,又要尽最大可能地提供优质的用户体验,就需要依靠一个优秀的服务器架构去支撑,一般来说,服务器架构的设计原则主要包括以下[3]:

●安全。要充分考虑系统更新、异常对系统的冲击,保证玩家数据的安全可靠性。

●稳定。对于一款MMOG游戏来说,稳定性是最基本也是最重要的指标。要求系统对于资源的消耗可控,有过载控制,能够长期24小时不间断运行。

●可扩展。游戏的变化日新月异,内容也会随版本的更新周期性迭代,这就要求系统容纳能力的可扩展与系统功能的可扩展。

●低耦合。各个主要功能均抽象为一个模块,并且不依赖于具体实现,分别由独立的服务器运行,尽量做到低耦合,以应对底层实现的变化。

●简单。每一个模块尽可能简单、功能单一,能让有一定技术经验和行业背景的人士非常容易理解,不采用过于复杂的设计。

●性能。MMOG很多时候受到了CPU、网络流量的限制,因此在重点函数(如:战斗、移动、广播)的消息处理中优化CPU和流量消耗,避免架构中的单点瓶颈。

2 传统游戏服务器架构

若以游戏分区方式来划分服务器的组织架构,目前可以大体划分为两大类[4]:一种是分区分服的方式,平行分成多个大区,单个大区的承载量是有上限限制的,各个大区之间完全独立,不同大区之间的玩家不可见,也不可进行交互;另一种是全区全服的方式,即一个大区承载所有的玩家,没有承载上限限制,玩家之间可以进行各种交互,好处就是单个大区玩家数量很多,不会出现鬼服的情况。之所以要做这样的架构区分,归纳起来只要有以下几点:

(1)游戏类型的不同,导致需要在DB层做区分:全区全服只有一个DB,而分区分服的每个服都有独立的DB;

(2)游戏类型的不同,导致数据互通性不同:逻辑服务器网页游戏必须要做区分,例如各个平台需要独立运营,独立结算,开服活动只能针对制定服等。

(3)单服所能承载的玩家数量级不同,导致架构上调整:全区全服所有玩家在一个服,分区分服分摊在各个不同服,单服玩家数量不在一个级别,导致架构上的考量不同。

这样架构上的区分,就会导致实际情况中后台服务器所面临的压力也有所区别,主要表现在如下三个方面:

(1)DB层面。分区分服DB承载单服压力,一般游戏单服PCU(同时在线玩家数)是千级,甚至是万级,DB读写压力小,采用传统的MySQL基本可以满足需求;而全区全服架构的DB承载所有的玩家,PCU可以达到百万级别,读写压力非常大,单一的MySQL不能满足读写压力,一般需要专门针对项目去做读写并发高的DB组件。

(2)平滑扩容层面。全区全服的扩容是针对整个游戏后台,在外网不停机扩容中,需要考虑扩容对整个后台服务器的影响,而分区分服因为面临扩容的机会比较少,有开服情况,也是独立的新建整个服,对其他服务器基本没有影响。

(3)容灾层面。全区全服在某个服务器进程出现问题时,该模块的压力可能会偏向同等功能的其他进程,需要处理血崩情况,避免影响全服。而分区分服因为天然的单服之间的个理性,在这一层面上压力小很多。

3 新型游戏服务器架构设计

上述两种传统服务器架构方式各有利弊,本文所设计的一种新型的服务器架构是对上述两种架构融合改进,可以同时享有两种架构的优点,即逻辑上还是划分成多个大区,在表现上属于分区分服的架构方式,但是各个大区之间又采用全区全服的架构方式,使不同大区的玩家可以相互可见并且进行各种交互,以下称之为全区分服的服务器架构。

3.1设计思想

全区分服式的服务器架构设计思想主要遵循以下四个方面:

(1)逻辑上还是要分区的,逻辑层面各个区间是相互独立的,在没有跨服玩法的需求的时候,玩家只能在自己所在的区游戏,排行榜等展示性内容也只能在本区内进行,所以前端游戏服务器、排行榜服务器等逻辑服务器还是需要隔离开来,玩家刚登录的时候是只能登录自己所在的区,如果要登录其他区,是需要重新创建角色的。

(2)不同区玩家之间可以进行交互,进行一些跨服的玩法,不同区间玩家数据可见,所以要求中间路由层以及后面存储层要统一进行管理,不能隔离开来,以保证前端不同区的游戏服务器可以访问任何一个区的玩家的数据。

(3)在路由层面和存储层面可以直接根据玩家的UID(账号ID)来进行统一管理,既能够实现需求,有能够满足日后扩展性需求。

(4)要求目录服务器维护所有区的信息,所以,目录服务器也是统一管理的,而不是每个区都有一个目录服务器。这样一方面可以动态扩区,即不需要客户端升级就可以扩新的区;另一方面也能够满足功能需求,客户端不用再重新登录一次区内的目录服务器,减少与服务器交互次数。

3.2逻辑架构

从部署层次来看,服务器逻辑整体分为五层:

●客户接入层:进行对客户端连接的收敛与转发,主要由Connectsvr负责。

●游戏逻辑层:进行业务逻辑运算,主要由Gamesvr负责

●消息中转层:负责中转内部消息,使通信各方的物理部署位置透明化。

●数据存储层:提供数据缓存和持久化功能,包括Uidsvr、Dbsvr和MySQL等。

●服务支持层:提供各种服务器支持,包括与开放平台、数据平台等外部组件。

为了更好地介绍全区分服的逻辑架构,本文对架构图进行了精简,对于部分服务器是多台部署的则只精简为一台,方便理解。全区分服式的逻辑架构如图1所示。

从架构图中我们可以清晰的看到:

(1)客户端都是通过连接到Connectsvr与服务器进行通信的,Connectsvr负责对多个客户端的连接进行收敛并转发。

(2)Dirsvr和各个小区的Gamesvr互通,拥有各个小区的实时容量数据,玩家首先登录到dirsvr,请求拉取当前小区列表以及各个小区实时状态,客户端直接选择一个小区,并根据负载选择一个相对压力较小的Gamesvr直接登录,并且客户端本地缓存所登录的Gamesvr,在此之后与服务器的交互都采取直连这台Gamesvr,提高效率。

(3)每个小区就是独立的集合,每个Gamesvr及其附属进程独占一台机器,其他小区进程:Zoneproxysvr(小区路由服务器),Guildsvr(工会服务器),Toplistsvr(排行榜服务器),Bosssvr(世界boss服务器)等小区级的功能服务器一同部署在一台机器,如果某小区需要部署N个Gamesvr时,实际这个集合的机器数就是N+1。

(4)玩家实际角色数据是缓存在Dbsvr上的,并通过Dbsvr回写落地到DB,Dbsvr是属于大区共享的,部署多台Dbsvr时按照UID(玩家帐户ID)哈希到对应机器上的,以此实现了玩家数据的大区级互通。

(5)进程直接都是通过Proxysvr路由访问的,小区级的逻辑则均通过Zoneproxysvr进行转发,涉及到大区之间的数据交互则连接到Proxysvr进行转发,各个进程所在机器变动或者新增都只需要更新Proxysvr上配置即可,从而实现对应路由的转发。

3.3优缺点分析

本文所设计的一种新型的全区分服的服务器架构如上所述,优点主要集中在以下几个方面:

(1)拥有像全区全服架构的优势,后端全区玩家得到打通,丰富了游戏内的社交玩法,获取好友数据变得简单和方便许多;

(2)存储更加集中,整个大区存在同一块DB中,有利于进行全区的缩容和扩容;

(3)同时保留了分区分服架构的特性,能够满足游戏对于商业化上面的需求,使游戏的玩法更加灵活,合服变得更加简单。

图1 系统框架与流程全区分服式服务器逻辑架构图

参考文献:

[1]中国网络游戏行业报告. GameRes游戏开发论坛,http://www.gameres.com

[2]网络游戏.百度百科.

[3]蒋臻甄.网络游戏服务器集群的设计和实现.华东师范大学,2006.

[4]netprg.网游服务器通信架构的设计.程序员:游戏创造,2005.

[5]Gao Huang. Modeling System Performance in MMORPG. Global Telecommunications Conference Workshops,2004:512-518.

[6]Dante Treglia. Game Program Gems III[M],2003(7).

[7]马亚花.一种高性能的大型多人在线角色扮演游戏服务器架构设计[J].计算机光盘软件与应用,2012(09).

[8]贺冯政.网络游戏服务器通信架构及关键技术研究[D].成都:电子科技大学,2008.

[9]樊建国.网络游戏服务器通信架构与结构设计[J].中国新技术新产品,2009(21).

A New MMOG Game Server Architecture Design

MA Li-qi
(College of Electrical Engineer,Southwest Jiaotong University,Chengdu 610031)

Abstract:

Keywords:

MMOG游戏在项目开始阶段对于后台游戏逻辑不能够完全给出需求,需要在开发过程中不断地修正。因此对于后台服务器开发比较合适采用原型的开发方式,即先给出服务器框架,然后在上面不断地叠加或者变更功能。根据以往的开发经验,结合传统服务器架构的优点,规避其暴露出的缺点,设计出一种新型的服务器架构,并描述出设计思想、基本架构和工作流程,对游戏服务器架构的基本问题有着较好的工程参考价值。

MMOG;服务器架构;网络游戏

文章编号:1007-1423(2016)13-0047-04

DOI:10.3969/j.issn.1007-1423.2016.13.013

作者简介:

马利麒(1991-),男,内蒙古包头人,研究生,研究方向为计算机网络、服务器技术

收稿日期:2016-03-15修稿日期:2016-04-18

MMOG game at the beginning of the project stage for the background game logic is not able to fully give the needs of the development process,the need to constantly revise. Therefore,for the development of the background server is more suitable for the development of the prototype,that is,the first server framework,and then constantly superimposed on the above or change the function. According to the past development experience,combined with the advantages of the traditional server architecture,exposes the shortcomings to avoid design a new server architecture,and describes the design idea,basic structure and the work flow,the basic problem of game server architecture has a good reference value to the project.

MMOG;Server Architecture;Network Game

猜你喜欢

大区区分客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
灵活区分 正确化简
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
涪陵:工业大区打开绿色新场景
渝北:建设产业链上的经济大区
怎么区分天空中的“彩虹”
区分“我”和“找”
怎祥区分天空中的“彩虹”(一)
新华社推出新版客户端 打造移动互联新闻旗舰