本技术涉及计算机,尤其涉及应用服务,提供一种应用服务请求方法、装置、设备及计算机存储介质。
背景技术:
1、目前,后台服务器可以建立多个专用服务器(dedicated server,ds)服务,来实现同时执行多个终端向服务器发送的不同数据处理请求所请求的应用服务。以游戏为例,使用虚幻引擎(unreal engine,ue)开发的多人在线游戏,通常会使用ds服务处理玩家共同的游戏玩法(gameplay)逻辑,即一个ds服务对应一个游戏单局。当游戏有大量玩家需要进行单局游戏时,则需要启动大量的ds服务为玩家提供服务,对服务器的负载要求很高,启动ds服务容易使得游戏发生卡顿,并且ds服务的加载过程持续时间较长,进而玩家进入游戏单局需要较长的时间。
2、相关技术中,采用了seedds模式来解决上述问题,在seedds模式下,服务器运行着多个seedds服务,每个seedds服务对应一种游戏地图类型,当玩家启动该游戏地图对应的单局游戏时,则通过seedds服务复制出ds服务子进程来提供本局服务。这种模式对于地图类型较少的游戏的提升效果是显著的,但是,对于地图类型较多的游戏而言,则需要运行较多的seedds服务,而数量众多的seedds服务不仅不会提升服务器的运行性能,反而会加重服务器的负载,使得游戏运行不佳,进而影响玩家的游戏体验。
3、当然,除了游戏之外,其他同种类型的应用同样会存在这样的问题。
技术实现思路
1、本技术实施例提供一种应用服务请求方法、装置、设备及计算机存储介质,用于降低服务器的资源消耗,提升应用服务性能。
2、一方面,提供一种应用服务请求方法,该方法包括:
3、接收服务调用请求,所述服务调用请求用于请求创建为至少一个终端设备提供服务的目标应用服务;
4、响应于所述服务调用请求,对目标父进程进行复制操作,获得执行所述目标应用服务的目标子进程,所述目标父进程与所述目标子进程共享目标物理内存,且所述目标父进程对应于多种服务场景,所述目标物理内存存储了所述多种服务场景所需的场景资源数据;
5、调用所述目标子进程,加载所述服务调用请求指示的目标服务场景所需的场景资源数据,以构建提供所述目标应用服务所需的目标服务环境;
6、通知所述至少一个终端设备与所述目标子进程建立连接,并通过所述目标服务环境为所述至少一个终端设备提供所述目标应用服务。
7、一方面,提供一种应用服务请求装置,所述装置包括:
8、接收单元,用于接收服务调用请求,所述服务调用请求用于请求创建为至少一个终端设备提供服务的目标应用服务;
9、进程复制单元,用于响应于所述服务调用请求,对目标父进程进行复制操作,获得执行所述目标应用服务的目标子进程,所述目标父进程与所述目标子进程共享目标物理内存,且所述目标父进程对应于多种服务场景,所述目标物理内存存储了所述多种服务场景所需的场景资源数据;
10、资源加载单元,用于调用所述目标子进程,加载所述服务调用请求指示的目标服务场景所需的场景资源数据,以构建提供所述目标应用服务所需的目标服务环境;
11、服务执行单元,用于通知所述至少一个终端设备与所述目标子进程建立连接,并通过所述目标服务环境为所述至少一个终端设备提供所述目标应用服务。
12、在一种可能的实施方式中,所述资源加载单元,具体用于:
13、调用所述目标子进程,基于所述服务调用请求携带的场景标识,从所述多种服务场景中确定所述目标服务场景;
14、针对所述多种服务场景,分别执行如下操作:
15、针对一种服务场景,若所述一种服务场景为所述目标服务场景,则所述目标子进程加载相应的场景资源数据,构建所述目标服务环境;
16、若所述一种服务场景并非所述目标服务场景,则删除相应的场景资源数据。
17、在一种可能的实施方式中,所述装置还包括进程启动单元,用于:
18、启动提供所述目标应用服务的服务器节点中的服务代理进程,所述服务代理进程用于管理所述服务器节点中提供应用服务的子进程;
19、调用所述服务代理进程基于设定的启动参数,启动所述目标父进程;
20、调用所述目标父进程,将所述多种服务场景各自对应的场景资源数据加载至所述目标物理内存。
21、在一种可能的实施方式中,所述进程启动单元,具体用于:
22、调用所述服务代理进程,基于所述启动参数包括的模式指示字段,确定所述服务器节点采用的目标服务模式;
23、若所述目标服务模式为第一模式,则启动所述目标父进程;其中,在所述第一模式时每个父进程对应于多个服务场景。
24、在一种可能的实施方式中,所述进程启动单元,还用于:
25、若所述目标服务模式为第二模式,则基于服务调用请求携带的场景标识,确定相应服务场景所对应的专用父进程;其中,在所述第二模式时每个父进程对应于一个服务场景;
26、对所述专用父进程进行复制操作,获得专用子进程,并通过所述专用子进程为所述服务调用请求对应的至少一个终端提供应用服务;其中,所述专用父进程与所述专用子进程共享目标物理内存,且所述目标物理内存仅存储了相应服务场景所需的场景资源数据。
27、在一种可能的实施方式中,所述进程启动单元,具体用于:
28、调用所述目标父进程读取预设的配置文件,获取服务场景集合,所述服务场景集合包括所述目标父进程需加载资源的服务场景;
29、基于所述服务场景集合,确定需加载资源的所述多种服务场景,并将所述多种服务场景各自对应的场景资源数据加载至所述目标物理内存。
30、在一种可能的实施方式中,所述启动参数还包括场景指示字段;则所述进程启动单元,具体用于:
31、基于所述场景指示字段指示的多个场景标识,确定需加载资源的所述多种服务场景;
32、将所述多种服务场景各自对应的场景资源数据加载至所述目标物理内存。
33、在一种可能的实施方式中,所述进程复制单元,具体用于:
34、响应于所述服务调用请求,对所述目标父进程的目标进程信息进行复制操作,获得备份进程信息;其中,所述目标进程信息包括代码段、用户栈、内核栈、虚拟地址空间、页表中的一种或者多种的组合;
35、基于所述备份进程信息,创建所述目标子进程。
36、在一种可能的实施方式中,所述进程复制单元,具体用于:
37、调用服务代理进程,基于所述服务调用请求携带的场景标识,向所述目标父进程发起服务创建请求;
38、调用所述目标父进程,响应于所述服务创建请求,调用复制应用程序编程接口api,对目标父进程进行复制操作,获得所述目标子进程;其中,复制得到的目标子进程,以所述目标父进程的名义与所述服务代理进程保持初始连接;
39、调用所述目标子进程,断开所述初始连接,并以所述目标子进程的名义重新与所述服务代理进程建立连接。
40、在一种可能的实施方式中,所述服务调用请求用于请求创建为至少一个终端设备中运行的游戏应用,提供游戏后台服务的目标游戏应用服务,且所述目标服务场景为目标游戏地图;
41、则所述资源加载单元,具体用于:
42、调用所述目标子进程,加载所述目标游戏地图所需的场景资源数据,以构建提供所述目标游戏应用服务所需的目标游戏服务环境;其中,所述场景资源数据包括模拟地图资源、游戏角色资源和游戏物品资源中的一种或者多种的组合。
43、一方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种方法的步骤。
44、一方面,提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一种方法的步骤。
45、一方面,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述任一种方法的步骤。
46、本技术实施例中,服务器节点中运行的目标父进程对应于多种服务场景,且该目标父进程对应的目标物理内容缓存了多种服务场景所需的场景资源数据,从而在接收到服务调用请求时,则可以对目标父进程进行复制操作,获得执行目标应用服务的目标子进程,而复制得到的目标子进程与目标父进程共享目标物理内存,从而其也包含了多种服务场景所需的场景资源数据,那么则需要调用目标子进程,加载服务调用请求指示的目标服务场景所需的场景资源数据,以构建提供目标应用服务所需的目标服务环境,进而通知至少一个终端与目标子进程建立连接,并通过目标服务环境为至少一个终端提供目标应用服务。可以看到,本技术实施例中每个目标父进程可以对应多种服务场景,从而可以尽可能的减少每个服务器节点中运行的父进程的数量,例如可以在每个服务器节点中运行一个目标父进程,从而不管场景类型的多少,既可以满足快速加载子进程的需求,又能够尽可能减少服务器节点的负载压力,从而降低服务器的资源消耗,提升应用服务性能。