CN105472003A - 一种大规模分布式游戏服务器系统及其实现方法 - Google Patents
一种大规模分布式游戏服务器系统及其实现方法 Download PDFInfo
- Publication number
- CN105472003A CN105472003A CN201510911937.9A CN201510911937A CN105472003A CN 105472003 A CN105472003 A CN 105472003A CN 201510911937 A CN201510911937 A CN 201510911937A CN 105472003 A CN105472003 A CN 105472003A
- Authority
- CN
- China
- Prior art keywords
- server
- game
- client
- scene
- scale distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种大规模分布式游戏服务器系统,包括:网关服务器、验证服务器、连接服务器以及场景服务器;所述网关服务器用于为用户提供统一的连接入口,并为用户分配验证服务器和连接服务器;所述验证服务器用于提供远程调用接口供其它服务器调用,以进行用户的注册和验证;所述连接服务器用于在客户端和服务端之间建立以及维护长连接,并中转客户端和服务端之间的消息;所述场景服务器用于处理游戏场景中的游戏逻辑,同时为其他服务器提供操纵场景数据的接口。还公开了一种大规模分布式游戏服务器系统的实现方法。本发明实现了高性能、可伸缩、轻量级游戏服务器框架,解决了游戏服务器开发中的难点,使得游戏服务器的开发变得简单。
Description
技术领域
本发明涉及移动通信领域,特别涉及一种大规模分布式游戏服务器系统及其实现方法。
背景技术
游戏服务器是蜘蛛网式的架构,每个进程都有各自的职责,这些进程的交织在一起共同完成一件任务。这些需求也决定了游戏服务器开发的难度。传统的网络游戏服务器框架,要么无分布式结构,要么只支持比较简单的分布式结构。
如果无分布式结构,会造成实时性保证出现很大的问题。对实时游戏服务器来说,常见的实时性很高的任务有:实时Tick,实时游戏的服务端一般都需要一个定时tick来执行定时任务,为了游戏的实时性,一般要求这个tick时间在100ms之内;广播,由于玩家在游戏里的行动要实时地通知场景中的其它玩家,必须通过广播的模式实时发送。游戏中广播的代价是非常大的。玩家的输入与输出是不对等的,玩家自己简单地动一下,就需要将这个消息实时推送给所有看到这个玩家的其他玩家。如果人数达到很密集的程度,则广播的频度将呈平方级增长,这足以把任何单个服务器撑爆。
如果只支持简单分布式。也会遇到许多的难点:1、多进程服务器的管理,通常的游戏服务器要由很多进程共同去完成任务。当这些进程交织在一起的时候,多进程的管理并不那么容易。如果没有统一的抽象与管理,光把这些开发环境的进程启动起来就是非常复杂的工作,进程的启动与重启就将严重影响开发效率。重量级的进程消耗大量的机器资源,普通的开发机支撑不了那么多进程,可能一个人的开发环境就需要多台机器。多进程间的调试并不容易,发现一个bug就要跨好几个进程;2、远程过程调用,远程过程调用的解决方案已经有许多年的历史了,但远程过程调用在分布式开发效率上仍然没有明显提升。在程序中使用生成的源码如果发生接口改动,又需要重新修改描述文件,重新生成存根接口。对于接口不稳定的开发环境,这种方式对开发效率影响较大;3、分布式事务,尽管尽量把逻辑放在一个进程里处理,但分布式事务仍然是不可避免的;4、负载均衡,由于游戏服务器的有状态性,很多请求需要通过特定的路由规则导到某台服务器;对于有些无状态的服务器,则可以把请求路由到负载最低的服务器。
发明内容
本发明的目的在于克服现有技术问题的缺陷,提供一种大规模分布式游戏服务器系统及其实现方法,用于解决游戏服务器开发中的难点,使得游戏服务器的开发变得简单。
根据本发明的一个方面,提供一种大规模分布式游戏服务器系统,包括网关服务器、验证服务器、连接服务器以及场景服务器,其中:
所述网关服务器用于为用户提供统一的连接入口,并为用户分配验证服务器和连接服务器;所述验证服务器用于提供远程调用接口供其它服务器调用,以进行用户的注册和验证;
所述连接服务器用于在客户端和服务端之间建立以及维护长连接,并中转客户端和服务端之间的消息;
所述场景服务器用于处理游戏场景中的游戏逻辑,同时为其他服务器提供操纵场景数据的接口。
优选地,通过一个抽象的会话来维护所述客户端和服务端之间的长连接。
优选地,其中每一所述场景服务器对应每一场景。
优选地,所述游戏逻辑包括实体管理、消息服务、人工智能服务以及感兴趣区域服务。
优选地,所述系统还包括聊天服务器、寻路服务器和副本组队服务器,其中:
所述聊天服务器用于通过所述连接服务器实现不同用户之间的即时通讯;
所述寻路服务器用于实现游戏场景中的寻路服务;
所述副本组队服务器用于全局管理副本全生命周期和组队相关操作。
优选地,所述寻路服务器能够根据需要并行扩展。
根据本发明的另一方面,提供一种大规模分布式游戏服务器系统的实现方法,所述系统包括前端服务器和后端服务器,其中:
配置前端服务器用于执行以下步骤:
A、承载客户端请求的连接,
B、维护客户端和服务端之间的会话信息,
C、把客户端请求转发到后端服务器,
D、把后端服务器需要广播的消息或响应发送到客户端;
并且配置后端服务器用于执行以下步骤:
E、处理业务逻辑,包括远程过程调用和前端服务器请求的逻辑,
F、把消息推送回前端服务器或者将对客户端请求的响应发送到前端服务器。
优选地,所述客户端和服务端之间的会话信息包括用户的登陆状态、用户的基本信息以及客户端和服务端之间的连接信息。
本发明的有益效果是:
本发明设计的大规模分布式服务器系统及其实现方法实现了高性能、可伸缩、轻量级游戏服务器框架,解决了游戏服务器开发中的难点,使得游戏服务器的开发变得简单,并且具有如下优点:1、开发模型快速、易上手,基于约定优先于配置的原则,让代码达到最大的简化;2、系统的可伸缩性和可扩展性好,本发明在服务器扩展和应用扩展上非常方便;3、本发明设计的系统为轻量级,虽然是分布式架构,但启动非常迅速,占用资源少。
附图说明
下面结合附图和实例对本发明作进一步说明:
图1是根据本发明一实施例的一种大规模分布式游戏服务器系统模块框图;
图2是根据本发明一实施例中的场景服务器的功能模块框图;
图3是根据本发明另一实施例的一种大规模分布式游戏服务器系统的实现方法的功能模块框图。
具体实施方式
根据本发明的一个实施例,参考图1,提供了一种大规模分布式游戏服务器系统,系统包括:网关服务器、验证服务器、连接服务器以及场景服务器。
网关服务器的主要作用是为用户提供一个统一的各种连接入口,并负责用户验证和连接服务器的分配。与连接服务器不同,本实施例中只有一台网关服务器,网关服务器会向所有客户端暴露一个固定的连接接口,当用户登录时,会首先连接网关服务器,完成验证,并获得由网关服务器分配的对应连接服务器的信息。之后,客户端会断开与网关服务器的连接,通过获取的信息连接对应的连接服务器,获取对应的服务。
验证服务器负责用户注册和验证。作为用户验证的统一入口,提供远程调用接口供其他服务器调用,来进行用户的验证。验证服务器的主要作用是屏蔽认证验证的细节,为其他服务器提供统一的验证接口。
在网络游戏中客户端与服务端建立的都是长连接,而长连接本身是需要一定的资源来维持的。在本实施例中,可使用各种连接协议在客户端和服务器之间建立连接。而连接服务器就是用来维护这些连接,并中转客户端和服务端之间的消息。在本实施例中,客户端和服务端的连接状态是通过一个抽象的会话来维护的,会话是一个客户端在服务端的标识,用来维护用户的登录状态、用户的基本信息以及用户的各种连接信息。
在网络游戏中,出于性能和负载的考量,大的游戏世界总是会被分成多个区域,这些不同区域就是场景。在本实施例中,一张游戏地图就是一个游戏场景,与一台独立的场景服务器对应。场景是构成本实施例游戏世界的基本单位,不能进行分割和简单的并行扩展。场景服务器负责维护场景中所有实体,并驱动实体AI(ArtificialIntelligence,人工智能)运行游戏逻辑。
场景服务器负责处理游戏中的几乎所有逻辑,同时为其他服务器提供操纵场景数据的接口。在本实施例中,虽然场景本身不能分割,但可以通过加入新的游戏场景的方法来分散用户,从而提高游戏服务器总的负载量。而一些与场景相关的服务也可以通过独立运行的方式进行水平扩展。
在本实施例中,场景服务负责管理游戏中所有实体和整个游戏世界。而出于安全性和一致性等方面的考虑,所有的游戏逻辑验证都是在后端进行的,因此场景服务还包括了游戏中所有的逻辑判断和处理。本实施例的场景服务是游戏服务的核心,也是逻辑最为复杂的部分,下面就对本实施例中的场景服务进行分析:
本实施例中的每个场景对应一个独立的场景服务器,所有的业务逻辑都在场景服务器内部进行。对于跨场景的操作,则是通过一个全局服务器来进行处理。参照图2,本实施例中的场景服务器处理的游戏逻辑包括括实体管理、消息服务、AI服务以及AOI(Areaofinterest,感兴趣区域)服务。
实体管理,游戏场景中的所有实体(场景数据,包括地图、玩家、NPC等)都会在进入场景时加载到内存中,之后所有的修改都会直接在内存中进行,并通过数据同步模块来定时同步到数据库中。这一设计将场景中所有的数据操作都变成了直接的内存操作,提高了整体性能,规避了频繁的缓慢IO操作。
消息服务,本实施例中的消息服务可以分为两种:一对一的远程过程调用请求响应,以及一对多的广播消息。由于本实施例中的逻辑验证是在服务端进行的,对于客户端的大部分请求,服务端都会有一个直接的回复来进行处理,这种回复是使用了类似于web中的请求响应模式;对于广播服务,本实施例中使用了基于AOI的区域通知服务,即在收到广播消息后,根据消息类型,通过AOI服务获得需要通知的玩家列表,然后对该列表中的玩家进行广播,从而大幅减少了消息的数量。
AI服务,本实施例中使用的是基于XML的AI设计,其方法是策划利用编辑器编辑AI的各种预定义的逻辑组件的连接关系与运行参数,导出基于XML的数据结构。程序读取数据实时运行。其整体的执行流程如下:
1.从根组件出发按深度优先的方法遍历AI树,连接组件有顺序、选择、循环、随机四种语义,条件组件返回真或假,每个组件执行后,都向父组件汇报真或假,直至进入某个有时间的行为组件,开始执行该行为。
2.选择行为后有持续和中断,持续主要是指按时间持续,行为中断是指特定规则满足中断。
3.行为退出后会对父组件汇报真或假,父组件再层层回溯,直到找到下一个执行行为,或回到根组件,如此往复执行。
4.行为组件是阻塞的,更符合游戏追求效率的特点,不会导致行为的频繁切换。
AOI服务,玩家的视野一般远小于场景的大小,因此对于场景中的绝大部分消息,进行简单的全场景广播是没有必要而且无法承受的。当有消息需要发送时,确定该消息需要通知的玩家列表就需要AOI模块。本实施例中使用的是基于格子的AOI服务,其方法是将整个地图划分为若干个等大的格子,每个格子负责维护一个对象列表,指向所有在这个格子范围内的对象,然后在这个数据结构的基础上来触发各种AOI事件。
在本实施例中,参照图1,所述系统还包括聊天服务器、寻路服务器、副本组队服务器。
聊天服务是网游的基本服务之一。在本实施例中,聊天服务是与场景服务分离的,通过一个独立的服务器来进行。聊天服务器会维护一份所有在线用户的数据,通过这些数据与连接服务器通讯,来实现玩家之间的即时通讯。
副本组队服务器是后端服务器集群中负责全局管理副本全生命周期和组队相关操作的功能服务器。
根据本发明的另一实施例,提供一种大规模分布式游戏服务器系统的实现方法,参照图3,所述系统包括前端服务器和后端服务器,其中:
配置前端服务器用于执行以下步骤:
A、承载客户端请求的连接,
B、维护客户端和服务端之间的会话信息,
C、把客户端请求转发到后端服务器,
D、把后端服务器需要广播的消息或响应发送到客户端;
并且配置后端服务器用于执行以下步骤:
E、处理业务逻辑,包括远程过程调用和前端服务器请求的逻辑,
F、把消息推送回前端服务器或者将对客户端请求的响应发送到前端服务器。
所述客户端和服务端之间的会话信息包括用户的登陆状态、用户的基本信息以及客户端和服务端之间的连接信息。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可作出种种的等同变形或替换,这些等同的变型或替换均包含在本申请权利要求所限定的范围内。
除非一个必需的步骤需要由前面步骤所产生的输入,否则本文描述的步骤的特定顺序仅用于示例性说明,而非限制。
Claims (8)
1.一种大规模分布式游戏服务器系统,其特征在于,包括网关服务器、验证服务器、连接服务器以及场景服务器,其中:
所述网关服务器用于为用户提供统一的连接入口,并为用户分配验证服务器和连接服务器;所述验证服务器用于提供远程调用接口供其它服务器调用,以进行用户的注册和验证;
所述连接服务器用于在客户端和服务端之间建立以及维护长连接,并中转客户端和服务端之间的消息;
所述场景服务器用于处理游戏场景中的游戏逻辑,同时为其他服务器提供操纵场景数据的接口。
2.根据权利要求1所述的大规模分布式游戏服务器系统,其特征在于,通过一个抽象的会话来维护所述客户端和服务端之间的长连接。
3.根据权利要求1所述的大规模分布式游戏服务器系统,其特征在于,其中每一所述场景服务器对应每一场景。
4.根据权利要求1所述的大规模分布式游戏服务器系统,其特征在于,所述游戏逻辑包括实体管理、消息服务、人工智能服务以及感兴趣区域服务。
5.根据权利要求1所述的大规模分布式游戏服务器系统,其特征在于,所述系统还包括聊天服务器、寻路服务器和副本组队服务器,其中:
所述聊天服务器用于通过所述连接服务器实现不同用户之间的即时通讯;
所述寻路服务器用于实现游戏场景中的寻路服务;
所述副本组队服务器用于全局管理副本全生命周期和组队相关操作。
6.根据权利要求5所述的大规模分布式游戏服务器系统,其特征在于,所述寻路服务器能够根据需要并行扩展。
7.一种大规模分布式游戏服务器系统的实现方法,所述系统包括前端服务器和后端服务器,其特征在于,
配置前端服务器用于执行以下步骤:
A、承载客户端请求的连接,
B、维护客户端和服务端之间的会话信息,
C、把客户端请求转发到后端服务器,
D、把后端服务器需要广播的消息或响应发送到客户端;
并且配置后端服务器用于执行以下步骤:
E、处理业务逻辑,包括远程过程调用和前端服务器请求的逻辑,
F、把消息推送回前端服务器或者将对客户端请求的响应发送到前端服务器。
8.根据权利要求7所述的大规模分布式游戏服务器系统的实现方法,其特征在于,所述客户端和服务端之间的会话信息包括用户的登陆状态、用户的基本信息以及客户端和服务端之间的连接信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510911937.9A CN105472003A (zh) | 2015-12-11 | 2015-12-11 | 一种大规模分布式游戏服务器系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510911937.9A CN105472003A (zh) | 2015-12-11 | 2015-12-11 | 一种大规模分布式游戏服务器系统及其实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105472003A true CN105472003A (zh) | 2016-04-06 |
Family
ID=55609266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510911937.9A Pending CN105472003A (zh) | 2015-12-11 | 2015-12-11 | 一种大规模分布式游戏服务器系统及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105472003A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105872098A (zh) * | 2016-06-03 | 2016-08-17 | 腾讯科技(深圳)有限公司 | 数据处理方法、负载均衡器和交互式应用服务器及系统 |
CN106453223A (zh) * | 2016-07-15 | 2017-02-22 | 珠海金山网络游戏科技有限公司 | 一种无缝世界游戏服务器系统 |
CN107243156A (zh) * | 2017-06-30 | 2017-10-13 | 珠海金山网络游戏科技有限公司 | 一种大型分布式网络游戏服务器系统 |
CN107508847A (zh) * | 2016-06-14 | 2017-12-22 | 阿里巴巴集团控股有限公司 | 一种连接建立方法、装置和设备 |
CN108900575A (zh) * | 2018-06-06 | 2018-11-27 | 深圳蓝贝科技有限公司 | 基于移动终端的长连接分级通信方法和系统 |
CN109621430A (zh) * | 2018-12-12 | 2019-04-16 | 网易(杭州)网络有限公司 | 游戏服务端系统、游戏控制方法、装置、介质及电子设备 |
CN113220486A (zh) * | 2021-05-27 | 2021-08-06 | 中国工商银行股份有限公司 | 前后端分离的分布式系统及其服务调用方法、介质和产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266633A (zh) * | 2006-11-29 | 2008-09-17 | 优万科技(北京)有限公司 | 无缝超大规模虚拟游戏世界平台 |
CN102104600A (zh) * | 2011-01-11 | 2011-06-22 | 广州懒游网络技术有限公司 | 分布插件式游戏服务器平台及其协同工作方法 |
US20120297051A1 (en) * | 2011-05-17 | 2012-11-22 | Verizon Patent And Licensing, Inc. | P2p activity detection and management |
-
2015
- 2015-12-11 CN CN201510911937.9A patent/CN105472003A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266633A (zh) * | 2006-11-29 | 2008-09-17 | 优万科技(北京)有限公司 | 无缝超大规模虚拟游戏世界平台 |
CN102104600A (zh) * | 2011-01-11 | 2011-06-22 | 广州懒游网络技术有限公司 | 分布插件式游戏服务器平台及其协同工作方法 |
US20120297051A1 (en) * | 2011-05-17 | 2012-11-22 | Verizon Patent And Licensing, Inc. | P2p activity detection and management |
Non-Patent Citations (2)
Title |
---|
NORTH_EAGLE: "pomelo日记", 《CSDN博客》 * |
XY 等: "pomelo官方文档", 《HTTPS://GITHUB.COM/NETEASE/POMELO/WIKI》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105872098A (zh) * | 2016-06-03 | 2016-08-17 | 腾讯科技(深圳)有限公司 | 数据处理方法、负载均衡器和交互式应用服务器及系统 |
CN105872098B (zh) * | 2016-06-03 | 2019-04-26 | 腾讯科技(深圳)有限公司 | 数据处理方法、负载均衡器和交互式应用服务器及系统 |
CN107508847A (zh) * | 2016-06-14 | 2017-12-22 | 阿里巴巴集团控股有限公司 | 一种连接建立方法、装置和设备 |
CN106453223A (zh) * | 2016-07-15 | 2017-02-22 | 珠海金山网络游戏科技有限公司 | 一种无缝世界游戏服务器系统 |
CN106453223B (zh) * | 2016-07-15 | 2020-03-31 | 珠海金山网络游戏科技有限公司 | 一种无缝世界游戏服务器系统 |
CN107243156A (zh) * | 2017-06-30 | 2017-10-13 | 珠海金山网络游戏科技有限公司 | 一种大型分布式网络游戏服务器系统 |
CN108900575A (zh) * | 2018-06-06 | 2018-11-27 | 深圳蓝贝科技有限公司 | 基于移动终端的长连接分级通信方法和系统 |
CN108900575B (zh) * | 2018-06-06 | 2021-07-20 | 深圳蓝贝科技有限公司 | 基于移动终端的长连接分级通信方法和系统 |
CN109621430A (zh) * | 2018-12-12 | 2019-04-16 | 网易(杭州)网络有限公司 | 游戏服务端系统、游戏控制方法、装置、介质及电子设备 |
CN113220486A (zh) * | 2021-05-27 | 2021-08-06 | 中国工商银行股份有限公司 | 前后端分离的分布式系统及其服务调用方法、介质和产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105472003A (zh) | 一种大规模分布式游戏服务器系统及其实现方法 | |
Fujimoto | Distributed simulation systems | |
CN111813570A (zh) | 一种电力物联网的事件驱动型消息交互方法 | |
CN109325008A (zh) | 面向消息中间件的跨域数据同步方法与系统 | |
Huang et al. | Enabling DNN acceleration with data and model parallelization over ubiquitous end devices | |
CN103646134B (zh) | 一种面向服务的网络化仿真系统动态生成方法 | |
CN115115329A (zh) | 一种面向智能生产线的制造中间件及云制造架构 | |
Chen et al. | Analysis of augmented reality application based on cloud computing | |
CN114861379A (zh) | 一种基于lvc仿真的军事训练系统 | |
CN114650320B (zh) | 任务调度方法、装置、存储介质及电子设备 | |
US20060230109A1 (en) | Mediator-based recovery mechanism for multi-agent system | |
CN104219404A (zh) | 通信网络应急预案演练方法、系统与服务器 | |
CN116456496B (zh) | 资源调度的方法、存储介质及电子设备 | |
CN114884830B (zh) | 基于广域网的分布式并行仿真推演系统 | |
Nagato et al. | Distributed key-value storage for edge computing and its explicit data distribution method | |
CN113191733A (zh) | 一种基于互联网的项目多方协同管理系统及方法 | |
Carrero et al. | A reusable component-based model for WSN storage simulation | |
Makarov et al. | Supercomputer simulation of social processes: New technologies | |
CN116737351A (zh) | 图像处理系统运行管理方法、装置、存储介质及电子设备 | |
CN114996246A (zh) | 一种基于NiFi组件的表多个字段校验的数据清洗方法 | |
Bouras et al. | A framework model for DVEs using SIMUL8 | |
KR20080006818A (ko) | 게임서버의 부하를 리포트하는 시스템 및 방법 | |
Rueda et al. | A peer-to-peer platform for simulating distributed virtual environments | |
Carbone et al. | Towards highly available complex event processing deployments in the cloud | |
CN113760836B (zh) | 一种宽表计算方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160406 |
|
RJ01 | Rejection of invention patent application after publication |