百万级mmorpg游戏服务器架构

合集下载

百万用户级游戏服务器架构设计说明

百万用户级游戏服务器架构设计说明

百万用户级游戏服务器架构设计本文从最简单的游戏服务器架构开始讲起,结合主流的WOW等大型游戏服务器设计思路和mangos的一些理念,一步一步揭开网络游戏服务器的架构设计方法,对初学者尤其有帮助。

本文不但针对大型网游的设计,对中小型以及休闲棋牌类游戏服务器的设计,也有很大的启发作用。

服务器结构探讨 -- 最简单的结构所谓服务器结构,也就是如何将服务器各部分合理地安排,以实现最初的功能需求。

所以,结构本无所谓正确与错误;当然,优秀的结构更有助于系统的搭建,对系统的可扩展性及可维护性也有更大的帮助。

好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。

在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我们需要的MMOG结构。

对于一个最简单的游戏服务器来说,它只需要能够接受来自客户端的连接请求,然后处理客户端在游戏世界中的移动及交互,也即游戏逻辑处理即可。

如果我们把这两项功能集成到一个服务进程中,则最终的结构很简单:client ----- server嗯,太简单了点,这样也敢叫服务器结构?好吧,现在我们来往里面稍稍加点东西,让它看起来更像是服务器结构一些。

一般来说,我们在接入游戏服务器的时候都会要提供一个帐号和密码,验证通过后才能进入。

关于为什么要提供用户名和密码才能进入的问题我们这里不打算做过多讨论,云风曾对此也提出过类似的疑问,并给出了只用一个标识串就能进入的设想,有兴趣的可以去看看他们的讨论。

但不管是采用何种方式进入,照目前看来我们的服务器起码得提供一个帐号验证的功能。

我们把观察点先集中在一个大区内。

在大多数情况下,一个大区内都会有多组游戏服,也就是多个游戏世界可供选择。

简单点来实现,我们完全可以抛弃这个大区的概念,认为一个大区也就是放在同一个机房的多台服务器组,各服务器组间没有什么关系。

这样,我们可为每组服务器单独配备一台登录服。

最后的结构图应该像这样:loginServer gameServer| /| /client该结构下的玩家操作流程为,先选择大区,再选择大区下的某台服务器,即某个游戏世界,点击进入后开始帐号验证过程,验证成功则进入了该游戏世界。

腾讯QQ的游戏服务器架构

腾讯QQ的游戏服务器架构

腾讯QQ的游戏服务器架构QQ游戏的服务器架构百万级别在技术上,QQ游戏到底是如何实现百万人同时在线并保持游戏高效率的呢?简单地说,实现百万人同时在线的服务器模型应该是:登陆服务器+大厅服务器+房间服务器。

当然,也可以是其它的模型,但其基本的思想是一样的。

下面,我将逐一介绍这三类服务器的各自作用。

登陆服务器:一般情况下,我们会向玩家开放若干个公开的登陆服务器,就如QQ登陆时让你选择的从哪个QQ游戏服务器登陆一样,QQ登陆时让玩家选择的六个服务器入口实际上就是登陆服务器。

登陆服务器主要完成负载平衡的作用。

详细点说就是,在登陆服务器的背后,有N个大厅服务器,登陆服务器只是用于为当前的客户端连接选择其下一步应该连接到哪个大厅服务器,当登陆服务器为当前的客户端连接选择了一个合适的大厅服务器后,客户端开始根据登陆服务器提供的信息连接到相应的大厅上去,同时客户端断开与登陆服务器的连接,为其他玩家客户端连接登陆服务器腾出套接字资源。

在设计登陆服务器时,至少应该有以下功能:N个大厅服务器的每一个大厅服务器都要与所有的登陆服务器保持连接,并实时地把本大厅服务器当前的同时在线人数通知给各个登陆服务器,这其中包括:用户进入时的同时在线人数增加信息以及用户退出时的同时在线人数减少信息。

这里的各个大厅服务器同时在线人数信息就是登陆服务器为客户端选择某个大厅让其登陆的依据。

比如,玩家A通过登陆服务器1连接到登陆服务器,登陆服务器开始为当前玩家在众多的大厅服务器中根据哪一个大厅服务器人数比较少来选择一个大厅,同时把这个大厅的连接IP和端口发给客户端,客户端收到这个IP和端口信息后,根据这个信息连接到此大厅,同时,客户端断开与登陆服务器之间的连接,这便是用户登陆过程中,在登陆服务器这一块的处理流程。

大厅服务器:大厅服务器,是普通玩家看不到的服务器,它的连接IP和端口信息是登陆服务器通知给客户端的。

也就是说,在QQ游戏的本地文件中,具体的大厅服务器连接IP和端口信息是没有保存的。

MMORPG服务器软件体系结构研究——构造模型的演化

MMORPG服务器软件体系结构研究——构造模型的演化

V 1 3 N . o 3 o6 . Dc 0 8 e .2 0
MMoI G 服 务 器 软 件 体 系 结 构 研 究



构 造 模 型 的 演化
吴拥 民 ,陈宏 展
( .闽江学院 计算机科学 系, 1 福建 福州 3 00 ; .福建天晴数码娱乐有限公司 , 5 18 2 福建 福州 30 0 ) 50 3
摘要 : 根据 K u he 4+1 模 型 以 U rc t n“ ” ML构造 了 MMO P R G服 务 器软件 体 系结构 的 演化模 型.在
进 程视 图中 , 加 一类全 局进程 , 增 实现 了集 中仲 裁式 的分布 式 同步模 型 ; 开发视 图 中, 在 增加 了一 个层 次从 而 改进构 造模 型 , 形成 了 5个层 次 : 心层 、 务层 、 核 服 实体层 、 交互层 与逻 辑层 , 清晰 了 并
ers.
Ke r s:s fwa e ac ie tr y wo d ot r r h tcu e;MMORPG;n n—f r l d ln o o ma mo ei g;UML
O 引 言
目前 , MMO P Mas eyMu i ae nieR l PaigG m ) R G( svl hp yr l o i l O n e— l n a e 已经 成为 互联 网时代 人类 娱 乐所 依 y 赖 的一种 基础设 施 , 但研究 MMO P R G软 件体 系结构基 本处 于空 白. 虽然 软件体 系结 构 已经在软 件工 程领域 中有 着广 泛 的应用 , 迄 今 为止 还 没有 一 个被 大 家 所公 认 的 但 定 义. 文献 [ ] 在 1 中我 们较早 地研 究 了 MMO P R G服 务器 的软 件 体 系结 构 , 提 出 了一 种 基 于 K uhe “ 并 ret 4 n +1 模型 理论 ,以 U ” ML为 描述语 言 的“ 非形 式化构 造 ” 方法 , 整 体描 述 了 MMO P … 从 R G服务 器 软件体

游戏工作室的游戏服务器架构解析

游戏工作室的游戏服务器架构解析

游戏工作室的游戏服务器架构解析在当今数字游戏市场的竞争中,良好的游戏服务器架构对于游戏工作室的成功至关重要。

一种稳定、高效、可扩展的游戏服务器架构不仅可以提升游戏的用户体验,还能够支持更多的玩家和更复杂的游戏玩法。

本文将对游戏工作室的游戏服务器架构进行解析,探讨其设计原则和实现方式。

一、概述游戏服务器架构是指用于支持游戏运行的硬件和软件系统。

一个好的游戏服务器架构应该具备高性能、可靠性、可伸缩性和安全性。

它需要能够处理大量的并发请求,并且能够适应用户数量的增长。

二、游戏服务器架构的设计原则1. 分布式架构分布式架构是指将游戏服务器的功能和负载分散到多台服务器上,以提高整体性能和可靠性。

在游戏工作室的服务器架构中,常常采用主从架构或者集群架构来实现分布式。

主服务器负责处理核心游戏逻辑,而从服务器则用于存储玩家数据和处理辅助功能。

2. 弹性伸缩弹性伸缩是指游戏服务器能够根据负载情况动态调整服务器数量和资源配置。

当游戏服务器的负载过高时,系统可以自动添加更多的服务器来分担负载,而当负载减轻时,系统可以释放多余的资源。

这样可以有效地提高服务器的可用性和性能。

3. 实时通信由于游戏的特殊性,实时通信对于游戏服务器架构来说至关重要。

游戏服务器需要实时地与玩家进行交互,传输玩家的操作和接收游戏状态的更新。

因此,游戏服务器通常采用高性能的消息中间件来支持实时通信,并采用UDP协议来传输数据,以降低延迟和提高响应速度。

4. 安全保障在游戏服务器架构中,安全性是一个重要的考虑因素。

游戏工作室需要保护玩家的个人信息和游戏数据,防止黑客攻击和非法访问。

因此,游戏服务器通常采用加密技术来保护数据传输,采用防火墙和入侵检测系统来防御网络攻击。

三、游戏服务器架构的实现方式1. 应用服务器应用服务器是游戏的核心服务器,负责处理游戏的逻辑和计算。

它通常采用高性能的多线程或者多进程技术来支持并发处理,并且利用缓存机制来提高数据的读写效率。

游戏服务器架构

游戏服务器架构

游戏服务器架构⼀、游戏服务器特征游戏服务器,是⼀个会长期运⾏程序,并且它还要服务于多个不定时,不定点的⽹络请求。

所以这类服务的特点是要特别关注稳定性和性能。

这类程序如果需要多个协作来提⾼承载能⼒,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。

由于多进程协同⼯作,也带来了开发的复杂度,这也是需要关注的问题。

功能约束,是架构设计决定性因素。

基于游戏业务的功能特征,对服务器端系统来说,有以下⼏个特殊的需求:游戏和玩家的数据存储落地对玩家交互数据进⾏⼴播和同步重要逻辑要在服务器上运算,做好验证,防⽌外挂。

针对以上的需求特征,在服务器端,我们往往会关注对电脑内存和CPU的使⽤,以求在特定业务代码下,能尽量满⾜⾼承载低响应延迟的需求。

最基本的做法就是“空间换时间”,⽤各种缓存的⽅式来以求得CPU和内存空间上的平衡。

另外还有⼀个约束:带宽。

⽹络带宽直接限制了服务器的处理能⼒,所以游戏服务器架构也必定要考虑这个因素。

⼆、游戏服务器架构要素对于游戏服务端架构,最重要的三个部分就是,如何使⽤CPU、内存、⽹卡的设计:内存架构:主要决定服务器如何使⽤内存,以最⼤化利⽤服务器端内存来提⾼承载量,降低服务延迟。

逻辑架构:设计如何使⽤进程、线程、协程这些对于CPU调度的⽅案。

选择同步、异步等不同的编程模型,以提⾼服务器的稳定性和承载量。

可以分区分服,也可以采⽤世界服的⽅式,将相同功能模块划分到不同的服务器来处理。

通信模式:决定使⽤何种⽅式通讯。

基于游戏类型不同采⽤不同的通信模式,⽐如http,tcp,udp等。

三、服务器演化进程1、卡牌等休闲游戏弱交互游戏服务器基于游戏类型不同,所采⽤的架构也有所不同,我们先讲⼀下简单的模型,采⽤http通信模式架构的服务器:这种服务器架构和我们常⽤的web服务器架构差不多,也是采⽤nginx负载集群⽀持服务器的⽔平扩展,memcache做缓存。

唯⼀不同的地点不同的在于通信层需要对协议再加⼯和加密,⼀般每个公司都有⾃⼰的⼀套基于http的协议层框架,很少采⽤开源框架。

高性能MMORPG通用服务端引擎设计之一

高性能MMORPG通用服务端引擎设计之一
高性能MMORPG通用服务端引擎设计之->基本概念篇
鉴于公司保密协议,本系列文章将不涉及具体的游戏细节以及实现。由于本人也是第一次参与此类引擎的设计,所以难免有所失误,如有异见欢迎业内人士讨论,发表本系列文章的目的不在于说教,重在分享以及讨论。
MMORPG的服务端引擎是驱动整个游戏的总要部件,而且对于现在外挂满天飞的年代,服务端的地位变得愈发重要,很多游戏都将很多原来由客户端处理的逻辑交给了服务端来处理,以避免各类外挂对游戏公平性造成的影响。要设计一款通用的且高性能的MMORPG服务引擎是一个非常艰巨的工作,总的来说,一款网游能够承载多少人,能够实现什么功能,能够开展什么运营活动,都是跟有一款够不够强悍的服务端引擎有密切的关系,可以说服务端引擎就是游戏的心脏,如果设计不好,就会“心率不齐”,“心肌梗塞”,然后不能支撑足够的在线人数,操作“卡”,最后死掉翘辫子。设计精良的引擎,比如WOW,EVE Online等,则给运营和策划留下来大量的空间,这样游戏的成功也就不存在“技术问题”了。
|
Client
我们可以继续将游戏逻辑进行分类,由于MMORPG的每一个玩家从经入游戏开始就是处于一个个的场景当中的,所以逻辑服务器也可以叫场景服务器(地图服务器),有的游戏即使没有场景切换,其实也是分了很多场景的,只是采用了无缝拼接的技术让你觉得是没有分开的。玩家的逻辑就可以分为连续事件逻辑和瞬时逻辑。连续事件逻辑是在场景中需要和其他用户发生反映的事件,也可以称之为场景事件,比如我攻击了一个怪,这一个事件需要通知场景里所有的玩家知道,并且会影响怪接下来的行动。所谓的瞬时事件,就是只会影响玩家自身的状态且不需要通知其他玩家或者说是对场景产生影响的(当然如果对场景产生了影响势必需要通知场景内其他玩家)。有的事件甚至会跨场景通知系统内所有用户(比如某玩家击杀了某著名BOSS,或者通知师父自己的徒弟在某处遭到了攻击[假如要实现师徒系统的话])。玩家大部分的逻辑都是在场景内完成的,所以场景逻辑的实现非常的重要。在这个部分的运算涉及到多个对象间的互动,如果想用多线程来提高并行度来提高性能其实反而会适得其反,因为要保证计算的数据安全避免脏读,在多线程的环境下就需要处理大量的锁,相信在游戏的业务逻辑里还需要处理锁,防止死锁这里的处理会宁所有的程序员抓狂,对于这种高CPU运算的场景来说,大量的线程也会将宝贵的CPU时间浪费不少在线程切换上,所以一般来说游戏的逻辑服务器都是单进程单线程的结构,通过一个大循环来驱动整个事件逻辑。那么你可能会问,如果有单进程单线程岂不是只能利用一颗CPU内核了么?当然一个游戏也不可能只有一个场景嘛,我们可以在一台服务器上跑N个场景服务,处理N个场景的逻辑(根据经验来说,N=CPU内核数量性能最好)。所以你可以看到为啥上图我不写Logic Server而是写的Logic Service了。

大世界网络游戏服务器的构架19页

大世界网络游戏服务器的构架19页

谢谢
云风
.codingnow
PPT 下载codingnow/2019/deepcold.ppt
Thank you
• 玩家的交互受游戏设计的限制
– 限制是为了更丰富的可能性 – 虚拟世界的战争、贸易以及资源分配
服 务 器 组 的 内 部 结 构
外部连接处理
• 多个外部接入点
– 国情问题:电信网通问题 – 特别通道:用于管理人员进入
• 组播
– 分组管理的问题
• 心跳控制
– 流水线作业 – 时间控制 – 录象回放调试(监督数据合法性)
– 物理上玩家分属不同服务器组管理 – 用户数据库各自独立,无须实时交互 – 虚拟世界中的距离即物理世界上的距离
登陆过程
服务器组间的消息传递
服务器组间消息传递
• 避免交互性协议
– 游戏设计上考虑远程通讯的时间差 – 允许数据复制,并考虑多个副本相遇时的处理
• 每组服务器有唯一的数据输入输出点
– 海关服务
• 唯一的数据储存点
– 使用本地文件系统 – 使用简单文本结构 – 使用简单的交互协议
• 物品发放服务
– 虚拟物品的控制
• 数据监控和备份
系统登陆与灾难处理
• 门卫
– 用户登陆排队 – 登出登记
• ห้องสมุดไป่ตู้洞
– 从灾难中恢复 – 保持跟玩家的有限交互
游戏逻辑的实现
• 多进程单线程结构
– 避免进程间通讯 – 严格控制数据进出 – 做好灾难处理
引擎三大部分
• 基于 freebsd 的服务器 • 跨平台的客户端
– 二进制跨平台 – 支持 Win32 MacOs Linux Freebsd – 3d 部分基于 openGL – C 语言编写底层、逻辑部分动态脚本语言

百万用户同时在线游戏服务器架构实现

百万用户同时在线游戏服务器架构实现

百万用户在线网络游戏服务器架构实现一、前言事实上100万游戏服务器,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高效率的编程语言、高性能的数据库、还有高性能的架构模型。

但是除了这几个方面,还没法根本解决面临的高负载和高并发问题。

当然用户不断地追求更高的机器性能,而升级单一的服务器系统,往往造成过高的投入和维护成本,性价比大大低于预期。

同时全天候的可用性的要求也不能满足要求,如果服务器出现故障则该项服务肯定会终止。

所以单独追求高性能的服务器不能满足要求,目前基本的解决方案是使用集群技术做负载均衡,可以把整体性能不高的服务器做成高可扩展性,高可用性,高性能的,满足目前的要求。

目前解决客户端和服务器进行底层通讯的交互的双向I/O模型的服务器的成熟方案。

1.windows下,比较成熟的技术是采用IOCP,完成端口的服务器模型。

2.Linux下,比较成熟的技术是采用Epoll服务器模型,Linux2.6内核中提供的System Epoll为我们提供了一套完美的解决方案。

目前如上服务器模型是完全可以达到5K到20K的同时在线量的。

但5K这样的数值离百万这样的数值实在相差太大了,所以,百万人的同时在线是单台服务器肯定无法实现的。

而且目前几个比较成熟的开发框架,比如ICE,ACE等。

这样,当采用一种新的通信技术来实现通信底层时,框架本身就不用做任何修改了(或修改很少),而功能很容易实现,性能达到最优。

目前采用的ace框架个不错的选择方案,可以不受操作系统的影响,移植比较方便。

对于数据库选择可有许多成熟的方案,目前大多数选择的mysql Master/slave模式,以及oracle RAC方案。

基本可以满足目前的要求,但具体的瓶颈不是在数据库本身,应该还是硬件磁盘I/O的影响更大些。

建议使用盘阵。

这有其他成熟的方案,比如采用NAS解决分布数据存储。

其实最为关键的是服务器的架构和实现,数据流量的负载均衡,体系的安全性,关键影响度,共享数据的处理等等多个方面对100万用户的数据处理有影响,所以都要全面的考虑。

大世界网络游戏服务器的构架

大世界网络游戏服务器的构架
• 唯一的数据储存点
– 使用本地文件系统 – 使用简单文本结构 – 使用简单的交互协议
• 物品发放服务
– 虚拟物品的控制
• 数据监控和备份
系统登陆与灾难处理
难中恢复 – 保持跟玩家的有限交互
游戏逻辑的实现
• 多进程单线程结构
– 避免进程间通讯 – 严格控制数据进出 – 做好灾难处理
– 物理上玩家分属不同服务器组管理 – 用户数据库各自独立,无须实时交互 – 虚拟世界中的距离即物理世界上的距离
登陆过程
服务器组间的消息传递
服务器组间消息传递
• 避免交互性协议
– 游戏设计上考虑远程通讯的时间差 – 允许数据复制,并考虑多个副本相遇时的处理
• 每组服务器有唯一的数据输入输出点
– 海关服务
• 玩家的交互受游戏设计的限制
– 限制是为了更丰富的可能性 – 虚拟世界的战争、贸易以及资源分配
服 务 器 组 的 内 部 结 构
外部连接处理
• 多个外部接入点
– 国情问题:电信网通问题 – 特别通道:用于管理人员进入
• 组播
– 分组管理的问题
• 心跳控制
– 流水线作业 – 时间控制 – 录象回放调试(监督数据合法性)
大世界网络游戏服务器的构架
• 基于 freebsd 的服务器 • 跨平台的客户端
– 二进制跨平台 – 支持 Win32 MacOs Linux Freebsd – 3d 部分基于 openGL – C 语言编写底层、逻辑部分动态脚本语言
• 开发用相关工具
– 跨平台命令行工具 – Windows 下的视觉编辑工具
• 特殊功能模块的设计
– 帮派/行会,交易所…… – 避免全局数据交互

大型网络游戏服务器架构设计与优化

大型网络游戏服务器架构设计与优化

大型网络游戏服务器架构设计与优化随着互联网技术的快速发展和广泛应用,网络游戏作为一种流行的娱乐方式,也得到了越来越多的玩家青睐。

在网络游戏中,大型的游戏服务器是保证游戏稳定性和用户体验的关键。

因此,设计一个高效稳定的网络游戏服务器架构,成为了网络游戏研发团队必须面对和解决的核心问题。

一、网络游戏服务器架构设计原则1. 可扩展性原则网络游戏的用户量是非常大的,服务器硬件配置不可能无限制的提升。

因此,服务器架构必须具备可扩展性,可以根据用户数量和峰值流量进行扩展。

同时,架构设计也要考虑到游戏发展的长期性,让未来的升级可以更加顺畅。

2. 高可靠性原则网络游戏是全天候运行的,一旦出现故障就会影响用户体验,甚至影响游戏经济平衡,导致用户离开。

因此,高可靠性原则是网络游戏服务器架构设计不可忽略的关键要素。

服务器应该具有自我修复功能,可以快速检测和隔离问题。

3. 低延迟原则延迟的高低直接会影响到游戏玩家的体验。

通常来说,游戏延迟在200ms左右,如果超过此值,就会出现卡顿和延迟等现象。

因此,网络游戏服务器架构设计需要 prioritize 低延迟,尤其是需要高准确性的实时游戏,比如说FPS,MOBA,竞速类等。

二、网络游戏服务器架构设计1. 服务器群为了提升服务器的可靠性和扩展性,我们可以采用服务器群架构。

服务器群是由多台服务器组成的集群,每台服务器彼此之间可以进行负载均衡,避免单一点故障造成全局性宕机。

在网络游戏中,服务器群中的服务器可以承担游戏运行环节的不同任务(比如,登录,场景,物品,....),实现分布式任务处理和负载均衡。

2. 分布式存储用户数据,游戏场景数据,游戏物品数据等是网络游戏必不可少的组成部分,因此对于这些数据的存储,我们采用分布式存储系统(比如,HBase, Redis)。

分布式存储系统可以解决单点故障和存储容量的问题。

同时利用分区和副本机制,可以控制数据的可用性和可恢复性。

3. 延迟优化网络传输延迟是游戏体验的重要因素,因此针对网络延迟进行优化是网络游戏服务器架构设计中的重点。

经典百万级网游服务器架构

经典百万级网游服务器架构

系统架构系统架构:nginx + PHP(fastcgi模式) + MYSQL1、负载均衡:用软件作负载均衡,前端用nginx作为反向代理,分发php处理请求。

技术难点会话同步,可以用memcached解决。

2、 web服务器:可以用nginx+php-cgi,apache+php-cli,apache+php-cgi这样的配合。

本系统无静态页面,而且对并发的要求高,所以选用轻量级的nginx服务器,让php以fastCGI 模式在单独进程中处理业务请求。

3、数据库:数据库采用MYSQL,在设计数据表结构的时候,放弃了大部分表的关联操作,尽可能缓存最多的数据。

采用分库分表的设计方案,对不需要支持事务等高级操作的数据,数据表采用执行速度高效的MyISAM引擎,其其它表采用InnoDB引擎。

4、缓存:运用分布式的内存缓存memcached,将用户的session会话以及经常访问的数据缓存起来,而不要反复的去查询数据库或者文件系统。

具体架构:服务器搭配方面,分为web服务器和db服务器,db服务器和web服务器之间通过memcache服务器进行缓冲,在游戏运营时,数量上按照1:1的比例配置。

在分布式算法上设计上应该能满足动态增删的需求,管理员可以在任何时候为系统增加或减少服务器的部署,而不需要重启启动服务器。

通常玩家一天只登录少数几次,但是会在游戏中玩很长时间,所以系统登录安排单独的服务器,具体策略是将服务器分成N组,为每组服务器单独配备一台登录服务器。

前端用nginx作反向代理,nginx服务器不处理任何逻辑,它的作用只有两点:1.承载用户;2.中转数据。

玩家具体操作流程为,玩家发出登录请求,nginx将请求分发给登录服务器,登录服务器开始帐号验证过程,验证成功则为用户指定相应的游戏服务器。

游戏服务器组的分配策略是根据当前负载进行分配。

系统运行过程中,登录服务器及游戏服务器都会需要连接数据库。

从数据库服务器的部署上来说,可以将帐号和角色数据分为两个不同的库分别来处理,基本做到从物理上部署到两台不同的服务器上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
服务器架构现在应该很高效了吗?还能想到影响那些地 方会影响服务器性能的吗? 游戏中移动、聊天、技能、物品、任务、怪物、AI等 应该放在一个scene服务器上吗? 单个scene服务器能处理这么多的事情吗? 好吧,让我们再来看下开始的图吧,你会看到很多熟悉 的东东
Internet Client
问题和思考
如果我们需要添加new scene怎么办?要通 知所有与new scene相联系的scene我要加 入了吗? 当scene变多的时候我们应该怎么去协调各个 scene间的工作?我们难道不应该引入一个管 理者吗?
添加中心控制器的服务器架构
每个scene只需要与center连接; Center来协调控制各个scene,方便new scene的添加。
问题和思考
确实解决了服务器场景管理的问题,但是客户端每 次切换一次场景都要重新跟scene发起一次连接, 这样是不是太低效了? 客户端与服务器重新建立连接比较耗时(要再次3 次握手,身份验证等),容易导致卡号(连接不上 新scene),还可能导致复制装备等问题。
不用重复连接scene的服务器架构
所谓服务器的架构,通俗的讲就是如何将服 务器各部分合理的安排,以实现用户所有的功 能需求。所以架构本来无所谓正确与错误;当 然优秀的结构更有助于系统的搭建,对系统的 可扩展性及可维护性也有更大的帮助。
从零开始—最简单的架构
对于一个最简单的游戏服务器来说,它只需要 能够接受来自客户端的连接请求,然后处理客 户端在游戏世界中的移动及交互(即游戏逻辑 的处理)即可。
添加了多个用户的服务器架构
login不在占用logic的资源,使logic运行更 高效;
添加了多个用户的服务器架构 +DB
问题和思考
玩家游戏中的数据应该怎么办呢?应该与 Auth共用DB吗? 让我们来看下游戏的logic服务器吧
独立场景的服务器架构
游戏不应该只有1个场景,所有的场景不应该都放在logic 中; 玩家在场景中的切换,实际上是玩家的数据在场景中的切换。
问题和思考
上面这个也能叫服务器架构? 为什么和之前的那副架构图相差这么大?
Login模块分离
一般我们在接入游戏服务器时,需要一个账户 和密码,证通过后才能进入。
简单的游戏分区架构
为了接入更多的用户来玩游戏,我们要开放更 多游戏区(游戏服务器)。
问题和思考
上面服务器架构合理吗?不合理为什么? 我们有更好的办法吗?
socket tbus shm
带有网关的服务器架构
经过分析发现center包含,逻辑处理和转发client与scene之间消息的 功能,既然这两块没有联系我们可以将client与scene模块独立出来。 Gateway仅仅用来处理client与后台logic server的连接,可以大幅提 高client的连接数量。
问题和思考
QQ Vas key Agent
Tcenterd
Torm(tacc)
World
Tagent
Torm(mail)
Tmail
GamePlay_1
Torm(char) GamePlay_2 MySQL(master) Tlogd MySQL(slave) Terrain
socket tbus shm
什么是游戏服务器架构
百万级
MMORPG游戏服务 器架构
L/O/G/O
什么是MMORPG
MMORPG的典型特征有哪些?
有哪些经典的MMO?
Internet Client
Tconnd Server Environment
Tconnd
Tconnd
Tconnd
Tconnd
Tversion Tdir Tacc Chat
center和client直接连接,center转发client和scene的 消息,这样client就不需要和scene重复连接; center还负责转发scene之间的数据,如:client从 scene1切换到scene2.
问题和思考
Center真是中流砥柱啊,但是它能承载多少 玩家?这样Center不就是这个架构的瓶颈了 吗? 我们既想不要频繁的改变连接,又想有一个唯 一的入口,同时还希望这个入口的负载不要太 大,以至于接受不了多少连接。
Tconnd Server Environment
Tconnd
Tconnd
Tconnd
Tconnd
Tversion Tdir Tacc Chat
QQ Vas key Agent
Tcenterd
Torm(tacc)
World
Tagent
Torm(mail)
Tmail
GamePlay_1
Torm(char) GamePlay_2 MySQL(master) Tlogd MySQL(slave) Terrain
相关文档
最新文档