一种大规模分布式游戏服务器系统及其实现方法

文档序号:9711572阅读:736来源:国知局
一种大规模分布式游戏服务器系统及其实现方法
【技术领域】
[0001]本发明涉及移动通信领域,特别涉及一种大规模分布式游戏服务器系统及其实现方法。
【背景技术】
[0002]游戏服务器是蜘蛛网式的架构,每个进程都有各自的职责,这些进程的交织在一起共同完成一件任务。这些需求也决定了游戏服务器开发的难度。传统的网络游戏服务器框架,要么无分布式结构,要么只支持比较简单的分布式结构。
[0003]如果无分布式结构,会造成实时性保证出现很大的问题。对实时游戏服务器来说,常见的实时性很高的任务有:实时Tick,实时游戏的服务端一般都需要一个定时tick来执行定时任务,为了游戏的实时性,一般要求这个tick时间在100ms之内;广播,由于玩家在游戏里的行动要实时地通知场景中的其它玩家,必须通过广播的模式实时发送。游戏中广播的代价是非常大的。玩家的输入与输出是不对等的,玩家自己简单地动一下,就需要将这个消息实时推送给所有看到这个玩家的其他玩家。如果人数达到很密集的程度,则广播的频度将呈平方级增长,这足以把任何单个服务器撑爆。
[0004]如果只支持简单分布式。也会遇到许多的难点:1、多进程服务器的管理,通常的游戏服务器要由很多进程共同去完成任务。当这些进程交织在一起的时候,多进程的管理并不那么容易。如果没有统一的抽象与管理,光把这些开发环境的进程启动起来就是非常复杂的工作,进程的启动与重启就将严重影响开发效率。重量级的进程消耗大量的机器资源,普通的开发机支撑不了那么多进程,可能一个人的开发环境就需要多台机器。多进程间的调试并不容易,发现一个bug就要跨好几个进程;2、远程过程调用,远程过程调用的解决方案已经有许多年的历史了,但远程过程调用在分布式开发效率上仍然没有明显提升。在程序中使用生成的源码如果发生接口改动,又需要重新修改描述文件,重新生成存根接口。对于接口不稳定的开发环境,这种方式对开发效率影响较大;3、分布式事务,尽管尽量把逻辑放在一个进程里处理,但分布式事务仍然是不可避免的;4、负载均衡,由于游戏服务器的有状态性,很多请求需要通过特定的路由规则导到某台服务器;对于有些无状态的服务器,则可以把请求路由到负载最低的服务器。

【发明内容】

[0005]本发明的目的在于克服现有技术问题的缺陷,提供一种大规模分布式游戏服务器系统及其实现方法,用于解决游戏服务器开发中的难点,使得游戏服务器的开发变得简单。
[0006]根据本发明的一个方面,提供一种大规模分布式游戏服务器系统,包括网关服务器、验证服务器、连接服务器以及场景服务器,其中:
所述网关服务器用于为用户提供统一的连接入口,并为用户分配验证服务器和连接服务器;所述验证服务器用于提供远程调用接口供其它服务器调用,以进行用户的注册和验证; 所述连接服务器用于在客户端和服务端之间建立以及维护长连接,并中转客户端和服务端之间的消息;
所述场景服务器用于处理游戏场景中的游戏逻辑,同时为其他服务器提供操纵场景数据的接口。
[0007]优选地,通过一个抽象的会话来维护所述客户端和服务端之间的长连接。
[0008]优选地,其中每一所述场景服务器对应每一场景。
[0009]优选地,所述游戏逻辑包括实体管理、消息服务、人工智能服务以及感兴趣区域服务。
[0010]优选地,所述系统还包括聊天服务器、寻路服务器和副本组队服务器,其中:
所述聊天服务器用于通过所述连接服务器实现不同用户之间的即时通讯;
所述寻路服务器用于实现游戏场景中的寻路服务;
所述副本组队服务器用于全局管理副本全生命周期和组队相关操作。
[0011]优选地,所述寻路服务器能够根据需要并行扩展。
[0012]根据本发明的另一方面,提供一种大规模分布式游戏服务器系统的实现方法,所述系统包括前端服务器和后端服务器,其中:
配置前端服务器用于执行以下步骤:
A、承载客户端请求的连接,
B、维护客户端和服务端之间的会话信息,
C、把客户端请求转发到后端服务器,
D、把后端服务器需要广播的消息或响应发送到客户端;
并且配置后端服务器用于执行以下步骤:
E、处理业务逻辑,包括远程过程调用和前端服务器请求的逻辑,
F、把消息推送回前端服务器或者将对客户端请求的响应发送到前端服务器。
[0013]优选地,所述客户端和服务端之间的会话信息包括用户的登陆状态、用户的基本信息以及客户端和服务端之间的连接信息。
[0014]本发明的有益效果是:
本发明设计的大规模分布式服务器系统及其实现方法实现了高性能、可伸缩、轻量级游戏服务器框架,解决了游戏服务器开发中的难点,使得游戏服务器的开发变得简单,并且具有如下优点:1、开发模型快速、易上手,基于约定优先于配置的原则,让代码达到最大的简化;2、系统的可伸缩性和可扩展性好,本发明在服务器扩展和应用扩展上非常方便;3、本发明设计的系统为轻量级,虽然是分布式架构,但启动非常迅速,占用资源少。
【附图说明】
[0015]下面结合附图和实例对本发明作进一步说明:
图1是根据本发明一实施例的一种大规模分布式游戏服务器系统模块框图;
图2是根据本发明一实施例中的场景服务器的功能模块框图;
图3是根据本发明另一实施例的一种大规模分布式游戏服务器系统的实现方法的功能模块框图。
【具体实施方式】
[0016]根据本发明的一个实施例,参考图1,提供了一种大规模分布式游戏服务器系统,系统包括:网关服务器、验证服务器、连接服务器以及场景服务器。
[0017]网关服务器的主要作用是为用户提供一个统一的各种连接入口,并负责用户验证和连接服务器的分配。与连接服务器不同,本实施例中只有一台网关服务器,网关服务器会向所有客户端暴露一个固定的连接接口,当用户登录时,会首先连接网关服务器,完成验证,并获得由网关服务器分配的对应连接服务器的信息。之后,客户端会断开与网关服务器的连接,通过获取的信息连接对应的连接服务器,获取对应的服务。
[0018]验证服务器负责用户注册和验证。作为用户验证的统一入口,提供远程调用接口供其他服务器调用,来进行用户的验证。验证服务器的主要作用是屏蔽认证验证的细节,为其他服务器提供统一的验证接口。
[0019]在网络游戏中客户端与服务端建立的都是长连接,而长连接本身是需要一定的资源来维持的。在本实施例中,可使用各种连接协议在客户端和服务器之间建立连接。而连接服务器就是用来维护这些连接,并中转客户端和服务端之间的消息。在本实施例中,客户端和服务端的连接状态是通过一个抽象的会话来维护的,会话是一个客户端在服务端的标识,用来维护用户的登录状态、用户的基本信息以及用户的各种连接信息。
[0020]在网络游戏中,出于性能和负载的考量,大的游戏世界总是会被分成多个区域,这些不同区域就是场景。在本实施例中,一张游戏地图就是一个游戏场景,与一台独立的场景服务器对应。场景是构成本实施例游戏世界的基本单位,不能进行分割和简单的并行扩展。场景服务器负责维护场景中所有实体,并驱动实体AI(Artificial Intelligence,人工智能)运行游戏逻辑。
[0021]场景服务器负责处理游戏中的几乎所有逻辑,同时为其他服务器提供操纵场景数据的接口。在本实施例中,虽然场景本身不能分割,但可以通过加入新的游戏场景的方法来分散用户,从而提高游戏服务器总的负载量。而一些与场景相关的服务也可以通过独立运行的方式进行水平扩展。
[0022]在本实施例中,场景服务负责管理游戏中所有实体和整个游戏世界。而出于安全性和一致性等方面的考虑,所有的游戏逻辑验
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1