本申请涉及云计算机,具体涉及一种进程启动方法、装置、电子设备及存储介质。
背景技术:
1、函数计算服务作为serverless技术的重要产品,可为用户提供serverless计算全托管服务,用户只需要关注函数代码的编写即可。函数计算是基于各种事件触发,用户的函数代码触发执行时,通常会遇到冷启动时延。为了缓解冷启动问题,目前函数计算服务主要通过事先启动一批没有绑定具体函数代码的容器作为资源池,当有函数运行请求到来时,只需从资源池分配一个已启动的容器绑定加载具体函数代码即可。
2、然而,资源池的容器是事先启动的,容器中主进程的uid(user id,用户id)、gid(group id,组id)在容器启动时即固定下来,并且后续在绑定函数代码时,由主进程为函数代码启动函数进程,该函数进程的uid、gid也是沿用主进程的uid、gid,这样对于函数运行请求中用户指定uid、gid的情况,便无法使用资源池的容器。
技术实现思路
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、在有函数运行请求触发时,通过为函数运行请求分配一个事先启动的并且主进程是以超级用户权限启动的可用容器,由于超级用户权限拥有对系统的完全控制权限,因此在将函数运行请求的待挂载目录挂载到可用容器中之后,由具有超级用户权限的主进程创建函数进程时,函数进程的权限可以动态指定,即可以按照函数运行请求指定的用户权限创建函数进程,从而满足用户需求。并且由于可用容器是事先启动的容器,因此同样可以为动态指定权限的函数代码实现冷启动加速。
1.一种进程启动方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述函数运行请求确定待挂载目录,包括:
3.根据权利要求2所述的方法,其特征在于,所述将所述待挂载目录挂载至所述可用容器中,包括:
4.根据权利要求2所述的方法,其特征在于,在通过所述主进程基于所述待挂载目录在所述可用容器中创建所述函数运行请求中指定用户权限的函数进程之后,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,所述通过所述主进程基于所述待挂载目录在所述可用容器中创建所述函数运行请求中指定用户权限的函数进程,包括:
6.根据权利要求1所述的方法,其特征在于,所述为接收到的函数运行请求分配已启动的可用容器,包括:
7.根据权利要求2-6任一项所述的方法,其特征在于,为接收到的函数运行请求分配已启动的可用容器之前,所述方法还包括:
8.一种进程启动装置,其特征在于,所述装置包括:
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序以实现如权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行以实现如权利要求1-7任一项所述方法的步骤。