分布式游戏服务器技术调研(MMO)

分布式游戏服务器技术调研(MMO)

一种经典的分布式游戏服务器

整体
  • 网关服务器(全局网关)-Gate
    • 用于为客户端提供统一的连接入口
    • 为用户分配登陆验证服务器和连接服务器
  • 登陆验证服务器-LoginAuth
    • 用户的注册和验证
  • 连接服务器(游戏网关)-Link
    • 维持客户端与服务端的长连接
    • 转发客户端和服务端之间的消息
  • 场景服务器
    • 处理游戏场景中的游戏逻辑
细节
  • 用户登陆时,会首先连接网关(http或者socket均可),网关通过rpc或者http请求验证服务器完成验证;验证通过后获得由网关分配的连接服务器信息,之后客户端会断开与网关服务器的连接,连接返回的连接服务器
  • 一张游戏地图与一台独立的场景服务器对应,场景不能进行分割.场景服务器负责维护场景中所有实体并驱动场景逻辑运转.主要逻辑包括实体管理、消息服务、ai服务、aoi服务.可通过加入新的游戏场景的方法来分散用户且一些和场景相关的服务器可通过独立运行的方式进行水平扩展.另外对于跨场景的操作则是通过一个全局服务器来进行处理
  • 聊天服务可与场景服务分离,通过一个独立的服务器进行
  • 寻路和副本组队均可独立出服务器进行
  • 内部服务器之间可通过rpc进行调用
图示
  • mda-1.png
  • mda-2.png
  • mda-3.png
引用
思考
  • 按照此种方式设计,如果要实现百万人同时在线,则还是需要分服,因为此种设计场景是最小的单位;根据压测算出一组服务器承载的压力上限,然后根据导入服务器人数进行服务器规划部署
  • Gate、LoinAuth、Link等均可进行水平扩展
  • 场景逻辑中的一些服务如寻路、副本等均可进行水平扩展

无缝大世界的游戏服务器

基本思想
  • 整个服务器主体分为三层,NODE专注场景,OBJ专注玩家对象,GATE专注网络。这样的模型在无缝场景服务器中得到广泛的应用
  • mda-4.png
  • 每台 Node服务器用来管理一块地图区域,由 NodeMaster(NM)来为他们提供总体管理
  • 玩家从一块区域走向另外一块区域
    • mda-5.png
  • 将地图按照标准尺寸均匀切割成静态的网格,每个格子由一个具体的Node负责,但是根据负载情况,能够实时的迁移到其他 Node上。在迁移分为三个阶段:准备,切换,完成。三个状态由Node Master负责维护
  • mda-6.png
类似引擎实现
  • bigworld、kbengine
    • mda-7.png
    • loginapp:登录验证、注册、接入口;与客户端的第一个连接点;dns负载均衡
    • baseapp:与客户端通讯的固定点(proxy/gate);与cellapp通讯的中介;用来处理无空间属性的逻辑
    • baseapp_mgr:管理所有baseapp及负载等
    • cellapp:空间数据的处理
    • cellapp_mgr:管理所有cellapp及负载等
    • dbmrg:管理数据存储等
    • daemon:监视服务器进程等
引用
思考
  • 比较广泛的解决方案,但自实现难度较大,不建议使用
  • 目前除了bigworld引擎,网易手游内部根据其架构实现了一个叫mobile_server的简化版,有'乱斗西游'等成功产品

其他方案参考

NoahGameFrame
  • Server Architecture
    • mda-8.png
  • 优缺点
    • 无单点
    • 结构较复杂
pomelo
  • LordOfPomelo
    • 是一个基于Pomelo框架开发的分布式MMORPG游戏Demo
    • mda-9.png
  • 优缺点
    • 采取了大量web服务器的思想,使用zk使一些全局单点做了高可用
    • 使用node.js,小众
引用
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容