一种高性能大型多人在线角色扮演游戏服务器架构设计

一种高性能大型多人在线角色扮演游戏服务器架构设计摘要:大型多人在线角色扮演游戏(Massively Multiplayer Online Role Playing Game,以下简称MMORPG)一般采用客户端/服务器结构,服务器架构设计是成功开发一款MMORPG的关键,本文对高性能MMORPG服务器架构设计进行了深入地研究。一个MMORPG一般会开设多个区供玩家进行游戏,一个区会包括一组服务器,本文设计出的服务器组架构包括LoginServer、WorldServer、WorldGameServer、GameServer和DBServer等服务器。

关键词:MMORPG;服务器;架构;高性能

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 09-0000-02

一、前言

MMORPG的结构分为客户端与服务器端,客户端展现游戏实时画面,并且将玩家在客户端逻辑请求的操作发往服务器端,服务器端负责响应所有客户端的连接请求,处理客户段的逻辑请求,并将结果返回给客户端以使游戏在客户端继续进行。客户端与服务器通过网络数据包交互和完成每一个游戏逻辑,游戏绝大部分逻辑都是在服务器端负责处理,为了保证海量用户同时进行游戏,并且体验良好,优秀服务器架构起到了非常关键的作用。

二、服务器架构设计

(一)服务器架构不同分类

服务器组架构有多种,其中使用最广泛的有两种:一种是带路由服务器的服务器架构;另一种是不带路由服务器的服务器架构,两种方案各有利弊。本文设计出了另一种新型的设计方案:一个世界服务器作为整个服务器组的中心,一切请求通过中心服务器转发,呈星形结构。每个其他服务器只负责处理自己的逻辑。这种方案做到了每个服务器各司其职,职责清晰,并且根据游戏玩家数量的改变来动态的增减服务器的数量。

(二)服务器架构设计

根据MMORPG规模大小和设计不同,每组服务器中服务器种类和数量也是不同的。本文中的设计是星形结构服务器组架构,如图1所示。

图1 星形服务器架构设计

星形服务器架构设计虽然增加了服务器设计的难度,并且服务器的数量也相应的增加了,但却带来了其它架构所不具有的优点,具体优点为:

1.WorldServer所有其他服务器的管理者,可以对所有其他服务器进行调度,使得整体结构非常清晰,各个服务器各司其职,也利于开发过程中的工作划分。

2.WorldServer只负责调度、数据包数据解析、数据加解密、数据超时处理,不做任何逻辑处理,这样主要是可以过滤掉错误和非法的数据包,提高其他服务器的处理数据的效率。

3.GameServer可以随时增加,WorldGameServer和GameServer中的复杂逻辑可以随时提取出来做成单独服务器,有效提高效率和扩展性。

星形架构虽然有上面的三个优点,但是还是需注意两个可能导致负面效果的情况:一个是如何避免中心管理者身份WorldServer的高负载瓶颈问题,第二个是由于不同的问题导致的WorldServer出现故障,导致整组服务器瘫痪,无法对外提供服务问题。上述两个问题可以采用Nginx负载均衡技术加以解决。Nginx负载均衡技术就是同时存在多个WorldServer,比如一组服务器可以配置两台或更多WorldServer。通过对Nginx进行简单的配置,就可以达到实时的同步两台或多台WorldServer,当某一台负载较大或者宕机时,自动切换到正常运行的WorldServer,从而保证所有客户端都不会掉线。从图1的服务器架构图可以看出,一组服务器包括LoginServer、WorldServer、WorldGameServer、DBServer和多个GameServer等多种服务器。一组服务器一般至少配置两台WorldServer和一台Nginx服务器,因为对于MMORPG运营来说稳定性是至关重要的。在游戏运营中所面临的潜在的风险是服务器宕机等突发事件。需配置两台WorldServer和一台Nginx服务器可以组成一个负载均衡,可以有效的防治服务器宕机带来的风险。下面是对各种服务器主要功能和服务器之间数据交互的详细解释。

(1)LoginServer

LoginServer主要功能是对玩家账号是否合法进行校验,只有通过校验的账号才能成功登录游戏界面,运行游戏程序。从架构图可以看出,LoginServer会连接WorldServer和AccoutDB。AccoutDB玩家账号信息数据库,数据库中存放玩家的具体信息,比如账号和密码等。玩家登录游戏的基本流程是,客户端填写好账号和密码,然后将账号和密码发送到LoginServer服务器验证账号和密码,如果验证通过,LoginServer服务器将发送请

高性能游戏服务器架构设计,一种高性能大型多人在线角色扮演游戏服务器架构设计.doc...相关推荐

  1. Silverlight开发MMORPG大型多人在线角色扮演游戏(团队项目)

    MMORPG,是英文"Massive Multiplayer Online Role Playing Game"的缩写,意为"大型多人在线角色扮演游戏".是电脑 ...

  2. 基于控制台的多人在线角色扮演游戏(类似MUD)项目

    项目名称:DragonFighter3 项目时间:2014/4/xx 编译环境:VS2008 DragonFighter3 是一款基于windows控制台的多人在线角色扮演游戏,是我在学习网络编程时候 ...

  3. 3D多人在线角色扮演游戏《木牛流马》概念案(一门课的半期作业)

    木牛流马 3D多人在线角色扮演游戏(MMORPG) All work Copyright ©2004 by  杨愚 二○○四年九月 基本概念 玩家通过将各种"机体部件"组装成一架一 ...

  4. 大型多人在线角色扮演类网络游戏角色战斗系统的设计与实现

    http://www.doc88.com/p-737472184267.html

  5. C#服务端的微信小游戏——多人在线角色扮演(六)

    C#服务端的微信小游戏--多人在线角色扮演(六) 地图上来了只小狗 优化代码 用内容清单来实现地图的刷新,根据开发需求的细化来优化代码结构. --茂叔 地图上来了只小狗 上一篇里,我们成功让游戏世界有 ...

  6. C#服务端的微信小游戏——多人在线角色扮演(一)

    C#服务端的微信小游戏--多人在线角色扮演(一) 前言 平台选择 前端 后端 开发语言 准备工作 开发目标 软件开发重在思路,其他都可以看文档的-- --茂叔 前言 一个人,从0开始,开发一个打怪练级 ...

  7. C#服务端的微信小游戏——多人在线角色扮演(十一)

    C#服务端的微信小游戏--多人在线角色扮演(十一) 账号 角色生成 角色名字生成 账号是现实世界对用户的描述,而角色则是游戏世界当中用户的体现. --茂叔 账号 上一篇,我们利用微信的api完成了用户 ...

  8. C#服务端的微信小游戏——多人在线角色扮演(十四)

    C#服务端的微信小游戏--多人在线角色扮演(十四) 服务器端 客户端 名字不是自己定义的,但人生却可以 --茂叔 为了实现让用户选择角色的姓名和性别,我们需要这样一个界面: 服务器端 要实现这个功能, ...

  9. 《Android 游戏开发大全(第二版)》——6.4节角色扮演游戏

    本节书摘来自异步社区<Android 游戏开发大全(第二版)>一书中的第6章,第6.4节角色扮演游戏,作者吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区"异步社区& ...

最新文章

  1. plasma桌面设置好的面板消失了_Ubuntu Studio 将用 KDE Plasma 桌面环境替换 Xfce | Linux 中国...
  2. 开发日记-20190625 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)
  3. Java进阶高级程序员必备:深入浅出springboot+深入Java虚拟机
  4. boost::fusion::find_if用法的测试程序
  5. 白宫任命退伍将军担任首位联邦首席信息安全官
  6. 一图尽览华为云数据库全套安全解决方案
  7. 数据结构关键路径_2021年厦门大学考研丨能源学院845数据结构参考书目推荐
  8. java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法
  9. 看看一个朋友写的代码,大家发表发表意见,比较简单的代码
  10. java定义时钟类clock_Java 编程题,定义一个时钟类(Clock)
  11. http上传文件原理
  12. 新中大银色快车服务器重装,新中大简约型ERP软件银色快车SEV9.0版安装说明.doc...
  13. oracle 结果百分比,Oracle 百分比
  14. 域名虚拟主机_域名和虚拟主机之间有什么区别(解释)
  15. 淘宝中的UV,PV,IPV
  16. 解除Windows 10休眠时自动唤醒设置
  17. 恋与抽卡模拟器网页_《公主连结》抽卡模拟器网站是什么 抽卡模拟器地址介绍...
  18. DAO:可及性与问责制、分权与效率 、开放与控制的三大权衡
  19. 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 42页论文及代码
  20. CSS .class .class与.class.class区别

热门文章

  1. 在pycharm2021.2中学习opencv图像处理,基于python3.9.7、pycharm完成配置
  2. SPA,什么是单页面应用,为什么要使用单页面应用,单页面应用有啥好处
  3. 中国可以生产计算机cpu吗,国内能不能生产台式电脑使用的CPU?答案当然是肯定的,可以生产...
  4. 狼人杀游戏法官主持软件和会员管理积分系统开发
  5. 【论文写作】用对模板,一周码完一篇SCI初稿!
  6. 3-2加法器、4-2压缩器、5-2压缩器
  7. Accessibility Verification Test--无障碍测试简介
  8. 1013 1014
  9. 如何把项目改成微服务项目_微服务拆分那点事
  10. [转]帐号登录事件(事件编号与描述)