游戏服务器的设计是一项颇有挑战性的工作,游戏服务器的发展也由以前的单服结构转变为多服机构,甚至出现了bigworld引擎的分布式解决方案,最近了解到Unreal的服务器解决方案atlas也是基于集群的方式。

负载均衡是一个很复杂的课题,这里暂不谈bigworld和atlas的这类服务器的设计,更多的是基于功能和场景划分服务器结构。

首先说一下思路,服务器划分基于以下原则:
1:分离游戏中占用系统资源(cpu,内存,IO等)较多的功能,独立成服务器
2:在同一服务器架构下的不同游戏,应尽可能的复用某些服务器(进程级别的复用)
3:以多线程并发的编程方式适应多核处理器。
4:宁可在服务器之间多复制数据,也要保持清晰的数据流向
5:主要按照场景划分进程,若需按功能划分,必须保持整个逻辑足够的简单,并满足以上1,2点

服务器结构图:

各个服务器的简要说明:

Gateway:应用网关,主要用于保持和client的连接,该服务器需要2种IO,对client采用高并发连接,低吞吐量的网络模型,如IOCP等,对服务器采用高吞吐量连接,如阻塞或异步IO。

网关主要有以下用途:
1:分担了网络IO资源
2:同时,也分担了网络消息包的加解密,压缩解压等cpu密集的操作。
3:隔离了client和内部服务器组,对client来说,它只需要知道网关的相关信息即可(ip和port)。
4:client由于一直和网关保持常连接,所以切换场景服务器等操作对client来说是透明的。
5:维护玩家登录状态

World Server 是一个控制中心,它负责把各种计算资源分布到各个服务器
它具有以下职责:
1:管理和维护多个Scene Server
2:管理和维护多个功能服务器,主要是同步数据到功能服务器
3:复杂转发其他服务器和Gateway之间的数据
4:实现其他需要跨场景的功能,如组队,聊天,帮派等

Phys Server 主要用于玩家移动,碰撞等检测
所有玩家的移动类操作都在该服务器上做检查,所以该服务器本身具备所有地图的地形等相关信息。具体检查过程是这样的:首先,Worldserver收到一个移动信息,WorldServer收到后向Phys Server请求检查,Phys Server检查成功后再返回给world Server,然后world server传递给相应的Scene Server.

Scene Server 场景服务器,按场景划分,每个服务器负责的场景应该是可以配置的。理想情况下是可以动态调节的。

ItemMgr Server 物品管理服务器,负责所有物品的生产过程。在该服务器上存储一个物品掉落数据库,服务器初始化的时候载入到内存。任何需要产生物品的服务器均与该服务器直接通信

AIServer 又一个功能服务器,负责管理所有NPC的AI。AI服务器通常有2个输入,一个是Scene Server发送过来的玩家相关操作信息,另一个时钟Timer驱动,在这个设计中,对其他服务器来说,AIServer就是一个拥有很多个NPC的客户端。AIserver需要同步所有与AI相关的数据,包括很多玩家数据。由于AIServer的Timer驱动特性,可在很大程度上使用TBB程序库来发挥多核的性能。

==========================================================================

写的不错..
不过有几点值得商榷:
1.Phys Server 服务器的分离,这个会使逻辑变的复杂很多.比如技能的可见性判断等就会异步过程.
2.ItemMgr Server 这个觉得没必要,DB保持的负荷可以用专门的DB服务器来负责.
3.AIServer一般来说,都是服务器CPU负荷的大头,分离的想法不错,我们就是这么做的.效果很好.不过全定时器响应也是有效率和 响应速度的瓶颈.部分采用事件响应,会使游戏表现好很多.

最后一点,服务器除了通讯底层外,逻辑层尽量别用多线程.
合理分布式的多进程设计即可解决问题.

游戏服务器的架构设计(一点参考,实际价值似乎不大……)相关推荐

  1. [转]高并发高流量网站架构设计(参考)

    高并发高流量网站架构设计(参考) 2009-11-24 16:19:58 来自: sharp(follow my heart) 目 录 1引言9 1.1互联网的发展9 1.2互联网网站建设的新趋势9 ...

  2. 网游服务器通信架构设计

    随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个领域,使得市场中网游开发技术相关的需求量迅猛增长.目前,网游行业比较紧缺的是具有较深技术功底的"专家型"开发者, ...

  3. 一文告诉你游戏服务器的架构到底是什么样,各服务器的职责是什么

    目录 1.服务器架构演变的最主要的原因是 2.典型的服务器架构介绍 3.流行的服务器介绍 4.关于服务器架构分布式的看法 5.总结 今天写一下游戏服务器的架构,主要还是还是分析下服务器架构的原理,以及 ...

  4. 分布式游戏服务器通用架构的设计

    对于游戏服务器架构,不同项目除了游戏玩法.匹配规则大不相同外,其余部分如日志系统.TCP 连接管理,玩家数据存储,数据库连接与访问等大同小异.游戏服务器架构中高并发.可扩展是主要的设计点.本 Chat ...

  5. 游戏服务器的架构演进、多进程架构通信

    系列文章目录 文章目录 系列文章目录 前言 一.游戏服务器特征 二.游戏服务器架构要素 三.服务器演化进程 1.卡牌等休闲游戏弱交互游戏 2.长链接游戏服务器 1.第一代网游服务器(单线程无阻塞) 2 ...

  6. QQ游戏服务器集群设计

    QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不 是QQ的对手,因为QQ除了这100万的游戏在线人数外, ...

  7. 《游戏服务器的架构演进》阅读笔记

    游戏服务器特征 游戏服务器端,是一个会长期运行的程序,并且它还要服务于多个不定时,不定点的网络请求.所以这类软件的特点是要非常关注稳定性和性能.这类程序如果需要多个协作来提高承载能力,则还要关注部署和 ...

  8. 服务器虚拟化架构设计,服务器虚拟化与数据中心I/O网络架构设计

    这是关于网络架构设计两部分系列中的第一篇.想了解关于在网络架构中整合I/O虚拟化方面的知识,请点击第二篇:如何将I/O虚拟化整合到网络体系架构中. 服务器虚拟化对于数据中心I/O网络架构的需求非常强烈 ...

  9. 游戏服务器的架构演进

    本文阅读预计需要10分钟,主要技术点来如下,感兴趣请继续: 游戏服务器特征 短连接游戏服务器架构 长链接游戏服务器架构 分区分服服务器架构 MMOARPG服务器架构 房间服务器架构 一.游戏服务器特征 ...

最新文章

  1. hibernate自动添加永真1=1,导致Druid sql防火墙报错的问题
  2. 学会python能找工作吗-Python学到什么程度才可以去找工作?掌握这4点足够了!...
  3. Kafka(1)-概述
  4. three.js之性能监视器
  5. 【渝粤教育】国家开放大学2018年秋季 0033-21T工程数学 参考试题
  6. 【优化算法】闪电连接过程优化算法(LAPO)【含Matlab源码 1444期】
  7. 如何用IDEA打包jar包
  8. Scrapy框架-阳光政务平台爬虫(二)
  9. java服务cpu突然飙升排查
  10. 使用Matlab软件进行逐像元Hurst指数分析
  11. 虚拟地址与虚拟内存的理解
  12. 浪潮计算机密码,计算机BIOS通用密码大全
  13. 详述查看 MySQL 数据文件存储位置的方法
  14. 大数据与人工智能催生智能时代
  15. 2018年结婚大数据来了:深圳离婚率高居第三,原因竟然是……
  16. 《计算机的硬件系统》教案,计算机硬件系统的组成教案
  17. 14_python笔记-正则表达式
  18. 眼睛小被误判“开车睡觉”?网友:这波不怪小鹏,真的
  19. w7系统计算机e盘无法打开,win7系统拒绝访问磁盘该的解决方法?
  20. 如何使用svn导出项目

热门文章

  1. 2108. 找出数组中的第一个回文字符串
  2. 使用Maven前夕(Maven项目架构管理工具、配置环境变量、阿里云镜像、本地仓库)
  3. oracle tirger_TPS65130RGETG4_驱动_中文手册(3/10)_TI - 万联芯城
  4. python strip和split_python strip() 函数和 split() 函数的详解及实例
  5. 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。 - 今日头条(www.toutiao.com)...
  6. mysql的分区技术
  7. 《强化学习》中的第10章:基于函数逼近的同轨策略控制
  8. 随手笔记:我的架构师之路--沈剑 到家集团技术委员会主席快狗打车CTO
  9. sku组合查询算法探索
  10. jax-ws 实现webservice