游戏架构 游戏架构设计(9)

原文地址:https://blog.csdn.net/erlib/article/details/24302287

一.摘要

1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构
2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等。
3.网络游戏的场景管理,AI,脚本的应用等。
4.开源的网络服务器引擎
5.参考书籍,博客

二.关键词

网络协议 网络IO 消息 广播 同步 CS TCP/UDP IP 集群 负载均衡 分布式
网关服务器 GateServer 心跳 多线程/线程池 开源网络通讯框架/模型
阻塞/非阻塞/同步/异步 Proactor/Reactor/Actor Select/Poll/Epoll/Iocp/Kqueue
游戏开发中的设计模式/数据结构
短连接和长连接 游戏安全 缓存 消息编码协议 脚本语言
Socket Nagle/粘包/截断/TCP_NODELAY AI/场景 分线/分地图 开源MMORPG服务器

三.正文框架结构

1. 早期的MMORPG服务器结构

Client<->GameServer<->DB 所有业务,数据集中处理


1.jpg
优点:
    简单,快速开发
缺点:
    1.所有业务放在一起,系统负担大大增加.一个bug可能导致整个服务器崩溃,
造成所有玩家掉线甚至丢失等严重后果。

    2.开服一刹那,所有玩家全部堆积在同一个新手村.->>>>卡,
客户端卡(同屏人数过多渲染/广播风暴) 服务器卡(处理大量同场景消息/广播风暴)

2. 中期-用户分离集群式

                GameServe1
Client            |                    DB
                GameServer2

玩家不断增多->分线->程序自动或玩家手动选择进入

缺点:
    运营到后期,随着每条线玩家的减少, 互动大大减少。

3. 中后期 数据分离集群式

2.jpg

按地图划分服务器,当前主流
新手村问题:《天龙八部》提出了较好的解决方案,建立多个平行的新手村地图,一主多副,开服时尽可能多的同时容纳新用户的涌入,高等级玩家从其它地图回新手村只能到达主新手村。

4. 当前主流的网络游戏架构

3.jpg

注:在GateServer和CenterServer之间是有一条TCP连接的。而GameServer和LogServer之间的连接可以是UDP连接。这是有一个大概的图,很多地方需要细化。
GateServer:网关服务器,AgentServer、ProxyServer

优点:
    (1)作为网络通信的中转站,负责维护将内网和外网隔离开,
使外部无法直接访问内部服务器,保障内网服务器的安全,
一定程度上较少外挂的攻击。

    (2)网关服务器负责解析数据包、加解密、超时处理和一定逻辑处理,
这样可以提前过滤掉错误包和非法数据包。

    (3)客户端程序只需建立与网关服务器的连接即可进入游戏,
无需与其它游戏服务器同时建立多条连接,节省了客户端和服务器程序的网络资源开销。

    (4)在玩家跳服务器时,不需要断开与网关服务器的连接,
玩家数据在不同游戏服务器间的切换是内网切换,切换工作瞬问完成,
玩家几乎察觉不到,这保证了游戏的流畅性和良好的用户体验。
缺点:
    1.网关服务器成为高负载情况下的通讯瓶颈问题

    2由于网关的单节点故障导致整组服务器无法对外提供服务的问题
解决:
    1)  多网关技术。顾名思义,“多网关” 就是同时存在多个网关服务器:
比如一组服务器可以配置三台GameGme。当负载较大时,
可以通过增加网关服务器来增加网关的总体通讯流量,
当一台网关服务器宕机时,它只会影响连接到本服务器的客户端,
其它客户端不会受到任何影响。

    2)  DCServer:  数据中心服务器。主要的功能是缓存玩家角色数据,
保证角色数据能快速的读取和保存

    3)  CenterServer:  全局服务器/中心服务器,也叫WorldServer. 
主要负责维持GameServer之间数据的转发和数据广播。
另外一些游戏系统也可能会放到Center上处理,比如好友系统,公会系统。
改进:
    将网关服务器细化为LogingateServer和多个GameGateServer.

5. 按业务分离式集群

由于网络游戏存在很多的业务,如聊天,战斗,行走,NPC等,可以将某些业务分到单独的服务器上。这样每个服务器的程序则会精简很多。而且一些大流量业务的分离,可以有效的提高游戏服务器人数上限。


4.jpg
优点:
      1.业务的分离使得每种服务器的程序变的简单,这样可以降低出错的几率。
即使出错,也不至于影响到每一个整个游戏的进行,
而且通过快速启动另一台备用服务器替换出错的服务器。

     2.业务的分离使得流量得到了分散,进而相应速度回得到提升 。

     3.大部分业务都分离了成了单独的服务器,所以可以动态的添加,
从而提高人数上限。
改进:
    甚至可以将登陆服务器细化拆分建角色,选择角色服务器
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,002评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,777评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,341评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,085评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,110评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,868评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,528评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,422评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,938评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,067评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,199评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,877评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,540评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,079评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,192评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,514评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,190评论 2 357

推荐阅读更多精彩内容