CN109714328B - 游戏集群的容量调整方法和装置 - Google Patents
游戏集群的容量调整方法和装置 Download PDFInfo
- Publication number
- CN109714328B CN109714328B CN201811578729.1A CN201811578729A CN109714328B CN 109714328 B CN109714328 B CN 109714328B CN 201811578729 A CN201811578729 A CN 201811578729A CN 109714328 B CN109714328 B CN 109714328B
- Authority
- CN
- China
- Prior art keywords
- server
- game
- information
- message
- cluster
- 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.)
- Active
Links
Images
Abstract
本发明提供一种游戏集群的容量调整方法和装置,该集群包括:用于提供多种游戏服务的多个服务器,其中,多种游戏服务中的每种服务由至少一个服务器提供,第一服务器接收控制平台发送的启动消息,根据启动消息进行启动,第一服务器与关联的第二服务器互相发现,并接收控制平台发送的激活请求,根据激活请求向第二服务器发送激活消息,激活消息中包括第一服务器的标识以及第一服务器的游戏进程的信息。从而实现了在线增加服务器,不影响集群中已有的业务。
Description
技术领域
本发明涉及游戏领域,尤其涉及一种游戏集群的容量调整方法和装置。
背景技术
目前,随着智能手机的普及,网络游戏得到了飞速的发展,目前很多网络游戏都可以运行在手机上,因此也称为手游。现有的网络游戏大致分为:竞速类型、射击类型、策略类型和动作角色扮演类型等。
全球同服为现有游戏的一种趋势,所谓的全球同服只是给玩家的感觉是只有一台服务器,而非真的只有一台服务器。全球通服使得玩家之间不受大区限制,玩家可以自由组队游戏,提高玩家的游戏体验,这类游戏例如,dota2,王者荣耀,第五人格等。全球同服的一个最大难点在于,玩家人数未知,玩家人数过多时,可能会导致服务器的负载过重。现有技术中,在玩家人数过多时,增加机器进行扩容,分摊服务器负载。
但是,现有技术中无论是扩容还是减容,均需要在停服时进行,可能会导致当前玩家的游戏中断,用户体验不好。
发明内容
本发明提供一种游戏集群的容量调整方法和装置,能够在线增减服务器,不影响集群中已有的业务。
本发明第一方面提供一种游戏集群的容量调整方法,所述集群包括:用于提供多种游戏服务的多个服务器,其中,所述多种游戏服务中的每种服务由至少一个服务器提供;所述方法包括:
第一服务器接收控制平台发送的启动消息,所述第一服务器属于所述集群;
所述第一服务器根据所述启动消息进行启动;
所述第一服务器与关联的第二服务器互相发现,所述第二服务器属于所述集群;
所述第一服务器接收所述控制平台发送的激活请求;
所述第一服务器根据所述激活请求向所述第二服务器发送激活消息,所述激活消息中包括所述第一服务器的标识以及所述第一服务器的游戏进程的信息。
可选的,所述第一服务器与所述集群中与所述第一服务器关联的第二服务器互相发现,包括:
所述第一服务器向所述第二服务器发送发现消息,所述发现消息中包括所述第一服务器的标识和所述第一服务器提供的服务的类型;
所述第一服务器接收所述第二服务器发送的发现响应消息,所述发现响应消息中包括第二服务器的标识以及所述第二服务器的游戏进程的信息;
所述第一服务器与所述第二服务器建立心跳连接。
可选的,还包括:
所述第一服务器接收所述控制平台发送的解绑指令;
所述第一服务器根据所述解绑指令,向所述第二服务器发送解绑消息,所述解绑消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息。
可选的,还包括:
所述第一服务器向所述第二服务器发送心跳检测消息;
如果所述第一服务器在预设时间内没有接收到所述第二服务器发送的所述心跳检测消息对应的响应消息时,所述第一服务器确定所述第二服务器故障;
所述第一服务器的管理进程和游戏进程删除所述第一服务器的信息和所述第一服务器的游戏进程的信息。
可选的,所述多个服务器包括匹配服务器、战斗服务器和游戏服务器。
本发明第二方面提供一种游戏集群的容量调整方法,所述集群包括:用于提供多种游戏服务的多个服务器,其中,所述多种游戏服务中的每种服务由至少一个服务器提供,所述方法包括:
第二服务器与第一服务器互相发现,所述第二服务器和所述第一服务器均属于所述集群,所述第一服务器为新启动的服务器;
所述第二服务器接收所述第一服务器发送的激活消息,所述激活消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息;
所述第二服务器的管理进程和游戏进程保存所述第一服务器的标识和所述第一服务器的游戏进程的信息。
可选的,所述第二服务器与第一服务器互相发现,包括:
所述第二服务器接收所述第一服务器发送的发现消息,所述发现消息中包括所述第一服务器的标识和所述第一服务器提供的服务的类型;
所述第二服务器向所述第一服务器发送发现响应消息,所述发现响应消息中包括所述第二服务器的标识和所述第二服务器的游戏进程的信息;
所述第二服务器与所述第一服务器建立心跳连接。
可选的,所述第二服务器向所述第一服务器发送发现响应消息之前,还包括:
所述第二服务器判断是否保存有所述第一服务器的状态信息;
如果所述第二服务器已保存所述第一服务器的状态信息,且所述第一服务器的状态信息指示所述第一服务器的状态为激活状态,则将第一指示信息携带在所述发现响应消息中,所述第一指示信息用于指示所述第一服务器已激活。
可选的,还包括:
所述第二服务器接收所述第一服务器发送的解绑消息,所述解绑消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息;
所述第二服务器的管理进程和游戏进程删除所述第一服务器的标识和所述第一服务器的游戏进程的信息。
可选的,还包括:
所述第二服务器向所述第一服务器发送心跳检测消息;
如果所述第二服务器在预设时间内没有接收到所述第一服务器发送的所述心跳检测消息对应的响应消息,所述第二服务器确定所述第一服务器故障;
所述第二服务器的管理进程和游戏进程删除所述第一服务器的信息和所述第一服务器的游戏进程的信息。
本发明第三方面提供一种第一服务器,所述第一服务器属于游戏集群,所述集群包括:用于提供多种游戏服务的多个服务器,其中,所述多种游戏服务中的每种服务由至少一个服务器提供;包括:
接收模块,用于接收控制平台发送的启动消息;
启动模块,用于根据所述启动消息进行启动;
发现模块,用于与所述第一服务器关联的第二服务器互相发现,所述第二服务器属于所述集群;
所述接收模块,还用于接收所述控制平台发送的激活请求;
发送模块,用于根据所述激活请求向所述第二服务器发送激活消息,所述激活消息中包括所述第一服务器的标识以及所述第一服务器的游戏进程的信息。
可选的,所述发现模块具体用于:
向所述第二服务器发送发现消息,所述发现消息中包括所述第一服务器的标识和所述第一服务器提供的服务的类型;
接收所述第二服务器发送的发现响应消息,所述发现响应消息中包括第二服务器的标识以及所述第二服务器的游戏进程的信息;
与所述第二服务器建立心跳连接。
可选的,所述接收模块还用于:接收所述控制平台发送的解绑指令;
所述发送模块,还用于根据所述解绑指令,向所述第二服务器发送解绑消息,所述解绑消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息。
可选的,所述发送模块还用于:向所述第二服务器发送心跳检测消息;
还包括:
确定模块,用于当所述接收模块在预设时间内没有接收到所述第二服务器发送的所述心跳检测消息对应的响应消息时,确定所述第二服务器故障;
删除模块,用于通过管理进程和游戏进程删除所述第一服务器的信息和所述第一服务器的游戏进程的信息。
可选的,所述多个服务器包括匹配服务器、战斗服务器和游戏服务器。
本发明第四方面提供一种第二服务器,所述第二服务器属于游戏集群,所述集群包括:用于提供多种游戏服务的多个服务器,其中,所述多种游戏服务中的每种服务由至少一个服务器提供,包括:
发现模块,用于与第一服务器互相发现,所述第一服务器属于所述集群,所述第一服务器为新启动的服务器;
接收模块,用于接收所述第一服务器发送的激活消息,所述激活消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息;
保存模块,用于通过管理进程和游戏进程保存所述第一服务器的标识和所述第一服务器的游戏进程的信息。
可选的,所述发现模块具体用于:
接收所述第一服务器发送的发现消息,所述发现消息中包括所述第一服务器的标识和所述第一服务器提供的服务的类型;
向所述第一服务器发送发现响应消息,所述发现响应消息中包括所述第二服务器的标识和所述第二服务器的游戏进程的信息;
与所述第一服务器建立心跳连接。
可选的,还包括:
判断模块,用于在所述发现模块向所述第一服务器发送发现响应消息之前,判断是否保存有所述第一服务器的状态信息;
发送模块,用于当所述第二服务器已保存所述第一服务器的状态信息,且所述第一服务器的状态信息指示所述第一服务器的状态为激活状态时,将第一指示信息携带在所述发现响应消息中,所述第一指示信息用于指示所述第一服务器已激活。
可选的,所述接收模块还用于:接收所述第一服务器发送的解绑消息,所述解绑消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息;
所述第二服务器还包括:
删除模块,用于通过管理进程和游戏进程删除所述第一服务器的标识和所述第一服务器的游戏进程的信息。
发送模块,用于向所述第一服务器发送心跳检测消息;
确定模块,用于当所述接收模块在预设时间内没有接收到所述第一服务器发送的所述心跳检测消息对应的响应消息时,确定所述第一服务器故障;
删除模块,用于通过管理进程和游戏进程删除所述第一服务器的信息和所述第一服务器的游戏进程的信息。
本发明第五方面提供一种服务器,包括:处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述服务器执行如本发明第一方面或各可选方式所述的方法。
本发明第六方面提供一种服务器,包括:处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述服务器执行如本发明第二方面或各可选方式所述的方法。
本发明第七方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如本发明第一方面或各可选方式所述的方法。
本发明第八方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如本发明第二方面或各可选方式所述的方法。
本发明提供的游戏集群的容量调整方法和装置,该集群包括:用于提供多种游戏服务的多个服务器,其中,多种游戏服务中的每种服务由至少一个服务器提供,第一服务器接收控制平台发送的启动消息,根据启动消息进行启动,第一服务器与关联的第二服务器互相发现,并接收控制平台发送的激活请求,根据激活请求向第二服务器发送激活消息,激活消息中包括第一服务器的标识以及第一服务器的游戏进程的信息。从而实现了在线增加服务器,不影响集群中已有的业务。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本发明提供的游戏集群的架构示意图;
图2为本发明实施例一提供的游戏集群的容量调整方法的流程图;
图3为本发明实施例二提供的游戏集群的容量调整方法的流程图;
图4为本发明实施例三提供的游戏集群的容量调整方法的流程图;
图5为本发明实施例四提供的游戏集群的容量调整方法的信令流程图;
图6为本发明实施例五提供的游戏集群的容量调整方法的信令流程图;
图7为本发明实施例六提供的游戏集群的容量调整方法的信令流程图;
图8为本发明实施例七提供的第一服务器的结构示意图;
图9为本发明实施例八提供的第二服务器的结构示意图;
图10为本发明实施例九提供的服务器的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本发明提供一种游戏集群的容量调整方法,应用在游戏集群中,该集群包括:用于提供多种游戏服务的多个服务器,其中,该多种游戏服务中的每种服务由至少一个服务器提供,每个服务器包括一个管理进程和多个游戏进程。
该多种服务包括游戏服务、匹配服务、战斗服务等。游戏服务取决于游戏的具体需求,还可能包含录像服务、观战服务、房间服务等。每种服务由至少一个服务器提供,例如,匹配服务由3个服务器提供,战斗服务由10个服务器提供。
图1为本发明提供的游戏集群的架构示意图,如图1所示,该集群包括:游戏服务器、匹配服务器、转发服务器和战斗服务器,游戏服务器、匹配服务器以及战斗服务器分别均通过转发服务器与其他服务器通信。
其中,每个服务器(包括游戏服务器、匹配服务器、转发服务器或战斗服务器)可以包括一个或者多个物理设备组成。物理设备为具有数据处理功能以及数据存储功能的电子设备,该物理设备上运行有游戏进程和/或管理进程。当物理设备上运行有游戏进程是,该物理设备能够单独提供游戏服务。当物理设备上运行有管理进程时,该物理设备管理服务器的游戏进程。
游戏服务器用于控制游戏的业务逻辑,该业务逻辑包括游戏的登录、好友管理、领取奖励、商城购物、聊天等等。
战斗服务器用于控制游戏的战斗逻辑,例如,打怪、射击、寻路等。
匹配服务器用于根据游戏服务器的请求为玩家分配战斗服务器。
转发服务器用于对集群中的数据进行集中转发,例如,将某个服务器的消息广播给集群中的其他服务器,该转发服务器可以为Hub,Hub为一个多端口的转发器。
该集群还可以包括数据库,数据库用于存储游戏的相关数据,集群中的其他服务器都能够向数据库中存储数据,也可以从数据库中读取数据。
图1只是举例说明,游戏服务器、匹配服务器、转发服务器和战斗服务器的数量可以是多个,该集群还可以包括更多服务类型的服务器。提供不同服务的服务器的个数由玩家人数决定,例如一个游戏服务器可以承载十万玩家,而一个战斗服务器可以承载五千万玩家同时战斗,那么二十万玩家在线,至少需要两个游戏服务器和40个战斗服务器。
本发明中,每个服务器包括一个管理进程(也称为游戏管理进程,gamemanager)和多个游戏(game)进程。管理进程可以位于该服务器包括的多个物理设备内的任意一个物理设备上,该多个游戏进程分散在该服务器包括的多个物理设备中的每个物理设备上。
管理进程的功能包括:管理服务器内的所有游戏进程,游戏进程的启动、崩溃由管理进程发现与通知。本服务器的管理进程的基本信息、所有游戏进程的进程信息都是由本服务器的管理进程通知到另一个服务器的管理进程,另一个服务器的管理进程再将接收到的游戏进程的信息下发给自己的游戏进程。
游戏进程的功能包括:处理各种业务逻辑,例如,游戏服务器的游戏进程的作用为:处理除了匹配、组队、战斗外的各种业务逻辑、分配匹配服务器。匹配服务器的游戏进程(也称为匹配进程)的作用为:为本次战斗分配战斗服务器。战斗服务器的游戏进程(也称为战斗进程)的作用为:执行具体的战斗逻辑。
每个服务器的管理进程记录本服务器的游戏进程的信息,当需要同步的数据发生变化时,会同步给本服务器的游戏进程。本服务器的游戏进程启动(或崩溃后启动)会向本服务器的管理进程主动请求数据,从而保持数据的一致性。
下述实施例中涉及的服务器的信息包括服务器的标识,可选的,还可以包括服务器的版本等信息。游戏进程的信息包括游戏进程的编号,可选的,还可以包括游戏进程的版本等信息。
本发明中,各服务器的管理进程在启动时采用服务发现思路,在集群内广播该服务器的信息以及能够提供的服务的类型,服务的类型包括匹配服务、战斗服务、游戏服务等。这样,在全服启动后,每个服务器的管理进程可以获知集群内已有以的所有服务器的信息以及他们提供的服务的类型。
本发明中,每个服务器具有三种状态:激活状态、未激活状态和关机状态。激活状态与未激活状态的服务器都已连入集群内,互相建立好连接,激活状态的服务器可以直接为集群提供服务,而未激活状态的服务器不会被分配到任务。关机状态的服务器,则与集群脱离关系。
基于图1所示的游戏集群,图2为本发明实施例一提供的游戏集群的容量调整方法的流程图,如图2所示,本实施例提供的方法包括以下步骤:
步骤S101、第一服务器接收控制平台发送的启动消息。
第一服务器属于游戏集群,该第一服务器并不特指集群中的某一服务器,该第一服务器可以是集群内的任意一个服务器。
集群中的每台服务器都会有一个启动脚本,当需要增加一个服务器时,控制平台向该服务器发送启动消息。控制平台用于决定对集群进行扩容或者缩容,例如,控制平台还可以用于实时监测集群中各服务器的在线玩家数量。当监测到集群中的每个战斗服务器的玩家数量超过了各服务器能够承受的最大数量时,决定增加一台新的战斗服务器。
当第一服务器包括多个物理设备时,控制平台可以向第一服务器包括的每个物理设备均发送启动消息,控制平台也可以只向运行管理进程的物理设备发送启动消息,运行游戏进程的物理设备启动后,向第一服务器包括的其他物理设备发送启动消息。
步骤S102、第一服务器根据该启动消息进行启动。
当第一服务器包括多个物理设备时,每个物理设备上均预先配置有启动脚本,各物理设备接收到启动消息后,根据启动脚本启动设备。
步骤S103、第一服务器与关联的第二服务器互相发现。
第一服务器启动后,游戏集群中已经激活的服务器并不知道第一服务器的存在,第一服务器也不知道游戏集群中已经激活的服务器的处在,此时第一服务器与关联的第二服务器互相发现,以使第一服务器和第二服务器互相获知对方存在,该第二服务器属于该集群。
示例性的,第一服务器向第二服务器发送发现消息,第一服务器接收第二服务器发送的发现响应消息,第一服务器与第二服务器建立心跳连接。
该发现消息中携带第一服务器的标识和第一服务器提供的服务的类型。通过携带第一服务器的标识以通知第二服务器自己已经启动,第一服务器提供的服务的类型可以为匹配服务、游戏服务、战斗服务等。该发现消息中还可以包括其他信息,本实施例不对此进行限制。
该发现消息由第一服务器的管理进程发送,第一服务器的管理进程将发现消息发送给转发服务器,转发服务器会将发现消息广播给集群中的所有服务器。第二服务器的管理进程接收到该发现消息后,可以根据第一服务器提供的服务的类型确定该发现消息是否是自己需要的消息。
本实施例中与第一服务器关联的第二服务器是指需要第一服务器发送的消息的服务器,因此,第一服务器关联的第二服务器可能是一个或者多个。
例如,当第一服务器为匹配服务器时,与第一服务器关联的第二服务器包括游戏服务器和战斗服务器。当第一服务器为战斗服务器时,与第一服务器关联的第二服务器为匹配服务器。当第一服务器为游戏服务器时,与第一服务器关联的第二服务器为匹配服务器。
如果该发现消息为第二服务器需要的消息,则第二服务器的管理进程保存第一服务器的信息和第一服务器提供的服务的类型,并向第一服务器发送发现响应消息,发现响应消息中包括第二服务器的标识和第二服务器的游戏进程的信息。
第一服务器的管理进程接收到发现响应消息后,保存第二服务器的标识和第二服务器的游戏进程的信息。
心跳连接的建立可能由第一服务器的管理进程建立,也可能由第二服务器的管理进程建立,心跳连接由谁建立取决于第一服务器和第二服务器提供的业务的关系,例如,当第一服务器为匹配服务器,第二服务器为战斗服务器时,由匹配服务器的管理进程建立心跳连接。当第一服务器为匹配服务器,第二服务器为游戏服务器时,由游戏服务器的管理进程建立心跳连接。
在建立心跳连接后,由建立心跳连接的一方监控另一方的存在。例如,由第一服务器的管理进程建立了心跳连接,则第一服务器的管理进程周期性发送心跳检测消息,如果第一服务器的管理进程在预设时间内没有接收到第二服务器发送的心跳检测消息对应的响应消息时,确定第二服务器故障,删除第二服务器的信息和第二服务器的游戏进程的信息,从而快速将第二服务器隔离。
该预设时间可以通过定时器实现,第一服务器在发送心跳检测消息后开启定时器,如果在定时器超时后,没有接收到第二服务器返回的响应消息,则确定第二服务器故障。
第一服务器和第二服务器通过上述发现过程,互相获知对方的存在。
步骤S104、第一服务器接收控制平台发送的激活请求。
第一服务器启动后,虽然与集群连接,但仍处于非激活状态,非激活状态的第一服务器不能提供服务,必须对第一服务器激活后,第一服务器才能提供业务。
可选的,该激活请求中包括第一服务器的标识。控制平台可以在第一服务器启动后,立即向第一服务的管理进程发送激活请求,也可以在一段时间后发送激活请求。
步骤S105、第一服务器根据激活请求向第二服务器发送激活消息,激活消息中包括第一服务器的标识以及第一服务器的游戏进程的信息。
第一服务器的管理进程通过发送激活消息以将第一服务器激活,第二服务器的管理进程接收到激活消息后,将第一服务器的游戏进程的信息发送给第二服务器的游戏进程,从而将第一服务器添加到了集群,第一服务器可以开始提供服务了。新接入的业务可以由第一服务器执行,从而分担了集群的压力。
本实施例中,游戏集群中的第一服务器接收控制平台发送的启动消息,根据启动消息进行启动,并在启动后与关联的第二服务器互相发现,当需要激活时,控制平台向第一服务器发送激活请求,第一服务器根据激活请求向第二服务器发送激活消息,激活消息中包括第一服务器的标识以及第一服务器的游戏进程的信息。从而实现了在线增加服务器,不影响集群中已有的业务。
图3为本发明实施例二提供的游戏集群的容量调整方法的流程图,本实施例的方法可以单独执行,也可以在实施例一的基础上执行,如图3所示,本实施例提供的方法包括以下步骤:
步骤S201、第一服务器接收控制平台发送的解绑指令,
解绑指令用于指示第一服务器进行解绑,可选的,该解绑指令中包括第一服务器的标识。
当第一服务器出现异常时,控制平台向第一服务器发送解绑指令,快速将故障服务器隔离。或者,当控制平台监测到第一服务器的负载长时间较低,则可以解绑第一服务器,避免资源浪费。
步骤S202、第一服务器根据解绑指令,向第二服务器发送解绑消息,解绑消息中包括第一服务器的标识和第一服务器的游戏进程的信息。
解绑消息用于请求第二服务器对第一服务器进行解绑,第二服务器接收到解绑消息后,第二服务器的管理进程删除第一服务器的标识和第一服务器的游戏进程的信息,并通知第二服务器的游戏进程删除第一服务器的标识和第一服务器的游戏进程的信息。
可选的,对于由非故障引起的解绑操作,第一服务器可以在解绑之前,将第一服务器上的所有业务转移到其他服务器上。例如,对于新接入的业务分配给集群内提供相同服务的其他服务器,对于已有业务进行迁移,或者,等待已有业务结束后进行解绑。
对于由服务器故障引起的解绑操作,第一服务器可以在解绑之后,将第一服务器上的业务迁移到集群内提供相同服务的其他服务器上。
本实施例中,第一服务器接收控制平台发送的解绑指令,根据解绑指令向第二服务器发送解绑消息,解绑消息中包括第一服务器的标识和第一服务器的游戏进程的信息。从而能够在线将第一服务器解绑,不需要暂停服务。
图4为本发明实施例三提供的游戏集群的容量调整方法的流程图,本实施例从第二服务器的角度描述,如图4所示,本实施例提供的方法包括以下步骤:
步骤S301、第二服务器与第一服务器互相发现。
第一服务器为新启动的服务器,示例性的,第二服务器接收第一服务器发送的发现消息,第二服务器向所述第一服务器发送发现响应消息,第二服务器与第一服务器建立心跳连接。
该发现消息中包括第一服务器的标识和第一服务器提供的服务的类型,以告知第二服务器自己已经启动。第二服务器的管理进程接收到发现消息后,根据第一服务器提供的服务的类型,确定发现消息是自己需要的消息,则向第一服务器发送发现响应消息,发现响应消息中包括第二服务器的标识和第二服务器的游戏进程的信息。
第一服务器和第二服务器的发现过程参照实施例一的描述,这里不再赘述。
如果由第一服务器建立了心跳连接,可选的,第二服务器周期性向第一服务器发送心跳检测消息,如果第二服务器在预设时间内没有接收到第一服务器发送的心跳检测消息对应的响应消息,第二服务器确定第一服务器故障。第二服务器的管理进程和游戏进程删除第一服务器的信息和第一服务器的游戏进程的信息。
可选的,第二服务器向第一服务器发送发现响应消息之前,第二服务器判断是否保存有第一服务器的状态信息,如果第一服务器是在激活状态下由于异常关闭后重新启动,那么其他服务器上会保存有第一服务器的状态信息,且该状态信息为激活状态。
如果第二服务器已保存第一服务器的状态信息,且第一服务器的状态信息指示第一服务器的状态为激活状态,则将第一指示信息携带在发现响应消息中,第一指示信息用于指示第一服务器已激活。第一服务器接收到发现响应消息后,根据第一指示信息获知第一服务器之前已经被激活了,则第一服务器不需要控制平台的指示,可以自己决定向第二服务器发送激活消息。
如果第二服务器没有保存第一服务器的状态信息,说明第一服务器是新增的服务器,第二服务器向第一服务器发送发现响应消息,发现响应消息中不携带第一指示信息。
步骤S302、第二服务器接收第一服务器发送的激活消息,激活消息中包括第一服务器的标识和第一服务器的游戏进程的信息。
步骤S303、第二服务器的管理进程和游戏进程保存第一服务器的标识和第一服务器的游戏进程的信息。
第二服务器的管理进程接收到激活消息后,保存第一服务器的标识和第一服务器的游戏进程的信息,并将第一服务器的标识和第一服务器的游戏进程的信息发送给第二服务器的游戏进程进行保存。
本实施例中,第二服务器与第一服务器互相发现之后,第二服务器接收第一服务器发送的激活消息,激活消息中包括第一服务器的标识和第一服务器的游戏进程的信息,第二服务器的管理进程和游戏进程保存第一服务器的标识和第一服务器的游戏进程的信息,实现了在线增加服务器。
图5为本发明实施例四提供的游戏集群的容量调整方法的信令流程图,本实施例以匹配服务器的启动为例进行说明,如图5所示,本实施例提供的方法包括以下步骤:
步骤S401、匹配服务器的管理进程向游戏服务器的管理进程发送发现消息。
匹配服务器的管理进程根据控制平台发送的启动消息,向游戏服务器的管理进程发送发现消息。该发现消息中包括第一服务器的标识和第一服务器提供的服务的类型,本实施例中,第一服务器提供的服务的类型为匹配服务。
可以理解,集群中可能有很多个游戏服务器,则匹配服务器的管理进程需要向各游戏服务器的管理进程分别发送发现消息。
步骤S402、游戏服务器的管理进程向匹配服务器的管理进程发送发现响应消息。
发现响应消息中包括游戏服务器的标识和游戏服务器的游戏进程的信息。
步骤S403、游戏服务器的管理进程与匹配服务器的管理进程建立心跳连接,游戏服务器的管理进程通过心跳连接监控匹配服务器的存在。
由于游戏服务器需要获知匹配服务器的信息,所以游戏服务器的管理进程保存匹配服务器的标识和匹配服务器提供的服务的类型,并主动与匹配服务器的管理进程建立心跳连接。
步骤S404、匹配服务器的管理进程向战斗服务器的管理进程发送发现消息。
该发现消息中包括匹配服务器的标识和匹配服务器提供的服务的类型,本实施例中,匹配服务器提供的服务的类型为匹配服务。
可以理解,集群中可能有很多个战斗服务器,则匹配服务器的管理进程需要向各战斗服务器分别发送发现消息。
步骤S405、战斗服务器的管理进程向匹配服务器的管理进程发送发现响应消息。
发现响应消息中包括战斗服务器的标识和战斗服务器的游戏进程的信息。
步骤S406、匹配服务器的管理进程与战斗服务器的管理进程建立心跳连接,匹配服务器的管理进程通过心跳连接监控战斗服务器的存在。
战斗服务器的管理进程保存匹配服务器的标识和匹配服务器提供的服务的类型,匹配服务器的管理进程主动与战斗服务器的管理进程建立心跳连接。
图6为本发明实施例五提供的游戏集群的容量调整方法的信令流程图,本实施例以战斗服务器的激活为例进行说明,如图6所示,本实施例提供的方法包括以下步骤:
步骤S501、控制平台向战斗服务器的管理进程发送激活请求。
该激活请求用于指示激活该战斗服务器,可选的,该激活请求中包括战斗服务器的标识。
步骤S502、战斗服务器的管理进程向匹配服务器的管理进程发送激活消息。
战斗服务器的管理进程接收到激活指令后,向匹配服务器的管理进程发送激活消息,该激活消息中包括战斗服务器的标识以及战斗服务器的游戏进程的信息。
战斗服务器的标识和战斗服务器的游戏进程的标识组合形成全球集群内唯一的标识。对于战斗服务器来说,只有匹配服务器需要获知战斗服务器的信息,因此,战斗服务器的管理进程只需要向匹配服务器的管理进程发送激活消息。
可以理解,集群中可能有很多个匹配服务器,则战斗服务器的管理进程需要向各匹配服务器分别发送发现消息。
步骤S503、匹配服务器的管理进程保存战斗服务器的标识以及战斗服务器的游戏进程的信息。
步骤S504、匹配服务器的管理进程向匹配服务器的游戏进程发送更新消息。
该更新消息中包括战斗服务器的标识以及战斗服务器的游戏进程的信息,匹配服务器的游戏进程保存战斗服务器的标识以及战斗服务器的游戏进程的信息。
图7为本发明实施例六提供的游戏集群的容量调整方法的信令流程图,本实施例以战斗服务器的解绑为例进行说明,如图7所示,本实施例提供的方法包括以下步骤:
步骤S601、控制平台向战斗服务器的管理进程发送解绑指令。
解绑指令用于指示解绑该战斗服务器,可选的,该解绑指令中包括战斗服务器的标识。
步骤S602、战斗服务器的管理进程向匹配服器的管理进程发送解绑消息。
解绑消息中包括战斗服务器的标识和战斗服务器的游戏进程的信息。
步骤S603、匹配服务器的管理进程删除战斗服务器的标识和战斗服务器的游戏进程的信息。
步骤S604、匹配服务器的管理进程向匹配服务器的游戏进程发送更新消息。
更新消息中包括战斗服务器的标识和战斗服务器的游戏进程的信息,匹配服务器的游戏进程删除战斗服务器的标识和战斗服务器的游戏进程的信息。
图8为本发明实施例七提供的第一服务器的结构示意图,该第一服务器应用在游戏集群中,所述集群包括:用于提供多种服务的多个服务器,其中,所述多种服务中的每种服务由至少一个服务器提供,如图8所示,本实施例提供的第一服务器包括:
接收模块11,用于接收控制平台发送的启动消息;
启动模块12,用于根据所述启动消息进行启动;
发现模块13,用于与所述第一服务器关联的第二服务器互相发现,所述第二服务器属于所述集群;
所述接收模块11,还用于接收所述控制平台发送的激活请求;
发送模块14,用于根据所述激活请求向所述第二服务器发送激活消息,所述激活消息中包括所述第一服务器的标识以及所述第一服务器的游戏进程的信息。
可选的,所述发现模块13具体用于:
向所述第二服务器发送发现消息,所述发现消息中包括所述第一服务器的标识和所述第一服务器提供的服务的类型;
接收所述第二服务器发送的发现响应消息,所述发现响应消息中包括第二服务器的标识以及所述第二服务器的游戏进程的信息;
与所述第二服务器建立心跳连接。
可选的,所述接收模块11还用于:接收所述控制平台发送的解绑指令;
所述发送模块14,还用于根据所述解绑指令,向所述第二服务器发送解绑消息,所述解绑消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息。
可选的,所述发送模块14还用于:向所述第二服务器发送心跳检测消息;
还包括:确定模块,用于当所述接收模块在预设时间内没有接收到所述第二服务器发送的所述心跳检测消息对应的响应消息时,确定所述第二服务器故障;
删除模块,用于通过管理进程和游戏进程删除所述第一服务器的信息和所述第一服务器的游戏进程的信息。
可选的,所述多个服务器包括匹配服务器、战斗服务器和游戏服务器。
本实施例提供的第一服务器,可用于执行上述方法实施例中第一服务器执行的方法步骤,具体实现方式和技术效果类似,这里不再赘述。
图9为本发明实施例八提供的第二服务器的结构示意图,该第二服务器应用在游戏集群中,所述集群包括:用于提供多种服务的多个服务器,其中,所述多种服务中的每种服务由至少一个服务器提供,如图9所示,本实施例提供的第二服务器包括:
发现模块21,用于与第一服务器互相发现,所述第一服务器属于所述集群,所述第一服务器为新启动的服务器;
接收模块22,用于接收所述第一服务器发送的激活消息,所述激活消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息;
保存模块23,用于通过管理进程和游戏进程保存所述第一服务器的标识和所述第一服务器的游戏进程的信息。
可选的,所述发现模块21具体用于:
接收所述第一服务器发送的发现消息,所述发现消息中包括所述第一服务器的标识和所述第一服务器提供的服务的类型;
向所述第一服务器发送发现响应消息,所述发现响应消息中包括所述第二服务器的标识和所述第二服务器的游戏进程的信息;
与所述第一服务器建立心跳连接。
可选的,还包括:
判断模块,用于在所述发现模块向所述第一服务器发送发现响应消息之前,判断是否保存有所述第一服务器的状态信息;
发送模块,还用于当所述第二服务器已保存所述第一服务器的状态信息,且所述第一服务器的状态信息指示所述第一服务器的状态为激活状态时,将第一指示信息携带在所述发现响应消息中,所述第一指示信息用于指示所述第一服务器已激活。
可选的,所述接收模块22还用于:接收所述第一服务器发送的解绑消息,所述解绑消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息;
所述第二服务器还包括:
删除模块,用于通过管理进程和游戏进程删除所述第一服务器的标识和所述第一服务器的游戏进程的信息。
可选的,所述第二服务器还包括:
发送模块,用于向所述第一服务器发送心跳检测消息;
确定模块,用于当所述接收模块在预设时间内没有接收到所述第一服务器发送的所述心跳检测消息对应的响应消息时,确定所述第一服务器故障;
删除模块,用于通过管理进程和游戏进程删除所述第一服务器的信息和所述第一服务器的游戏进程的信息。
本实施例提供的第二服务器,可用于执行上述方法实施例中第二服务器执行的方法步骤,具体实现方式和技术效果类似,这里不再赘述。
图10为本发明实施例九提供的服务器的结构示意图,如图10所示,本实施例提供的服务器包括处理器31、存储器32、收发器33,存储器32、和收发器33通过总线与处理器31连接并通信,所述存储器32用于存储指令,所述收发器33用于和其他设备通信,所述处理器31用于执行所述存储器32中存储的指令,以使所述服务器执行如上述方法实施例中第一服务器或者第二服务器执行的方法步骤,具体实施方式参照方法实施例的描述这里不再赘述。
本发明实施例十提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如上述方法实施例中第一服务器或者第二服务器执行的方法步骤,具体实施方式参照方法实施例的描述这里不再赘述。
应理解,上述实施例中,处理器可以是中央处理单元(英文:Central ProcessingUnit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital SignalProcessor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:RAM)、快闪存储器、硬盘或者固态硬盘。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (14)
1.一种游戏集群的容量调整方法,其特征在于,所述集群包括:用于提供多种游戏服务的多个服务器,其中,所述多种游戏服务中的每种服务由至少一个服务器提供;所述方法包括:
第一服务器接收控制平台发送的启动消息,所述第一服务器属于所述集群;
所述第一服务器根据所述启动消息进行启动;
所述第一服务器与第二服务器互相发现,所述第二服务器属于所述集群,且所述第二服务器与所述第一服务器相关联;
所述第一服务器接收所述控制平台发送的激活请求;
所述第一服务器根据所述激活请求向所述第二服务器发送激活消息,所述激活消息中包括所述第一服务器的标识以及所述第一服务器的游戏进程的信息;
所述第一服务器与第二服务器互相发现,包括:
所述第一服务器向所述集群中的所有服务器发送发现消息,所述发现消息中包括所述第一服务器的标识和所述第一服务器提供的服务的类型;
所述第一服务器接收所述第二服务器发送的发现响应消息,所述发现响应消息中包括第二服务器的标识以及所述第二服务器的游戏进程的信息,所述发现响应消息是所述第二服务器根据所述第一服务器提供的服务类型确定所述第二服务器与所述第一服务器相关联后发送的。
2.根据权利要求1所述的方法,其特征在于,所述第一服务器与第二服务器互相发现,还包括:
所述第一服务器与所述第二服务器建立心跳连接。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
所述第一服务器接收所述控制平台发送的解绑指令;
所述第一服务器根据所述解绑指令,向所述第二服务器发送解绑消息,所述解绑消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息。
4.根据权利要求2所述的方法,其特征在于,还包括:
所述第一服务器向所述第二服务器发送心跳检测消息;
如果所述第一服务器在预设时间内没有接收到所述第二服务器发送的所述心跳检测消息对应的响应消息时,所述第一服务器确定所述第二服务器故障;
所述第一服务器的管理进程和游戏进程删除所述第二服务器的信息和所述第二服务器的游戏进程的信息。
5.根据权利要求1所述的方法,其特征在于,所述多个服务器包括匹配服务器、战斗服务器和游戏服务器。
6.一种游戏集群的容量调整方法,其特征在于,所述集群包括:用于提供多种游戏服务的多个服务器,其中,所述多种游戏服务中的每种服务由至少一个服务器提供;所述方法包括:
第二服务器与第一服务器互相发现,所述第二服务器和所述第一服务器均属于所述集群,所述第二服务器与所述第一服务器相关联,所述第一服务器为新启动的服务器;
所述第二服务器接收所述第一服务器发送的激活消息,所述激活消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息;
所述第二服务器的管理进程和游戏进程保存所述第一服务器的标识和所述第一服务器的游戏进程的信息;
所述第二服务器与第一服务器互相发现,包括:
所述第二服务器接收所述第一服务器向所述集群中的所有服务器发送的发现消息,所述发现消息中包括所述第一服务器的标识和所述第一服务器提供的服务的类型;
所述第二服务器根据所述第一服务器提供的服务类型确定所述第二服务器与所述第一服务器相关联;
所述第二服务器向所述第一服务器发送发现响应消息,所述发现响应消息中包括所述第二服务器的标识和所述第二服务器的游戏进程的信息。
7.根据权利要求6所述的方法,其特征在于,所述第二服务器与第一服务器互相发现,还包括:
所述第二服务器与所述第一服务器建立心跳连接。
8.根据权利要求7所述的方法,其特征在于,所述第二服务器向所述第一服务器发送发现响应消息之前,还包括:
所述第二服务器判断是否保存有所述第一服务器的状态信息;
如果所述第二服务器已保存所述第一服务器的状态信息,且所述第一服务器的状态信息指示所述第一服务器的状态为激活状态,则将第一指示信息携带在所述发现响应消息中,所述第一指示信息用于指示所述第一服务器已激活。
9.根据权利要求6-8任一项所述的方法,其特征在于,还包括:
所述第二服务器接收所述第一服务器发送的解绑消息,所述解绑消息中包括所述第一服务器的标识和所述第一服务器的游戏进程的信息;
所述第二服务器的管理进程和游戏进程删除所述第一服务器的标识和所述第一服务器的游戏进程的信息。
10.根据权利要求7所述的方法,其特征在于,还包括:
所述第二服务器向所述第一服务器发送心跳检测消息;
如果所述第二服务器在预设时间内没有接收到所述第一服务器发送的所述心跳检测消息对应的响应消息,所述第二服务器确定所述第一服务器故障;
所述第二服务器的管理进程和游戏进程删除所述第一服务器的信息和所述第一服务器的游戏进程的信息。
11.一种服务器,其特征在于,包括:处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述服务器执行如权利要求1-5任一项所述的方法。
12.一种服务器,其特征在于,包括:处理器、存储器和收发器,所述存储器用于存储指令,所述收发器用于和其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述服务器执行如权利要求6-10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如权利要求1-5任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如权利要求6-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811578729.1A CN109714328B (zh) | 2018-12-24 | 2018-12-24 | 游戏集群的容量调整方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811578729.1A CN109714328B (zh) | 2018-12-24 | 2018-12-24 | 游戏集群的容量调整方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109714328A CN109714328A (zh) | 2019-05-03 |
CN109714328B true CN109714328B (zh) | 2021-08-10 |
Family
ID=66256241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811578729.1A Active CN109714328B (zh) | 2018-12-24 | 2018-12-24 | 游戏集群的容量调整方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109714328B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905331A (zh) * | 2019-11-19 | 2021-06-04 | 上海商汤智能科技有限公司 | 任务处理系统、方法及装置、电子设备和存储介质 |
CN110787455B (zh) * | 2019-11-29 | 2023-05-12 | 网易(杭州)网络有限公司 | 游戏中玩家组队方法、装置及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104600B (zh) * | 2011-01-11 | 2014-01-08 | 广州懒游网络技术有限公司 | 分布插件式游戏服务器平台及其协同工作方法 |
CN103873279B (zh) * | 2012-12-13 | 2015-07-15 | 腾讯科技(深圳)有限公司 | 一种服务器管理方法,及装置 |
US10187255B2 (en) * | 2016-02-29 | 2019-01-22 | Red Hat, Inc. | Centralized configuration data in a distributed file system |
CN206775541U (zh) * | 2017-05-22 | 2017-12-19 | 北京中科奥科技有限公司 | 分布式游戏服务系统 |
CN107404514A (zh) * | 2017-06-08 | 2017-11-28 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN107800794A (zh) * | 2017-10-26 | 2018-03-13 | 广州市雷军游乐设备有限公司 | 实现平台安全稳定运行的系统 |
-
2018
- 2018-12-24 CN CN201811578729.1A patent/CN109714328B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109714328A (zh) | 2019-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100512781B1 (ko) | 데이터의 공유방법, 단말장치 및 프로그램을 기록한 매체 | |
CN107251533B (zh) | 用于对等匹配的位于一处的对等设备 | |
WO2018137523A1 (zh) | 一种游戏服务器的切换方法、相关设备及系统 | |
US20110178985A1 (en) | Master monitoring mechanism for a geographical distributed database | |
CN107278365B (zh) | 用于可扩展的对等匹配的设备 | |
JP3850859B2 (ja) | ホール管理システム | |
KR20110050424A (ko) | 발명의 피어-투-피어 네트워크필드를 통해서 공유하는 인스톨된 게임 소프트웨어 | |
CN109173270B (zh) | 一种游戏服务系统和实现方法 | |
CN110311800B (zh) | 通信设备、节点的连接方法、存储介质、电子装置 | |
CN101582850A (zh) | 一种实现负载均衡的方法和系统 | |
CN109714328B (zh) | 游戏集群的容量调整方法和装置 | |
CN109040184B (zh) | 一种主节点的选举方法及服务器 | |
CN103281346A (zh) | 断线重连方法、网络系统和代理服务器 | |
CN112612769A (zh) | 文件处理方法、装置及存储介质 | |
CN110113414B (zh) | 一种管理副本的方法、装置、服务器及存储介质 | |
CN114615141A (zh) | 通信控制方法 | |
US10637748B2 (en) | Method and apparatus for establishing interface between VNFMS, and system | |
CN113596152A (zh) | 负载均衡实现方法、系统及装置 | |
CN115113893A (zh) | 一种数据处理方法、装置、存储介质和计算机设备 | |
US7945644B2 (en) | Dynamic initialization method and system of location server | |
KR101251630B1 (ko) | 푸쉬 서비스 제공 시스템 및 방법 | |
CN115400416A (zh) | 游戏中离线数据的处理方法、装置、服务器及存储介质 | |
WO2019066101A1 (ko) | 노드 분산 방법 및 이를 수행하는 관리 서버 | |
CN105208435B (zh) | Iptv系统中的数据处理方法及网元设备 | |
CN103001987A (zh) | 一种数据处理方法和数据处理节点 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |