System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 面向服务器无感知计算场景的轻量化函数运行方法及系统技术方案_技高网

面向服务器无感知计算场景的轻量化函数运行方法及系统技术方案

技术编号:43741130 阅读:1 留言:0更新日期:2024-12-20 13:02
本发明专利技术提供面向服务器无感知计算场景的轻量化函数运行方法及系统,方法包括:提供隔离环境的快速冷启动和高性能中间数据传递的通信原语;为服务器无感知函数计算的工作流场景,提出运行时,作为新型软件栈架构;通过将函数和函数所依赖的底层运行时全部部署于相同的CPU特权级和地址空间,供冷启动操作;利用工作流粒度的库操作系统为函数提供底层运行时服务,同时利用内存安全语言提供内存隔离与共享;为库操作系统实现按需加载机制。本发明专利技术解决了隔离环境冷启动慢、中间数据传递性能较差、冷启动范围大成本高以及内存隔离与共享灵活性差的技术问题。

【技术实现步骤摘要】

本专利技术涉及一种云计算,具体涉及服务器无感知计算场景下的函数运行时。


技术介绍

1、近几年来,由于具备对资源和编程的高度抽象、按需使用计费以及动态扩容等优势,服务器无感知计算成为日益流行的云计算开发范式。与传统的云计算服务类似,当前的服务器无感知计算平台也必须确保不同租户的工作负载之间的隔离。当前的主流方案是基于虚拟机和容器对函数进行封装,再利用如openfaas的框架进行工作流编排。例如公布号为cn114691299a的现有专利技术专利申请文献《一种基于serverless的边缘计算资源管理系统》,该现有方法包括:center serverless用于管理serverless应用和触发器,在中心节点创建并执行serverless应用;edge serverless用于在边缘侧执行serverless应用,并监听节点资源状况,当资源不足时将请求转到中心节点;边缘事件触发器用于获取边缘事件,到达触发条件后将事件信息发送到消息队列中;kata container安全容器用于对用户应用进行强隔离,使各用户应用在运行时互不干扰;多架构runtime环境,在不同架构runtime运行时自动选择匹配的架构,在用户层实现架构无感知。以及公布号为cn114385362a的现有专利技术专利申请文献《一种基于云-边计算的多搬运机器人调度方法》,该现有方法包括:各机器人通过无线通信技术连接至边缘计算服务器,边缘计算服务器请求云计算服务器;边缘计算服务器将多搬运机器人任务调度问题实例化为着色旅行商问题模型,并使用http服务请求云计算服务器的着色旅行商问题求解服务,该服务在云计算服务器采用容器来封装;云计算服务器收到调度请求后执行并行着色旅行商问题求解算法,将多机器人任务调度结果通过http协议发送至边缘计算服务器;边缘计算服务器收到多机器人任务调度结果之后,执行多机器人路径规划算法并将得到的最短路径发送至各机器人。然而,前述现有部署架构形成了需要跨越多个不同的特权级和地址空间的低效、过重的函数软件栈,进而导致降低函数的执行效率。包括外部函数调用事件所触发的冷启动事件或是工作流中间数据传递所导致的内部通信事件,都会被这种软件栈中的虚拟化层所放大,最终累积到用户负载的端到端时延。由于函数通常具有短生命周期特点,这些开销是不可忽略的。例如,安全容器gvisor或微虚拟机firecracker的冷启动时间至少需要100ms,超过了华为云所公布数据中75%的函数的执行时间。除此之外,google公司的一份报告中称,服务间数据传递所产生开销占据数据中心内25%的cpu周期。因此,如何解决当前平台函数运行时底座的冷启动和数据传递开销过高的问题,是服务器无感知计算领域的一个重要挑战。

2、现有部分工作尝试从两个方面分别缓解上述开销:(1)线程级函数抽象,指利用进程内的线程运行工作流中的不同函数,并通过线程的函数调用传递中间数据,代替进程间通信。(2)轻量操作系统,将用户函数代码和其所依赖的操作系统服务部署在相同的特权级的方法。如在unikernel的架构中,库操作系统取代虚拟机中的linux内核,可以以函数调用代替系统调用,从而加速程序的运行速度。然而,上述的方案仍然无法完全消除用户函数、虚拟化层和操作系统模块之间的特权级障碍,必须通过上下文切换才能实现这些组件之间的交互。

3、综上,现有技术存在隔离环境冷启动慢、中间数据传递性能较差、冷启动范围大成本高以及内存隔离与共享灵活性差的技术问题。


技术实现思路

1、本专利技术所要解决的技术问题在于:如何解决现有技术中隔离环境冷启动慢、中间数据传递性能较差、冷启动范围大成本高以及内存隔离与共享灵活性差的技术问题。

2、本专利技术是采用以下技术方案解决上述技术问题的:面向服务器无感知计算场景的轻量化函数运行方法包括:

3、s1、面向服务器无感知计算场景,设置轻量化函数运行时,获取软件栈结构,利用轻量化函数运行方法,将软件栈结构的所有组件聚合于相同的cpu特权级和地址空间,以得到冷启动及中间数据传递通信原语,其中,设置标准库层ms_std、内核功能层mslibos以及全局运行时层msvisor;

4、s2、将轻量化函数,以及轻量化函数依赖的底层运行时,部署至相同的cpu特权级、地址空间,供冷启动操作;

5、s3、利用预置工作流粒度库操作系统,为轻量化函数提供底层运行时的对应服务,利用内存安全语言进行内存隔离操作与共享操作,基于软件故障隔离sfi,获取威胁模型,利用safe rust语言,为租户提供互相隔离函数执行环境,从预置云平台是可信变异环境,获取可执行文件镜像;

6、s4、针对库操作系统,引入按需加载机制,在运行期间动态绑定库操作系统调用的处理函数,设计函数层、工作流层,根据可执行文件镜像进行函数绑定操作。

7、本专利技术提出了一种面向服务器无感知计算场景的轻量化函数运行时,提供隔离环境的快速冷启动和高性能中间数据传递的通信原语。

8、本专利技术利用工作流粒度的库操作系统为函数提供底层运行时服务,同时利用内存安全语言提供灵活的内存隔离与共享。为了进一步缓解冷启动开销,本专利技术为库操作系统实现了按需加载机制。

9、在更具体的技术方案中,s1包括:

10、s11、利用标准库层ms_std生成并提供编程接口层,以将拦截系统调用请求发送至库操作系统;

11、s12、利用内核功能层mslibos,对每个函数工作流,分配库操作系统的实例,对库操作系统进行模块化设计,得到库操作系统模块,供标准库层ms_std调用;

12、s13、利用全局运行时层msvisor,监听外部调用事件,根据工作流配置文件进行实例化指定,得到用户函数,在工作流运行期间,跟踪获取关联主机资源。

13、在更具体的技术方案中,s1中的轻量化函数运行方法包括:

14、s11’、获取并根据全局运行时,对工作流与预置http端点进行绑定操作,并对外暴露;

15、s12’、在外部处理器收到工作流调用事件时,将全局运行时设置为当前的工作流实例化对应的隔离域;

16、s13’、派生新线程并跳转至用户函数的入口点,持续运行直至用户函数调用尚未初始化的库操作系统模块的系统调用接口;

17、s14’、利用用户函数的标准库,通过预置接口通知全局运行时,以进行按需加载,并获取系统调用接口alloc_buffer()的函数地址,以向用户函数分配缓冲区,传递中间数据;

18、s15’、使下一个用户函数执行s11’至s14’,直至调用acquire_buffer(),以获取缓冲区引用,对中间数据进行实现零拷贝读取操作。

19、相比于现有技术,本专利技术提出的运行时是一种专为服务器无感知函数计算的工作流场景提出的新型软件栈架构。通过将函数函数和其所依赖的底层运行时全部部署于相同的cpu特权级和地址空间来缩小冷启动范围和避免昂贵的数据拷贝。

20、在更具体的技术方本文档来自技高网...

【技术保护点】

1.面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述方法包括:

2.根据权利要求1所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述S1包括:

3.根据权利要求1所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述S1中的轻量化函数运行方法包括:

4.根据权利要求3所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述S12’中,对工作流实例进行抽象操作,以得到所述隔离域,根据所述隔离域关联运行当前所述工作流所需的所有实体,其中,所述实体包括:用户函数、库操作系统、内存分区以及其余系统资源。

5.根据权利要求4所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,根据单节点同时运行工作流实例数量,工作流持有库操作系统实例以及所述用户函数,构建所述隔离域。

6.根据权利要求4所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,在所述隔离域中,根据用户源代码确定所述用户函数,获取云服务商的组件数据,利用Rust语言提供软件故障隔离SFI,以控制所述隔离域。

7.根据权利要求1所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述S3中,在所述可信编译环境中,设置Rust编译工具链,所述Rust编译工具链包括:core库;设置用户上传数据约束条件;去除所述用户函数的代码中的unsafe代码块。

8.根据权利要求1所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述S4中,利用所述函数层,跟踪单个函数实例已绑定所述库操作系统的接口,在所述函数实例调用内核服务时,在safe Rust的约束下,经过所述标准库层的接口,所述标准库层检查自身内部是否已注册下游模块的函数地址条目,若否,则进入所述工作流层。

9.根据权利要求1所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述S4中,利用所述工作流层,保存当前工作流中,所有已加载的库操作系统模块;所述标准库层ms_std通过调用特定接口,退出到所述全局运行时层msvisor;利用所述全局运行时层msvisor判断待调用接口与所述库操作系统模块的归属关系,以查看所述库操作系统模块是否存在于隔离域中;若是,则从所述库操作系同模块的所述函数实例中检索函数地址,若否,则从所述可执行文件镜像中实例化所述可操作系统模块。

10.面向服务器无感知计算场景的轻量化函数运行系统,其特征在于,所述系统包括:

...

【技术特征摘要】

1.面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述方法包括:

2.根据权利要求1所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述s1包括:

3.根据权利要求1所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述s1中的轻量化函数运行方法包括:

4.根据权利要求3所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,所述s12’中,对工作流实例进行抽象操作,以得到所述隔离域,根据所述隔离域关联运行当前所述工作流所需的所有实体,其中,所述实体包括:用户函数、库操作系统、内存分区以及其余系统资源。

5.根据权利要求4所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,根据单节点同时运行工作流实例数量,工作流持有库操作系统实例以及所述用户函数,构建所述隔离域。

6.根据权利要求4所述的面向服务器无感知计算场景的轻量化函数运行方法,其特征在于,在所述隔离域中,根据用户源代码确定所述用户函数,获取云服务商的组件数据,利用rust语言提供软件故障隔离sfi,以控制所述隔离域。

7.根据权利要求1所述的面向服务器无感知计算场景的轻量化函数运行方法,其特...

【专利技术属性】
技术研发人员:赵来平尤嘉宁李克秋陈胜
申请(专利权)人:天津大学合肥创新发展研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1