`
KC008
  • 浏览: 28659 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

(转载)一种经典的网络游戏服务器架构

阅读更多

http://www.cppblog.com/johndragon/archive/2008/04/10/46768.html

首先,二话不说,上图(用Windows画图画的。。。)


这个图是一个区的架构图,所有区的架构是一样的。上面虚线框的ServerGroup和旁边方框内的架构一样。图上的所有x N的服务器,都是多台一起的。红线,绿线,和蓝线图上也有图示,这里就不多介绍了。关于Agent Server大家也能看出来,其实就是Gate。
这里主要介绍下图上的标记了号码的位置的数据连接的内容和意义。

1-   这是一条WebService的管道,在用户激活该区帐号,或者修改帐号密码的时候,通过这条通道来插入和更新用户的帐号信息。
2-   这也是一条WebService管道,用来获取和控制用户该该组内的角色信息,以及进行付费商城代币之类的更新操作。
3-   这是一条本地的TCP/IP连接,这条连接主要用来进行服务器组在登陆服务器的注册,以及登陆服务器验证帐户后,向用户服务器注册帐户登陆信息,以及进行对已经登陆的帐户角色信息进行操作(比如踢掉当前登陆的角色),还有服务器组的信息更新(当前在线玩家数量等)。
4-   这也是一条本地TCP/IP连接,这条连接用来对连接到GameServer的客户端进行验证,以及获取角色数据信息,还有传回GameServer上角色的数据信息改变。
5-   这条连接也是一条本地的TCP/IP连接,它用来进行公共信息服务器和数个游戏服务器间的交互,用来交换一些游戏世界级的信息(比如公会信息,跨服组队信息,跨服聊天频道等)。
6-   这里的两条连接,想表达的意思是,UserServer和GameServer的Agent是可以互换使用的,也就是玩家进入组内之后,就不需要再切换Agent。如果不怕乱套,也可以把登陆服务器的Agent也算上,这样用户整个过程里就不需要再更换Agent,减少重复连接的次数,也提高了稳定性。(毕竟连接次数少了,也降低了连不上服务器的出现几率)

在这个架构里面,GameServer实际上是一个游戏逻辑的综合体,里面可以再去扩展成几个不同的逻辑服务器,通过PublicServer进行公共数据交换。

UserServer实际上扮演了一个ServerGroup的领头羊的角色,它负责向LoginServer注册和更新服务器组的信息(名字,当前人数),并且对Agent进行调度,对选择了该组的玩家提供一个用户量最少的Agent。同时,它也兼了一个角色管理服务器的功能,发送给客户端当前的角色列表,角色的创建,删除,选择等管理操作,都是在这里进行的。而且,它还是一个用户信息的验证服务器,GameServer需要通过它来进行客户端的合法性验证,以及获取玩家选择的角色数据信息。


采用这种架构的游戏,通常有以下表现。
1- 用户必须激活一个大区,才能在大区内登陆自己的帐号。
2- 用户启动客户端的时候,弹出一个登陆器,选择大区。
3- 用户启动真正的客户端的时候,一开始就是输入帐号密码。
4- 帐号验证完成之后,进行区内的服务器选择。
5- 服务器选择完成之后,进入角色管理。同时,角色在不同的服务器里不能共享。

市面上符合上面几个表现特征的游戏相当的多,而且也不乏旷世巨作。这个架构不是一个新的架构,但是它足够经典和完善,并且逻辑简单而清晰,用来做MMORPG,或者其它网络游戏的服务器架构,是一种不错的选择。

分享到:
评论

相关推荐

    亿级数据的高并发通用搜索引擎架构设计[转载]

    倒排索引是一种用于全文检索的高效数据结构,它将每个词映射到包含该词的文档列表,从而极大地提高了查询速度。在设计过程中,我们需要考虑如何构建和优化倒排索引,以达到快速查询的目的。 其次,高并发处理是另一...

    多线程文件下载CS结构转载

    本文将深入探讨一种客户端-服务器(Client-Server,简称CS)架构下的多线程文件下载实现。这种技术允许服务器同时处理多个客户端请求,提升整体系统性能。 【描述】:“转载的别人的,这个代码写的很清除,很实用,...

    可扩展多线程异步Socket服务器框架EMTASS

    【可扩展多线程异步Socket服务器框架EMTASS】是一种设计用于构建高性能、高并发网络服务的软件架构。在IT行业中,Socket编程是网络通信的基础,它允许应用程序通过网络发送和接收数据。异步Socket则进一步提升了效率...

    使用open source产品组装你的web应用架构(转载)

    这篇博客文章“使用open source产品组装你的web应用架构”探讨了如何利用开源技术栈来搭建一个高效且灵活的Web应用。以下是基于这个主题的详细知识点: 1. **Web服务器**:Web应用的基础是Web服务器,如Nginx或...

    短信平台设计方案.pdf

    供的短信端口与互联网连接实现与客户指定号码进行短信批量 发送和自定义发送的,短信平台主要分为两种:一种是要下载 安装到本地的软件版,一种是通过浏览器登录的网页版短信平 台。据"短信营销研究中心"介绍,从两...

    李洵爱心代码html 和python转载

    Python则是一种强大的、易读性强的脚本语言,广泛应用于Web开发、数据分析、自动化任务等。在`main.py`文件中,可能是用Python编写后端逻辑,与HTML前端进行交互。例如,Python可以处理用户提交的数据,执行计算,...

    【转载】CAS实现单点登录(SSO)经典完整教程

    CAS(Central Authentication Service)是一种广泛使用的开放源码的单点登录(Single Sign-On,简称SSO)框架,它为各种应用程序提供了统一的认证服务。在本文中,我们将深入探讨如何利用CAS实现单点登录功能,这将...

    WebService+Android

    WebService是一种基于XML的协议,它定义了一种松散耦合的方式,使得运行在不同操作系统、不同硬件、不同编程语言环境的应用程序能够互相通信。SOAP是一种用于交换结构化和类型化的信息的协议,而REST则是一种轻量级...

    转载的jsp信息发布系统

    JSP是一种动态网页开发技术,结合了HTML代码和Java脚本,可以方便地实现服务器端的业务逻辑处理。在描述中提到的“MSSQL数据库”指的是Microsoft SQL Server,这是一个强大的关系型数据库管理系统,用于存储和管理...

    IIS服务器SSI(rewrite重写)插件的帮助资料

    这些表达式常常能改成另一种写法来避免这种问题。例如,“(a*a)*b”可以被改写成“a*b”,解析它消耗的时间与N成正比。在多数情况下,非嵌套重复表达式消耗的时间与N2成正比,但是,如果条款是相互排斥的,则它们会...

    纯流操作实现生成客户端源码

    标题“纯流操作实现生成...对于想学习Delphi编程,尤其是文件处理和客户端-服务器架构的开发者来说,这是一个宝贵的学习资源。不过,要理解并运用这些知识,还需要具备一定的Delphi编程基础以及对流和文件操作的理解。

    虚拟机下rehat5 oracle rac

    首先,RAC是Oracle提供的一种集群数据库技术,它允许多个实例访问同一个数据库,从而提供高可用性、扩展性和改善的性能。RAC是Oracle Grid Infrastructure的一部分,是Oracle数据库企业版中重要的组件之一。 在...

    HAPROXY 1.4.15 LINUX

    LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。  HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多...

    Servlet和Struts2的交互(转载)

    Servlet是Java EE规范的一部分,它提供了一种服务器端编程模型,用于处理HTTP请求和响应。而Struts2是基于MVC(Model-View-Controller)设计模式的开源框架,它简化了Servlet的使用,提供了更高级别的抽象和功能,...

    本项目是基于SpringBoot的线上宠物物资购买系统,为个人毕业设计,未经允许禁止转载.zip

    4. **Thymeleaf或JSP视图解析**:前端界面可能采用了Thymeleaf模板引擎,这是一种与SpringBoot很好的集成的服务器端渲染技术。或者,项目可能使用了JSP(JavaServer Pages)进行视图展示,提供动态网页生成能力。 5...

    对SQL说不 NoSQL的数据库 技术革命 转载.doc

    NoSQL(Not Only SQL)是一种新兴的数据库技术,它的出现是对传统关系型数据库(RDBMS)的一种挑战和补充。随着互联网技术的发展,尤其是Web2.0和云计算的崛起,对于大规模、高并发、高性能的数据处理需求日益增长,...

    AIX 考证(转载)

    AIX(Advanced Interactive eXecutive)是IBM开发的一种Unix操作系统,主要用于IBM的Power Systems服务器。了解AIX的启动过程对于系统管理员和IT专业人士至关重要,因为它可以帮助诊断和解决启动问题。以下是对AIX...

    linux学习的几点建议(转载感觉不错)

    Shell脚本是Linux系统中一种强大的自动化工具,通过编写Shell脚本来实现复杂的任务自动化处理。学习如何编写简单的Shell脚本,可以大大提高工作效率。常见的Shell脚本语言包括bash、sh等。 #### 六、探索系统内核 ...

    jsp论坛—别的网站转载的

    【JSP论坛】是一种基于Java技术的Web应用平台,它为用户提供了一个互动交流的环境,类似于我们常见的在线社区或讨论区。在这个平台上,用户可以发布主题、回复他人的话题,进行问题解答、分享知识和经验。这个论坛...

    ASP.NET学习积累的代码段(转载)

    ASP.NET是微软开发的一种Web应用程序框架,用于构建高性能、安全且可伸缩的网站和Web应用。本资源“ASP.NET学习积累的代码段”显然包含了作者在学习ASP.NET过程中积累的一些实用代码片段,主要涉及C#语言和ASP.NET...

Global site tag (gtag.js) - Google Analytics