一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种游戏进程的处理方法、装置、计算机设备及存储介质与流程

2022-12-07 03:09:05 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,具体涉及一种游戏进程的处理方法、装置、计算机设备及存储介质。


背景技术:

2.随着在线网络游戏的快速发展,游戏玩家数量日益增多。在大型网络游戏中,需要同时处理多个玩家发起的游戏请求,利用游戏对局进程集群来提供网络游戏服务,可以提高对多个游戏请求的响应速度。
3.相关技术中,通过中心管理进程对游戏对局进程集群中的多个游戏对局进程进行管理,各游戏对局进程定时向中心管理进程上报自身负载信息,当接收到玩家的游戏请求时,中心管理进程根据接收到的各游戏对局进程的负载信息,为玩家分配负载较低的游戏对局进程。但是,游戏对局进程的负载变化较快,中心管理进程根据过时的负载信息为玩家分配游戏对局进程,导致进程集群中各进程的负载差异较大,从而影响各进程之间的负载均衡。


技术实现要素:

4.本公开实施例提供一种游戏进程的处理方法、装置、计算机设备及存储介质,可以保证服务器中的处理资源的隔离以及应用程序的正常运行。
5.本公开实施例提供了一种游戏进程的处理方法,包括:
6.接收游戏对局创建请求;
7.获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前所述游戏对局进程处理的游戏对局对应的负载分数确定;
8.基于所述负载总分数从所述进程集群中选取处理所述游戏对局创建请求的目标游戏对局进程;
9.通过所述目标游戏对局进程创建目标游戏对局,并基于所述目标游戏对局的负载分数更新所述目标游戏对局进程的负载总分数。
10.相应的,本公开实施例还提供了一种游戏进程的处理装置,包括:
11.接收单元,用于接收游戏对局创建请求;
12.第一获取单元,用于获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前所述游戏对局进程处理的游戏对局对应的负载分数确定;
13.选取单元,用于基于所述负载总分数从所述进程集群中选取处理所述游戏对局创建请求的目标游戏对局进程;
14.创建单元,用于通过所述目标游戏对局进程创建目标游戏对局,并基于所述目标游戏对局的负载分数更新所述目标游戏对局进程的负载总分数。
15.相应的,本公开实施例还提供了一种计算机设备,包括存储器,处理器及存储在储存器上并可在处理器上运行的计算机程序,其中,处理器执行本公开实施例任一提供的游戏进程的处理方法。
16.相应的,本公开实施例还提供了一种存储介质,存储介质存储有多条指令,指令适于处理器进行加载,以执行如上的游戏进程的处理方法。
17.本公开实施例通过预先根据游戏战斗的类型,结合游戏战斗的负载信息计算不同类型的游戏战斗的单场负载分数,将负载分数作为游戏战斗的负载标准,当接收到战斗创建请求时,根据战斗集群内各战斗进程中的游戏战斗的总负载分数,从战斗集群内选取总负载分数最低的目标战斗进程,通过目标战斗进程响应战斗创建请求,创建游戏战斗,以此,可以实现进程集群中各进程的负载均衡。
附图说明
18.为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本公开实施例提供的一种游戏进程的处理方法的流程示意图。
20.图2为本公开实施例提供的另一种游戏进程的处理方法的流程示意图。
21.图3为本公开实施例提供的一种游戏进程的处理方法的应用场景示意图。
22.图4为本公开实施例提供的一种游戏进程的处理装置的结构框图。
23.图5为本公开实施例提供的计算机设备的结构示意图。
具体实施方式
24.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
25.本公开实施例提供一种游戏进程的处理方法、装置、存储介质及计算机设备。具体地,本公开实施例的游戏进程的处理方法可以由计算机设备执行,其中,该计算机设备可以为服务器等设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
26.例如,该计算机设备可以是服务器,该服务器可以接收游戏对局创建请求;获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前游戏对局进程处理的游戏对局对应的负载分数确定;基于负载总分数从进程集群中选取处理游戏对局创建请求的目标游戏对局进程;通过目标游戏对局进程创建目标游戏对局,并基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数。
27.基于上述问题,本公开实施例提供一种游戏进程的处理方法、装置、计算机设备及存储介质,可以实现进程集群中各进程的负载均衡。
28.以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
29.本公开实施例提供一种游戏进程的处理方法,该方法可以由终端或服务器执行,本公开实施例以游戏进程的处理方法由服务器执行为例来进行说明。
30.如图1所示,图1为本公开实施例提供的一种游戏进程的处理方法的流程示意图。该游戏进程的处理方法的具体流程可以如下:
31.101、接收游戏对局创建请求。
32.在本公开实施例中,游戏对局创建请求指示创建游戏对局。游戏对局创建请求可以是玩家客户端发送的,该游戏对局创建请求中可以包括需要创建的游戏对局的对局类型。其中,游戏对局可以为游戏玩家进行对战的对局,对局类型可以为1v1、2v2的游戏对战类型等。
33.具体的,可以为游戏服务器接收玩家客户端发送的游戏对局创建请求。
34.102、获取当前进程集群中各游戏对局进程的负载总分数。
35.其中,进程集群指的是用于处理游戏对局的服务器,由于在线玩家数量较多,进程集群需要同时处理的游戏对局的数量随之增多,则可以在进程集群中设置多个游戏对局进程,每一游戏对局进程用于处理至少一场游戏对局,也即将需要同时处理的多个游戏对局分别分配至各游戏对局进程进行处理。
36.例如,进程集群包括有:游戏对局进程1,游戏对局进程2,游戏对局进程3等,各游戏对局进程可以同时处理不同的游戏对局。
37.其中,每一游戏对局进程的负载总分数根据当前游戏对局进程处理的游戏对局对应的负载分数确定。
38.在本公开实施例中,为了避免仅根据游戏对局进程的负载信息评估游戏对局进程的负载,影响负载结果评估的准确性,本方案在游戏对局进程的负载信息的基础上,结合游戏对局进程处理的各游戏对局的游戏类型确定游戏对局进程的负载总分数,得到准确的负载评估结果。
39.在一些实施例中,为了提高对游戏对局进程的负载判断的准确性,步骤“每一游戏对局进程的负载总分数根据当前游戏对局进程处理的游戏对局对应的负载分数确定”,可以包括以下操作:
40.确定游戏对局进程当前处理的至少一进行中游戏对局;
41.根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数;
42.基于进行中游戏对局的负载分数确定游戏对局进程的负载总分数。
43.其中,进行中游戏对局指的是游戏对局进程处理中的游戏对局,比如,游戏对局进程1当前处理中的游戏对局可以包括:第一进行中游戏对局,第二进行中游戏对局等。
44.在本公开实施例中,游戏对局可以包括多种类型,也即对局类型,根据不同的对局类型可以设定不同对局类型的游戏对局对应的负载分数,该负载分数指的是单局游戏对局的负载得分,负载分数越高表示该单局游戏的负载越高,负载分数越低表示该单局游戏的负载越低。
45.在一些实施例中,在步骤“根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数”之前,还可以包括以下步骤:
46.获取进程集群中各游戏对局进程处理预设对局类型的游戏对局对应的负载信息,以及各游戏对局进程处理预设对局类型的游戏对局的对局场次;
47.基于进程集群中的游戏对局进程的进程数量,负载信息以及对局场次,计算预设对局类型对应的负载分数;
48.在本公开实施例中,在游戏上线前,可以通过对游戏中各对局类型的游戏对局进行压测,根据压测结果确定各对局类型的游戏对局对应的负载分数。其中,预设对局类型指的是游戏开发过程中设定的对局类型,预设对局类型可以包括多种,比如,第一对局类型,第二对局类型,第三对局类型等。
49.其中,压测指的是游戏开发期间使用大量机器人脚本模拟玩家行为,进行高并发战斗的压力测试。在本公开实施例中,针对每一预设对局类型,分别进行多场次的压测,以根据压测结果得到每一预设对局类型的负载分数。
50.具体的,对各预设对局类型的游戏对局进行压测可以为:在进程集群的多个游戏对局进程中分别创建各预设对局类型的多个游戏对局,然后在这多个游戏对局结束后,统计进程集群中各游戏对局进程的负载信息、各游戏对局进程处理各预设对局类型的游戏对局的对局场次。
51.然后,根据进程集群中的游戏对局进程的数量、各游戏对局进程的负载信息以及各游戏对局进程处理的各预设对局类型的游戏对局的场次,计算各预设对局类型对应的负载分数。
52.例如,进程集群包括的游戏对局进程为:游戏对局进程1,游戏对局进程2以及游戏对局进程3。对于第一对局类型的游戏对局进行压测包括:在游戏对局进程1中创建n场第一对局类型的游戏对局,在游戏对局进程2中创建m场第一对局类型的游戏对局,以及在游戏对局进程3中创建x场第一对局类型的游戏对局。
53.进一步的,在各游戏对局结束后,获取游戏对局进程1的负载信息可以为:负载值a,游戏对局进程2的负载信息可以为:负载值b,以及游戏对局进程3的负载信息可以为:负载值c。然后根据进程集群的进程数量:3,各游戏对局进程的负载信息以及各游戏对局进程处理的游戏对局的数量计算第一对局类型的游戏对局的单局负载分数,按照上述方式同样可以计算各预设对局类型对应的负载分数。
54.在一些实施例中,步骤“基于进程集群中的游戏对局进程的进程数量,负载信息以及对局场次,计算预设对局类型对应的负载分数”,可以包括以下流程:
55.根据每一游戏对局进程的负载信息,以及游戏对局进程处理的对局场次计算每一游戏对局进程处理单局游戏对局对应的负载值;
56.对各游戏对局进程处理单局游戏对局对应的负载值进行求和处理,得到和值;
57.计算和值与进程数量的比值,得到预设对局类型对应的负载分数。
58.具体的,本方案设计了负载分数计算公式,如下:
59.60.其中,s表示负载分数,n表示进程集群中的游戏对局进程的进程数量,b表示各游戏对局进程的负载值,c表示各游戏对局进程的对局场次。
61.具体的,计算每一游戏对局进程的负载值bi与游戏对局进程处理的对局场次ci的比值,得到各游戏对局进程处理单场游戏对局的负载值,然后将n个游戏对局进程处理单场游戏对局的负载值进行相加,得到n个游戏对局进程处理单场游戏对局的总负载值,最后计算该总负载值与进程数量n的比值,得到单个游戏对局进程处理单局游戏对局的负载分数。
62.在本公开实施例中,根据对各预设对局类型的游戏对局进行压测得到的数据,按照上述公式进行计算,得到各预设对局类型对应的单局负载分数,比如,预设对局类型包括第一对局类型,第二对局类型以及第三对局类型。根据上述压测以及对压测结果进行计算,得到第一对局类型的游戏对局对应的负载分数可以为:第一负载分数,得到第二对局类型的游戏对局对应的负载分数可以为:第二负载分数,得到第三对局类型的游戏对局对应的负载分数可以为:第三负载分数。
63.在一些实施例中,则步骤“根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数”,可以包括以下操作:
64.从预设对局类型中确定进行中游戏对局对应的目标对局类型;
65.获取目标对局类型的负载分数,得到进行中游戏对局的负载分数。
66.例如,获取进行中游戏对局的对局类型可以为第一对局类型,根据第一对局类型对应的第一负载分数,得到进行中游戏对局的负载分数为:第一负载分数。
67.具体的,基于进行中游戏对局的负载分数确定游戏对局进程的负载总分数,可以根据各进行中游戏对局的负载分数的和值,确定游戏对局进程的负载总分数。
68.例如,游戏对局进程中的进行中游戏对局包括:第一进行中游戏对局,第二进行中游戏对局以及第三进行中游戏对局。其中,第一进行中游戏对局的负载分数可以为:第一负载分数,第二进行中游戏对局的负载分数可以为:第二负载分数,第三进行中游戏对局的负载分数可以为:第一负载分数,则游戏对局进程的负载总分数=第一负载分数 第二负载分数 第一负载分数。
69.在一些实施例中,为了实现对进程集群中的多个游戏对局进行统一管理,步骤“获取当前进程集群中各游戏对局进程的负载总分数”,可以包括以下操作:
70.向目标数据库发送针对进程集群的信息访问请求;
71.接收目标数据库基于信息访问请求返回的进程集群的负载分数信息,得到进程集群中各游戏对局进程的负载总分数。
72.其中,目标数据库用于存储进程集群中各游戏对局进程的负载分数信息。
73.在本公开实施例中,选择目标数据库作为进程集群的进程管理中心,对进程集群中的各游戏对局进行管理。其中,目标数据库可以为redis数据库,redis是一个key-value存储系统,是跨平台的非关系型数据库,redis支持网络、可基于内存、分布式、可选持久性的键值对(key-value)存储数据库,并提供多种语言的应用程序接口。redis通常被称为数据结构服务器,因为值(value)可以是字符串、哈希、列表、集合和有序集合等类型。redis适合用来处理高并发场景,因此选用redis作为进程集群的管理中心。
74.具体的,将进程集群中的各游戏对局进程连接至同一redis,将各游戏对局进程的负载信息存储至redis。各游戏对局进程的负载总分数发送变化后,会将变化后负载总分数
发送至redis,以使redis中存储的各游戏对局进程的负载总分数实时更新。
75.在一些实施例中,为了保证redis中存储准确的游戏对局进程的负载分数值,各游戏对局进程可以定时检测自身的负载总分数与redis上记录的负载总分数是否一致,若出现不一致次数累积到一定数量时,可以输出发生错误的日志信息,根据日志信息分析负载总分数不一致的原因,然后解决问题;或者,若检测到redis上记录的负载总分数为负数,则根据游戏对局进程自身的负载总分数更新redis上记录的负载总分数。
76.另一方面,redis包括数据库主从结构,当数据库主节点压力过高时,切换数据库从节点开始工作,以此,可以保证在高并发场景下,各游戏对局进程可以正常工作。
77.其中,信息访问请求指示访问进程集群的负载分数信息,该负载分数信息可以包括进程集群中各游戏对局进程的负载总分数。
78.具体的,游戏服务器向目标数据库发送信息访问请求,目标数据库根据信息访问请求向游戏服务器返回进程集群中各游戏对局进程的负载总分数,以使游戏服务器获取到实时各游戏对局进程的负载总分数。
79.在一些实施例中,当目标数据库出现问题时,为了保证进程集群的正常工作,该方法还可以包括以下步骤:
80.若在向目标数据库发送针对进程集群的信息访问请求之后的指定时间段内未接收到目标数据库发送的负载分数信息,则从进程集群中选取一游戏对局进程,作为目标游戏对局进程。
81.当游戏服务器向目标数据库发送信息访问请求出现请求超时,也即游戏服务器向目标数据库发送信息访问请求后的指定时间段内,游戏服务器未接收到目标数据库的响应信息,此时,可能存在目标数据库运行出现问题,为了保证进程集群正常工作,可以从进程集群中任意选取一游戏对局进程,作为处理游戏对局创建请求的目标游戏对局进程。
82.或者,在一些实施例中,为了保证进程集群内各游戏对局进程的负载均衡,从多个游戏对局进程中选择负载最小的游戏对局进程,作为目标游戏对局进程。
83.在一些实施例中,为了保证进程集群的负载均衡,在步骤“获取当前进程集群中各游戏对局进程的负载总分数”之前,该方法还可以包括以下步骤:
84.获取进程集群中各游戏对局进程的负载值;
85.基于各游戏对局进程的负载值计算进程集群的平均负载值;
86.若平均负载值不大于第一阈值,则执行获取当前进程集群中各游戏对局进程的负载总分数的步骤。
87.其中,负载值指的是cpu(central processing unit/processor,中央处理器)负载值。
88.在本公开实施例中,进程集群中包括负载平衡进程,负载平衡进程可以用于计算进程集群的平均负载值。
89.具体的,通过负载平衡进程获取各游戏对局进程的负载值,然后根据各游戏对局进程的负载值计算平均值,得到进程集群的负载平均值,该负载平均值可以作为进程集群的整体负载值,表现进程集群的负载情况。
90.其中,第一阈值可以为预设的负载阈值,用于判断进程集群的负载过高还是过低。若进程集群的平均负载值小于或者等于第一阈值,表示进程集群的当前负载不高,则可以
执行获取当前进程集群中各游戏对局进程的负载总分数的步骤。
91.若进程集群的平均负载值大于第一阈值,表示进程集群的当前负载较高。
92.在一些实施例中,在进程集群的当前负载较高时,为了提高进程集群中的进程利用率,该方法还可以包括以下步骤:
93.若平均负载值大于第一阈值,则获取进程集群中各游戏场景进程的负载信息;
94.基于各游戏场景进程的负载信息中满足预设负载条件的游戏场景进程,确定目标游戏场景进程;
95.将目标游戏场景进程转换为游戏对局进程,以使通过目标游戏场景进程创建目标游戏对局。
96.在本公开实施例中,进程集群中还包括至少一游戏场景进程,游戏场景进程用于处理游戏场景。具体的,游戏场景进程是负载多人游戏场景的进程,多人游戏场景中可以存在多个游戏玩家进行活动。一个游戏场景进程可以处理多个游戏场景。
97.其中,游戏场景进程根据不同的场景类型和承载人数的上限,也会设定有一个对应的负载分数。
98.在本公开实施例中,游戏场景进程和游戏对局进程的负载均衡策略不太一样,游戏对局进程是优先负载均衡,游戏场景进程则是优先装满一个进程。
99.具体的,当进程集群的平均负载值大于第一阈值时,可以获取进程集群中各游戏场景进程的负载信息,游戏场景进程的负载信息可以为游戏场景进程的cpu负载值或者负载分数。
100.其中,预设负载条件可以为负载较低,如负载为0。则可以从进程集群中选取负载为0的游戏场景进程,得到目标游戏场景进程。
101.在一些实施例中,若满足预设负载条件的游戏场景进程的数量为多个,则可以将多个游戏场景进程选取为目标游戏场景进程,也即得到多个目标游戏场景进程。但是,进程集群中的所有游戏场景进程不会同时作为目标游戏场景进程,根据进程配置,进程集群中的部分游戏场景进程可以为固定处理游戏场景的进程。
102.对于选取的目标游戏场景进程,不再创建新的游戏场景,而是通过目标游戏场景进程创建目标游戏对局。以此,保证在进程集群中的游戏对局进程的负载较高时,将负载较低的游戏场景进程切换为游戏对局进程,创建游戏对局。
103.在本公开实施例中,游戏对局进程包括两种类型的实例:第一实例和第二实例;游戏场景进程也可以包括两种类型的实例:第三实例和第四实例。理想情况下,对于游戏对局进程,第一实例工作时,第二实例处于停止工作状态,相反的,第二实例工作时,第一实例处于停止工作状态;对于游戏场景进行,第三实例工作时,第四实例处于停止工作状态,相反的,第四实例工作时,第三实例处于停止工作状态。
104.其中,实例也即服务对象,用于处理进程的任务。比如,对于游戏对局进程,第一实例用于处理游戏对局,第二实例用于处理游戏场景;对于游戏场景进程,第三实例用于处理游戏场景,第四实例用于处理游戏对局。
105.具体的,上述通过目标游戏场景进程创建目标游戏对局指的是:将目标游戏场景进程中的第三实例由工作状态切换为停止工作状态,并将第四实例由停止工作状态切换为工作状态,也即通过目标游戏场景进程中的第四实例创建目标游戏对局,以实现将目标游
戏场景进程转化为游戏对局进程进行工作,实现进程集群中的进程利用率。
106.其中,目标游戏场景进程的选取可以在目标数据库上通过指定脚本完成,指定脚本可以为lua(一种轻量小巧的脚本语言)脚本。
107.在一些实施例中,为了保证进程集群中各进程的正常工作,在步骤“通过目标游戏场景进程创建目标游戏对局”之后,该方法还可以包括以下步骤:
108.若进程集群的平均负载值小于第二阈值,则在目标游戏对局结束后,将目标游戏场景进程转换为游戏场景处理进程,以使基于目标游戏场景进程处理游戏场景。
109.其中,第二预设值小于第一阈值,当进程集群的平均负载值小于第二阈值时,表示进程集群中的游戏对局进程的负载不高,则在目标游戏对局结束后,可以将目标游戏场景进程进行还原,也即将目标游戏场景进程中的第四实例由工作状态切换为停止工作状态,并将第三实例由停止工作状态切换为工作状态,通过第三实例创建游戏场景。
110.在一些实施例中,为了保证多个进程集群之间的负载均衡,在步骤“获取当前进程集群中各游戏对局进程的负载总分数”之前,该方法还可以包括以下步骤:
111.根据发送游戏对局创建请求的玩家客户端对应的进程集群,从多个进程集群中确定候选进程集群;
112.获取候选进程集群的总负载信息;
113.若总负载信息指示候选进程集群的负载过高,则获取多个进程集群中其他进程集群的负载信息;
114.根据其他进程集群的负载信息中选取负载信息指示负载较低的其他进程集群,得到目标进程集群;
115.其中,玩家客户端指的是发起游戏对局创建请求的游戏玩家关联的客户端。
116.在本公开实施例中,进程集群的数量可以为多个,也即处理进程的服务器可以为多个,每一进程集群可以连接多个玩家客户端。当游戏服务器接收到玩家客户端发送的游戏对局创建请求时,可以优先为该玩家客户端分配该玩家客户端连接的进程集群处理该游戏对局创建请求。
117.在一些实施例中,为了保证多个进程集群之间的负载均衡,当接收到玩家客户端发送的游戏对局创建请求时,可以先获取玩家客户端连接的进程集群的负载信息,根据负载信息选取合适的进程集群。
118.其中,候选进程集群指的是连接玩家客户端的进程集群,比如,进程集群包括:第一进程集群,第二进程集群以及第三进程集群等,接收到玩家客户端发送的游戏对局创建集请求,获取该玩家客户端连接的进程集群可以为:第一进程集群,则可以确定候选进程集群为第一进程集群。
119.其中,候选进程集群的总负载信息可以指的是该候选进程集群中各进程的负载之和。
120.具体的,总负载信息指示候选进程集群的负载过高,可以为负载信息中的总负载值超过预设负载值。当候选进程集群的负载过高时,表示候选进程集群的负载压力过大,继续处理游戏请求会影响进程集群中的进程任务。此时,可以获取多个进程集群中除候选进程集群以外的其他进程集群。
121.比如,进程集群包括:第一进程集群,第二进程集群以及第三进程集群,候选进程
集群可以为第一进程集群,则其他进程集群可以为:第二进程集群和第三进程集群。然后获取第二进程集群的总负载信息(包括第二进程集群中各进程的负载值之和),以及第三进程集群的总负载信息(包括第三进程集群中各进程的负载值之和)。
122.进一步的,从其他进程集群的负载信息中,选取负载较低的进程集群,其中,负载较低可以为负载总值低于预设负载值,负载较低表示该进程集群的负载压力较小,可以处理游戏请求,则将该负载较低的进程集群作为目标进程集群。
123.在一些实施例中,步骤“获取当前进程集群中各游戏对局进程的负载总分数”,可以包括以下操作:
124.获取当前目标进程集群中各游戏对局进程的负载总分数。
125.在从多个进程集群中选取负载较小的目标进程集群后,可以获取目标进程集群中各游戏对局进程的负载总分数。具体的,获取目标进程集群中各游戏对局进程的负载总分数的详细说明参见上述步骤,在此不多做赘述。
126.在本公开实施例中,负载平衡进程可以定时获取所在进程集群的负载信息,然后向其他进程集群广播所在进程集群的负载信息。同样的,负载平衡进程可以接收其他进程集群的负载平衡进程广播的其他进程集群的负载信息。
127.当负载平衡进程收到广播消息之后,可以将收到的其他进程集群的负载信息放到redis上。进程集群中的游戏对局进程可以定时从redis上的拉取其他进程集群的负载信息,当游戏对局进程发现自身所在的进程集群的负载超过一定的阈值时,则可以将游戏对局创建请求转发给其他进程集群进行处理,其他进程集群的负载越低,被选中处理游戏对局创建请求的概率就越大。其中,被转发到其他进程集群的游戏对局创建请求,同样会遵循其他进程集群的负载均衡规则,通过redis上的lua脚本选择在该其他进程集群中适合的游戏对局进程创建游戏对局。
128.在本公开实施例中,负载平衡进程会不断收到并更新其他进程集群的信息,当某一个其他进程集群下线时,心跳信息将会消失,下线的其他进程集群将不会被其他进程集群选取处理游戏对局创建请求。
129.103、基于负载总分数从进程集群中选取处理游戏对局创建请求的目标游戏对局进程。
130.在一些实施例中,步骤“基于负载总分数从进程集群中选取处理游戏对局创建请求的目标游戏对局进程”,可以包括以下操作:
131.从进程集群中确定负载总分数最低的游戏对局进程,得到目标游戏对局进程。
132.例如,进程集群包括:游戏对局进程1,游戏对局进程2,游戏对局进程3。其中,游戏对局进程1的负载总分数可以为:40,游戏对局进程2的负载总分数可以为:50,游戏对局进程3的负载总分数可以为:70。通过将各游戏对局进程的负载总分数进行比较,得到分数最低的游戏对局进程为:游戏对局进程1,则可以将游戏对局进程1作为目标游戏对局进程。
133.104、通过目标游戏对局进程创建目标游戏对局,并基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数。
134.具体的,当确定目标游戏对局进程后,基于目标游戏对局进程响应游戏对局创建请求,在目标游戏对局进程中创建目标游戏对局,完成玩家客户端的游戏对局创建请求。同时,基于目标游戏对局的负载分数对目标游戏对局进程的负载总分数进程更新,保证目标
游戏对局进程的负载总分数的准确性。
135.在一些实施例中,步骤“基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数”,可以包括以下操作:
136.计算目标游戏对局的负载分数与目标游戏对局进程的负载总分数的和值,得到目标游戏对局进程的更新后总分数。
137.其中,目标游戏对局的负载分数根据目标游戏对局的对局类型确定。
138.例如,目标游戏对局的对局类型可以为:第一对局类型,获取第一对局类型对应的负载分数可以为:10。然后,计算目标游戏对局的负载分数与目标游戏对局进程的负载总分数的和值:40 10=50,得到目标游戏对局进程的更新后总分数为50。
139.在本公开实施例中,由于redis的逻辑处理部分是单线程的,加分部分可以选择使用lua脚本来保证原子性,以避免出现数据过时的情况。其中,原子性具体指的是:选取目标游戏对局进程与加分这两步操作在redis上是连续发生的,中间不会被插入其他的加分、减分等操作。
140.在一些实施例中,为了实时更新游戏对局进程的负载总分数,该方法还可以包括以下步骤:
141.响应于目标游戏对局结束,获取目标游戏对局进程的当前负载总分数;
142.计算当前负载总分数与目标游戏对局进程的负载总分数的差值,得到目标游戏对局进程的更新后总分数。
143.具体的,当目标游戏对局结束后,可以将目标游戏对局进程的负载总分数减去目标游戏对局的负载分数。当目标游戏对局结束,目标游戏对局进程可以向redis发起减分请求,以使得redis进行减分操作。
144.例如,目标游戏对局的负载分数可以为:10,目标游戏对局进程的负载总分数为:50,计算目标游戏对局进程的负载总分数与目标游戏对局的负载分数的差值:50-10=40,得到目标游戏对局进程的更新后总分数为40。
145.本公开实施例公开了一种游戏进程的处理方法,该方法包括:接收游戏对局创建请求;获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前游戏对局进程处理的游戏对局对应的负载分数确定;基于负载总分数从进程集群中选取处理游戏对局创建请求的目标游戏对局进程;通过目标游戏对局进程创建目标游戏对局,并基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数,可以实现进程集群中各进程的负载均衡。
146.根据上述介绍的内容,下面将举例来进一步说明本公开的游戏进程的处理方法。请参阅图2,图2为本公开实施例提供的另一种游戏进程的处理方法的流程示意图,以该游戏进程的处理方法应用于游戏服务器为例,具体流程可以如下:
147.201、游戏服务器接收玩家客户端发送的战斗创建请求。
148.其中,玩家客户端指的是游戏玩家关联的客户端,战斗创建请求指示创建游戏战斗。
149.202、游戏服务器获取各战斗集群的负载信息,并根据负载信息从多个战斗集群中选取目标战斗集群。
150.在本公开实施例中,游戏服务器包括多个战斗集群,其中,战斗集群可以为处理玩
家战斗的服务器,一个战斗集群内可以包括多个战斗进程,每一战斗进程可以创建多个战斗。
151.其中,负载信息包括战斗集群的cpu负载。具体的,获取各战斗集群的负载信息可以为获取各战斗集群的cpu负载,然后选择cpu负载最低的战斗集群,作为目标战斗集群,以保证各战斗集群的负载均衡。
152.在一些实施例中,还可以先获取玩家客户端所在战斗集群的负载信息,若玩家客户端所在战斗集群的cpu负载过高,需要向其他战斗集群求助,则可以执行获取各战斗集群的负载信息,并根据负载信息从多个战斗集群中选取目标战斗集群。或者,若玩家客户端所在战斗集群的cpu负载不高,则可以将若玩家客户端所在战斗集群作为目标战斗集群。正常情况下,玩家1和玩家2战斗,会优先选取玩家1或者玩家2所在的战斗集群,但是当玩家1以及玩家2所在的战斗集群整体负载均过高时,就需要向其他战斗集群进行求助了。
153.在本公开实施例中,战斗集群包括bsbalance进程,bsbalance进程用于处理战斗集群内部的进程负载均衡以及战斗集群之间的集群负责均衡。
154.具体的,战斗集群内的bsbalance进程可以定时向其他战斗集群的bsbalance进程广播它所在战斗集群的负载信息,收到广播消息之后,再将战斗集群的负载信息放到redis上。战斗进程会定时从redis上的拉取战斗集群的负载信息,当战斗进程发现自身所在的集群负载超过一定的阈值时,会将创建战斗的请求转发给其他战斗集群处理,战斗集群的负载越低,被选到的概率就越大。
155.其中,被转发到另一个战斗集群的战斗,同样会遵循该战斗集群的负载均衡规则,通过redis上的lua脚本选择在适合的战斗进程创建战斗。在容灾方面,bsbalance进程会不断收到并更新其他战斗集群的信息,当一个战斗集群下线时,心跳信息将会消失,下线的战斗集群将不会被其他战斗集群所选取到。
156.203、游戏服务器向目标数据库发送针对目标战斗集群的负载总分数的访问请求。
157.其中,目标数据库可以为redis数据库。redis是一个高性能的key-value数据库,适合用来处理高并发场景,在本公开实施例中选择使用redis作为战斗集群的“battlemgr”。同一个战斗集群内的战斗进程都会连接到同一个redis,战斗的负载信息可以被记录在redis上。
158.其中,battlemgr值得是战斗管理中心,用于管理战斗集群内的各战斗进程。redis包括主从结构数据库,当主节点数据库压力过高时,切换至从节点数据库进行工作,可以保证redis数据库在高并发场景下的正常工作。
159.在本公开实施例中,战斗进程的负载信息在redis中使用sorted set来存储的,于是在redis中就有一个战斗进程的负载信息的排行榜。其中,sorted set为有序集合,是redis内置的数据结构。
160.其中,访问请求指示从redis中获取目标战斗集群中各战斗进程的负载总分数。
161.在本公开实施例中,制定了战斗进程的负载评估指标,通过战斗进程的负载信息(cpu负载值),战斗进程处理的战斗场次以及战斗类型等计算各战斗类型的单局战斗对应的负载总分数。
162.具体的,战斗创建时的负载分数值由战斗类型决定,基于游戏项目中战斗的特点,同类型战斗的开销差异小,因此根据对同类型战斗的多场次压测,统计战斗集群中每个战
斗进程的cpu负载值、战场数(战斗场次),记为b、c,战斗进程总数为n,计算该战斗类型的单场负载分数s如下:
[0163][0164]
基于上述方式,计算得到各战斗类型的游戏战斗对应的负载分数。
[0165]
204、游戏服务器判断访问请求是否超时。
[0166]
在向redis发送访问请求后,判断在指定时间段内是否接收到redis的返回消息,若在指定时间段内没有接收到redis的返回消息,则表示访问请求超时,可以执行步骤205;若在指定时间段内接收到redis的返回消息,可以执行步骤206。
[0167]
205、游戏服务器从目标战斗集群中随机选取一目标战斗进程,并基于目标战斗进程创建游戏战斗。
[0168]
具体的,当访问redis数据库失败时,为了保证战斗创建请求能够被响应,也即战斗在redis服务失效时还能被创建出来,不阻塞玩家的游戏流程,可以从目标战斗集群中随机选取一战斗进程,作为目标战斗进程。
[0169]
进一步的,通过目标战斗进程响应战斗创建请求,创建游戏战斗。
[0170]
206、游戏服务器接收目标数据库返回的目标战斗集群的负载总分数,并基于负载总分数从目标战斗集群中确定目标战斗进程。
[0171]
其中,目标战斗集群的负载总分数包括目标战斗集群中各战斗进程的负载总分数,各战斗进程的负载总分数为战斗进程中各战斗的负载分数之和。
[0172]
例如,目标战斗集群中包括的战斗进程可以为:第一战斗进程,第二战斗进程以及第三战斗进程。其中,第一战斗进程的负载总分数为第一战斗进程当前处理的各战斗的负载分数的和,第二战斗进程的负载总分数为第二战斗进程当前处理的各战斗的负载分数的和,第三战斗进程的负载总分数为第三战斗进程当前处理的各战斗的负载分数的和。
[0173]
进一步的,从各战斗进程中选择负载总分数最低的战斗进程,从而确定目标战斗进程。比如,第一战斗进程的负载总分数可以为:10,第二战斗进程的负载总分数可以为:40,第三战斗进程的负载总分数可以为:20,则可以选择第一战斗进程作为目标战斗进程。
[0174]
在一些实施例中,当目标战斗集群中负载总分数最低的战斗进程挂掉后,该战斗进程在redis上的负载总分数会出现只加不减的情况(因为减分是战斗正常结束之后才会进行的操作,当战斗进程挂掉之后,战斗进程上的战斗无法正常结束,因此不会减分),那么该战斗进程将不再是“负载最低”的进程了,也只有一小部分玩家受到影响。当战斗进程重启时,会重置redis上的分数,又可以正常参与集群的负载均衡了。
[0175]
207、游戏服务器通过目标战斗进程创建游戏战斗。
[0176]
具体的,游戏服务器通过目标战斗进程响应战斗创建请求,通过目标战斗进程创建游戏战斗。
[0177]
在一些实施例中,战斗集群还可以包括场景进程,战斗集群内的进程与redis数据库的关系可以为:各战斗进程分别与redis数据库连接,各场景进程分别与redis数据库连接,bsbalance进程与redis数据库连接。
[0178]
例如,请参阅图3,图3为本公开实施例提供的一种游戏进程的处理方法的应用场
景示意图。在图3所示的战斗集群中,包括:场景进程1,场景进程2,bsbalance进程,战斗进程1,战斗进程2以及战斗进程3,各进程分别与redis数据库连接。
[0179]
在本公开实施例中,场景进程是负责多人场景的进程,玩家可以在多人场景里面活动,一个场景进程内可以有若干个多人场景。多人场景根据不同的类型和承载人数的上限,也会有一个自己的分数。场景进程和战斗进程的负载均衡策略不太一样,战斗进程是优先负载均衡,场景进程则是优先装满一个进程。所以在服务器多人场景不繁忙的时候,会有很多分数为0的场景进程。
[0180]
具体的,场景进程有两个实例,一个space实例和一个battleghost实例;同理,战斗进程上也有两个实例,一个battle实例和一个spaceghost实例。理想情况下,一个实例工作的时候,另一个实例处在停业的状态。space实例即场景manager对象,battleghost实例是battlemanager对象。一个进程上可以有多个服务对象同时工作,两个实例用于互相转换,保证热点玩法有足够的进程可以使用。
[0181]
在一些实施例中,当bsbalance发现战斗集群的平均cpu超过第一阈值时,每隔一段时间,选取若干个负载最低(如负载为0)的场景进程,这些space实例不再创建新的多人场景,battleghost实例开始工作;当战斗集群的平均cpu小于第二阈值时,场景进程开始还原。需要注意的是,场景进程不会全部转为battle实例,根据配置有一定数量的场景是禁止转换的。
[0182]
其中,被转换进程的选取是在redis上通过lua脚本完成的,虽然脚本内容较多,但是调用频率低,还是可以接受的。容灾方面,bsbalance进程在进程集群内只有一个且支持重启,所用到的数据都在redis上。发生转换时,lua脚本只负责选取转换的进程,并不直接在redis上标记,因为可能存在被转换进程挂掉的情况。bsbalance进程会根据选取结果,通知被转换的进程,该进程做好准备工作之后再在redis上做标记。
[0183]
本公开实施例公开了一种游戏进程的处理方法,该方法包括:游戏服务器接收玩家客户端发送的战斗创建请求,获取各战斗集群的负载信息,并根据负载信息从多个战斗集群中选取目标战斗集群,向目标数据库发送针对目标战斗集群的负载总分数的访问请求,判断访问请求是否超时,若访问请求超时,则从目标战斗集群中随机选取一目标战斗进程,并基于目标战斗进程创建游戏战斗;若访问请求未超时,则接收目标数据库返回的目标战斗集群的负载总分数,并基于负载总分数从目标战斗集群中确定目标战斗进程,通过目标战斗进程创建游戏战斗。以此,可以实现进程集群中各进程的负载均衡。
[0184]
为便于更好的实施本公开实施例提供的游戏进程的处理方法,本公开实施例还提供一种基于上述游戏进程的处理方法的游戏进程的处理装置。其中名词的含义与上述游戏进程的处理方法中相同,具体实现细节可以参考方法实施例中的说明。
[0185]
请参阅图4,图4为本公开实施例提供的一种游戏进程的处理装置的结构框图,该装置包括:
[0186]
接收单元301,用于接收游戏对局创建请求;
[0187]
第一获取单元302,用于获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前所述游戏对局进程处理的游戏对局对应的负载分数确定;
[0188]
选取单元303,用于基于所述负载总分数从所述进程集群中选取处理所述游戏对
局创建请求的目标游戏对局进程;
[0189]
创建单元304,用于通过所述目标游戏对局进程创建目标游戏对局,并基于所述目标游戏对局的负载分数更新所述目标游戏对局进程的负载总分数。
[0190]
在一些实施例中,第一获取单元302可以包括:
[0191]
第一确定子单元,用于确定所述游戏对局进程当前处理的至少一进行中游戏对局;
[0192]
第二确定子单元,用于根据所述进行中游戏对局的对局类型确定所述进行中游戏对局的负载分数;
[0193]
第三确定子单元,用于基于所述进行中游戏对局的负载分数确定所述游戏对局进程的负载总分数。
[0194]
在一些实施例中,第一获取单元302还可以包括:
[0195]
第一获取子单元,用于获取所述进程集群中各游戏对局进程处理预设对局类型的游戏对局对应的负载信息,以及各游戏对局进程处理预设对局类型的游戏对局的对局场次;
[0196]
第一计算子单元,用于基于所述进程集群中的游戏对局进程的进程数量,所述负载信息以及所述对局场次,计算所述预设对局类型对应的负载分数。
[0197]
在一些实施例中,第二确定子单元具体可以用于:
[0198]
从预设对局类型中确定所述进行中游戏对局对应的目标对局类型;
[0199]
获取所述目标对局类型的负载分数,得到所述进行中游戏对局的负载分数。
[0200]
在一些实施例中,第一计算子单元具体可以用于:
[0201]
根据每一游戏对局进程的负载信息,以及所述游戏对局进程处理的对局场次计算每一游戏对局进程处理单局游戏对局对应的负载值;
[0202]
对各游戏对局进程处理单局游戏对局对应的负载值进行求和处理,得到和值;
[0203]
计算所述和值与所述进程数量的比值,得到所述预设对局类型对应的负载分数。
[0204]
在一些实施例中,第一获取单元302可以包括:
[0205]
发送子单元,用于向目标数据库发送针对所述进程集群的信息访问请求,所述目标数据库用于存储所述进程集群中各游戏对局进程的负载分数信息;
[0206]
接收子单元,用于接收所述目标数据库基于所述信息访问请求返回的所述进程集群的负载分数信息,得到所述进程集群中各游戏对局进程的负载总分数。
[0207]
在一些实施例中,该装置还可以包括:
[0208]
第一执行单元,用于若在向目标数据库发送针对所述进程集群的信息访问请求之后的指定时间段内未接收到所述目标数据库发送的所述负载分数信息,则从所述进程集群中选取一游戏对局进程,作为所述目标游戏对局进程。
[0209]
在一些实施例中,该装置还可以包括:
[0210]
第二获取单元,用于获取所述进程集群中各游戏对局进程的负载值;
[0211]
第一计算单元,用于基于各游戏对局进程的负载值计算所述进程集群的平均负载值;
[0212]
第二执行单元,用于若所述平均负载值不大于第一阈值,则执行获取当前进程集群中各游戏对局进程的负载总分数的步骤。
[0213]
在一些实施例中,该装置还可以包括:
[0214]
第三获取单元,用于若所述平均负载值大于所述第一阈值,则获取所述进程集群中各游戏场景进程的负载信息;
[0215]
第一确定单元,用于基于所述各游戏场景进程的负载信息中满足预设负载条件的游戏场景进程,确定目标游戏场景进程;
[0216]
第三执行单元,用于将所述目标游戏场景进程转换为游戏对局进程,以使通过所述目标游戏场景进程创建所述目标游戏对局。
[0217]
在一些实施例中,该装置还可以包括:
[0218]
处理单元,用于若所述进程集群的平均负载值小于第二阈值,则在所述目标游戏对局结束后,将所述目标游戏场景进程转换为游戏场景处理进程,以使基于所述目标游戏场景进程处理游戏场景。
[0219]
在一些实施例中,该装置还可以包括:
[0220]
第二确定单元,用于根据发送所述游戏对局创建请求的玩家客户端对应的进程集群,从多个进程集群中确定候选进程集群;
[0221]
第四获取单元,用于获取所述候选进程集群的总负载信息;
[0222]
第四获取单元,用于若所述总负载信息指示所述候选进程集群的负载过高,则获取所述多个进程集群中其他进程集群的负载信息;
[0223]
第三确定单元,用于根据所述其他进程集群的负载信息中选取负载信息指示负载较低的其他进程集群,得到目标进程集群。
[0224]
在一些实施例中,第一获取单元302可以包括:
[0225]
第二获取子单元,用于获取当前所述目标进程集群中各游戏对局进程的负载总分数。
[0226]
在一些实施例中,选取单元303可以包括:
[0227]
选取子单元,用于从所述进程集群中确定负载总分数最低的游戏对局进程,得到所述目标游戏对局进程。
[0228]
在一些实施例中,创建单元304可以包括:
[0229]
第二计算子单元,用于计算所述目标游戏对局的负载分数与所述目标游戏对局进程的负载总分数的和值,得到所述目标游戏对局进程的更新后总分数。
[0230]
在一些实施例中,该装置还可以包括:
[0231]
第五获取单元,用于响应于所述目标游戏对局结束,获取所述目标游戏对局进程的当前负载总分数;
[0232]
第二计算单元,用于计算所述当前负载总分数与所述目标游戏对局进程的负载总分数的差值,得到所述目标游戏对局进程的更新后总分数。
[0233]
本公开实施例公开了一种游戏进程的处理装置,通过接收单元301接收游戏对局创建请求,第一获取单元302获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前所述游戏对局进程处理的游戏对局对应的负载分数确定;选取单元303基于所述负载总分数从所述进程集群中选取处理所述游戏对局创建请求的目标游戏对局进程;创建单元304通过所述目标游戏对局进程创建目标游戏对局,并基于所述目标游戏对局的负载分数更新所述
目标游戏对局进程的负载总分数,可以实现进程集群中各进程的负载均衡。
[0234]
相应的,本公开实施例还提供一种计算机设备,该计算机设备可以为服务器。如图5所示,图5为本公开实施例提供的计算机设备的结构示意图。该计算机设备400包括有一个或者一个以上处理核心的处理器401、有一个或一个以上计算机可读存储介质的存储器402及存储在存储器402上并可在处理器上运行的计算机程序。其中,处理器401与存储器402电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0235]
处理器401是计算机设备400的控制中心,利用各种接口和线路连接整个计算机设备400的各个部分,通过运行或加载存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备400的各种功能和处理数据,从而对计算机设备400进行整体监控。
[0236]
在本公开实施例中,计算机设备400中的处理器401会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能:
[0237]
接收游戏对局创建请求;
[0238]
获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前游戏对局进程处理的游戏对局对应的负载分数确定;
[0239]
基于负载总分数从进程集群中选取处理游戏对局创建请求的目标游戏对局进程;
[0240]
通过目标游戏对局进程创建目标游戏对局,并基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数。
[0241]
在一些实施例中,每一游戏对局进程的负载总分数根据当前游戏对局进程处理的游戏对局对应的负载分数确定,包括:
[0242]
确定游戏对局进程当前处理的至少一进行中游戏对局;
[0243]
根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数;
[0244]
基于进行中游戏对局的负载分数确定游戏对局进程的负载总分数。
[0245]
在一些实施例中,在根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数之前,方法还包括:
[0246]
获取进程集群中各游戏对局进程处理预设对局类型的游戏对局对应的负载信息,以及各游戏对局进程处理预设对局类型的游戏对局的对局场次;
[0247]
基于进程集群中的游戏对局进程的进程数量,负载信息以及对局场次,计算预设对局类型对应的负载分数;
[0248]
根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数,包括:
[0249]
从预设对局类型中确定进行中游戏对局对应的目标对局类型;
[0250]
获取目标对局类型的负载分数,得到进行中游戏对局的负载分数。
[0251]
在一些实施例中,基于进程集群中的游戏对局进程的进程数量,负载信息以及对局场次,计算预设对局类型对应的负载分数,包括:
[0252]
根据每一游戏对局进程的负载信息,以及游戏对局进程处理的对局场次计算每一游戏对局进程处理单局游戏对局对应的负载值;
[0253]
对各游戏对局进程处理单局游戏对局对应的负载值进行求和处理,得到和值;
[0254]
计算和值与进程数量的比值,得到预设对局类型对应的负载分数。
[0255]
在一些实施例中,获取当前进程集群中各游戏对局进程的负载总分数,包括:
[0256]
向目标数据库发送针对进程集群的信息访问请求,目标数据库用于存储进程集群中各游戏对局进程的负载分数信息;
[0257]
接收目标数据库基于信息访问请求返回的进程集群的负载分数信息,得到进程集群中各游戏对局进程的负载总分数。
[0258]
在一些实施例中,方法还包括:
[0259]
若在向目标数据库发送针对进程集群的信息访问请求之后的指定时间段内未接收到目标数据库发送的负载分数信息,则从进程集群中选取一游戏对局进程,作为目标游戏对局进程。
[0260]
在一些实施例中,在获取当前进程集群中各游戏对局进程的负载总分数之前,方法还包括:
[0261]
获取进程集群中各游戏对局进程的负载值;
[0262]
基于各游戏对局进程的负载值计算进程集群的平均负载值;
[0263]
若平均负载值不大于第一阈值,则执行获取当前进程集群中各游戏对局进程的负载总分数的步骤。
[0264]
在一些实施例中,进程集群中还包括至少一游戏场景进程,游戏场景进程用于处理游戏场景;
[0265]
方法还包括:
[0266]
若平均负载值大于第一阈值,则获取进程集群中各游戏场景进程的负载信息;
[0267]
基于各游戏场景进程的负载信息中满足预设负载条件的游戏场景进程,确定目标游戏场景进程;
[0268]
将目标游戏场景进程转换为游戏对局进程,以使通过目标游戏场景进程创建目标游戏对局。
[0269]
在一些实施例中,在通过目标游戏场景进程创建目标游戏对局之后,方法还包括:
[0270]
若进程集群的平均负载值小于第二阈值,则在目标游戏对局结束后,将目标游戏场景进程转换为游戏场景处理进程,以使基于目标游戏场景进程处理游戏场景。
[0271]
在一些实施例中,在获取当前进程集群中各游戏对局进程的负载总分数之前,方法还包括:
[0272]
根据发送游戏对局创建请求的玩家客户端对应的进程集群,从多个进程集群中确定候选进程集群;
[0273]
获取候选进程集群的总负载信息;
[0274]
若总负载信息指示候选进程集群的负载过高,则获取多个进程集群中其他进程集群的负载信息;
[0275]
根据其他进程集群的负载信息中选取负载信息指示负载较低的其他进程集群,得到目标进程集群;
[0276]
获取当前进程集群中各游戏对局进程的负载总分数,包括:
[0277]
获取当前目标进程集群中各游戏对局进程的负载总分数。
[0278]
在一些实施例中,基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数,包括:
[0279]
计算目标游戏对局的负载分数与目标游戏对局进程的负载总分数的和值,得到目标游戏对局进程的更新后总分数。
[0280]
在一些实施例中,方法还包括:
[0281]
响应于目标游戏对局结束,获取目标游戏对局进程的当前负载总分数;
[0282]
计算当前负载总分数与目标游戏对局进程的负载总分数的差值,得到目标游戏对局进程的更新后总分数。
[0283]
本公开实施例预先根据游戏战斗的类型,结合游戏战斗的负载信息计算不同类型的游戏战斗的单场负载分数,将负载分数作为游戏战斗的负载标准,当接收到战斗创建请求时,根据战斗集群内各战斗进程中的游戏战斗的总负载分数,从战斗集群内选取总负载分数最低的目标战斗进程,通过目标战斗进程响应战斗创建请求,创建游戏战斗,以此,可以实现进程集群中各进程的负载均衡。
[0284]
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0285]
可选的,如图5所示,计算机设备400还包括:触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407。其中,处理器401分别与触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407电性连接。本领域技术人员可以理解,图5中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0286]
触控显示屏403可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏403可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(lcd,liquid crystal display)、有机发光二极管(oled,organic light-emitting diode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器401,并能接收处理器401发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器401以确定触摸事件的类型,随后处理器401根据触摸事件的类型在显示面板上提供相应的视觉输出。在本公开实施例中,可以将触控面板与显示面板集成到触控显示屏403而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏403也可以作为输入单元406的一部分实现输入功能。
[0287]
在本公开实施例中,通过处理器401执行游戏应用程序在触控显示屏403上生成图形用户界面,图形用户界面上的虚拟场景中包含至少一个技能控制区域,技能控制区域中包含至少一个技能控件。该触控显示屏403用于呈现图形用户界面以及接收用户作用于图形用户界面产生的操作指令。
[0288]
射频电路404可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。
[0289]
音频电路405可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路405可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路405接收后转换为音频数据,再将音频数据输出处理器401处理后,经射频电路404以发送给比如另一计算机设备,或者将音频数据输出至存储器402以便进一步处理。音频电路405还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。
[0290]
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
[0291]
电源407用于给计算机设备400的各个部件供电。可选的,电源407可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源407还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0292]
尽管图5中未示出,计算机设备400还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
[0293]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0294]
由上可知,本实施例提供的计算机设备,接收游戏对局创建请求;获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前游戏对局进程处理的游戏对局对应的负载分数确定;基于负载总分数从进程集群中选取处理游戏对局创建请求的目标游戏对局进程;通过目标游戏对局进程创建目标游戏对局,并基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数。
[0295]
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
[0296]
为此,本公开实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本公开实施例所提供的任一种游戏进程的处理方法中的步骤。例如,该计算机程序可以执行如下步骤:
[0297]
接收游戏对局创建请求;
[0298]
获取当前进程集群中各游戏对局进程的负载总分数,其中,每一游戏对局进程用于处理至少一游戏对局,每一游戏对局进程的负载总分数根据当前游戏对局进程处理的游戏对局对应的负载分数确定;
[0299]
基于负载总分数从进程集群中选取处理游戏对局创建请求的目标游戏对局进程;
[0300]
通过目标游戏对局进程创建目标游戏对局,并基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数。
[0301]
在一些实施例中,每一游戏对局进程的负载总分数根据当前游戏对局进程处理的
游戏对局对应的负载分数确定,包括:
[0302]
确定游戏对局进程当前处理的至少一进行中游戏对局;
[0303]
根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数;
[0304]
基于进行中游戏对局的负载分数确定游戏对局进程的负载总分数。
[0305]
在一些实施例中,在根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数之前,方法还包括:
[0306]
获取进程集群中各游戏对局进程处理预设对局类型的游戏对局对应的负载信息,以及各游戏对局进程处理预设对局类型的游戏对局的对局场次;
[0307]
基于进程集群中的游戏对局进程的进程数量,负载信息以及对局场次,计算预设对局类型对应的负载分数;
[0308]
根据进行中游戏对局的对局类型确定进行中游戏对局的负载分数,包括:
[0309]
从预设对局类型中确定进行中游戏对局对应的目标对局类型;
[0310]
获取目标对局类型的负载分数,得到进行中游戏对局的负载分数。
[0311]
在一些实施例中,基于进程集群中的游戏对局进程的进程数量,负载信息以及对局场次,计算预设对局类型对应的负载分数,包括:
[0312]
根据每一游戏对局进程的负载信息,以及游戏对局进程处理的对局场次计算每一游戏对局进程处理单局游戏对局对应的负载值;
[0313]
对各游戏对局进程处理单局游戏对局对应的负载值进行求和处理,得到和值;
[0314]
计算和值与进程数量的比值,得到预设对局类型对应的负载分数。
[0315]
在一些实施例中,获取当前进程集群中各游戏对局进程的负载总分数,包括:
[0316]
向目标数据库发送针对进程集群的信息访问请求,目标数据库用于存储进程集群中各游戏对局进程的负载分数信息;
[0317]
接收目标数据库基于信息访问请求返回的进程集群的负载分数信息,得到进程集群中各游戏对局进程的负载总分数。
[0318]
在一些实施例中,方法还包括:
[0319]
若在向目标数据库发送针对进程集群的信息访问请求之后的指定时间段内未接收到目标数据库发送的负载分数信息,则从进程集群中选取一游戏对局进程,作为目标游戏对局进程。
[0320]
在一些实施例中,在获取当前进程集群中各游戏对局进程的负载总分数之前,方法还包括:
[0321]
获取进程集群中各游戏对局进程的负载值;
[0322]
基于各游戏对局进程的负载值计算进程集群的平均负载值;
[0323]
若平均负载值不大于第一阈值,则执行获取当前进程集群中各游戏对局进程的负载总分数的步骤。
[0324]
在一些实施例中,进程集群中还包括至少一游戏场景进程,游戏场景进程用于处理游戏场景;
[0325]
方法还包括:
[0326]
若平均负载值大于第一阈值,则获取进程集群中各游戏场景进程的负载信息;
[0327]
基于各游戏场景进程的负载信息中满足预设负载条件的游戏场景进程,确定目标
游戏场景进程;
[0328]
将目标游戏场景进程转换为游戏对局进程,以使通过目标游戏场景进程创建目标游戏对局。
[0329]
在一些实施例中,在通过目标游戏场景进程创建目标游戏对局之后,方法还包括:
[0330]
若进程集群的平均负载值小于第二阈值,则在目标游戏对局结束后,将目标游戏场景进程转换为游戏场景处理进程,以使基于目标游戏场景进程处理游戏场景。
[0331]
在一些实施例中,在获取当前进程集群中各游戏对局进程的负载总分数之前,方法还包括:
[0332]
根据发送游戏对局创建请求的玩家客户端对应的进程集群,从多个进程集群中确定候选进程集群;
[0333]
获取候选进程集群的总负载信息;
[0334]
若总负载信息指示候选进程集群的负载过高,则获取多个进程集群中其他进程集群的负载信息;
[0335]
根据其他进程集群的负载信息中选取负载信息指示负载较低的其他进程集群,得到目标进程集群;
[0336]
获取当前进程集群中各游戏对局进程的负载总分数,包括:
[0337]
获取当前目标进程集群中各游戏对局进程的负载总分数。
[0338]
在一些实施例中,基于目标游戏对局的负载分数更新目标游戏对局进程的负载总分数,包括:
[0339]
计算目标游戏对局的负载分数与目标游戏对局进程的负载总分数的和值,得到目标游戏对局进程的更新后总分数。
[0340]
在一些实施例中,方法还包括:
[0341]
响应于目标游戏对局结束,获取目标游戏对局进程的当前负载总分数;
[0342]
计算当前负载总分数与目标游戏对局进程的负载总分数的差值,得到目标游戏对局进程的更新后总分数。
[0343]
本公开实施例预先根据游戏战斗的类型,结合游戏战斗的负载信息计算不同类型的游戏战斗的单场负载分数,将负载分数作为游戏战斗的负载标准,当接收到战斗创建请求时,根据战斗集群内各战斗进程中的游戏战斗的总负载分数,从战斗集群内选取总负载分数最低的目标战斗进程,通过目标战斗进程响应战斗创建请求,创建游戏战斗,以此,可以实现进程集群中各进程的负载均衡。
[0344]
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0345]
其中,该存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
[0346]
由于该存储介质中所存储的计算机程序,可以执行本公开实施例所提供的任一种游戏进程的处理方法中的步骤,因此,可以实现本公开实施例所提供的任一种游戏进程的处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
[0347]
以上对本公开实施例所提供的一种游戏进程的处理方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的技
术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献