CN111158855A - 一种基于微容器及云函数的轻量虚拟化裁剪方法 - Google Patents
一种基于微容器及云函数的轻量虚拟化裁剪方法 Download PDFInfo
- Publication number
- CN111158855A CN111158855A CN201911319222.9A CN201911319222A CN111158855A CN 111158855 A CN111158855 A CN 111158855A CN 201911319222 A CN201911319222 A CN 201911319222A CN 111158855 A CN111158855 A CN 111158855A
- Authority
- CN
- China
- Prior art keywords
- service
- container
- micro
- state
- job
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于微容器及云函数的轻量虚拟化裁剪方法。同时,作为该方法的实施例,本发明还提供了基于微容器及云函数的轻量虚拟化裁剪方法及系统,包括将用户的服务请求的执行代码编译为执行文件,根据该执行文件和基础容器镜像,生成轻量化可供用户以“云函数”方式调用的钥匙微容器镜像,根据该钥匙微容器镜像启动钥匙微容器,钥匙微容器向该服务请求对应业务的资源代理容器,发送作业请求指令;该资源代理容器根据该作业请求指令,对该业务选择一个已经开启微服务控制组,将该业务写入该微服务控制组的作业等待队列,长时运行服务器容器从作业等待队列获取该业务并进行作业处理,得到该服务请求的作业处理结果。本发明由此具有:启动速度快和计算服务动态扩缩容等技术效果。
Description
技术领域
本发明涉及并行计算技术中的容器虚拟化领域,并特别涉及一种基于微容器及云函数的轻量虚拟化裁剪方法。
背景技术
在当今的IT 3.0时代,目前整体IT行业受到大数据、云计算和AI在内的三方面技术相互促进和融合的影响,容器(Container)逐渐成为了所有计算运行的统一载体。然而,用户在一个统一的平台上获取AI、Bigdate、Cloud和高性能并行计算在内的多种微服务时,每个基于容器运行的微服务需要按需启动和关闭。而微容器的运行时间包括容器启动时间、容器业务执行时间和容器关闭时间。因此,作为超算和数据中心系统软件支柱技术之一的容器快速启动技术,其设计的合理性是降低容器启动时间,提升应用用户体验的关键。
目前针对云计算的作业启动技术中,常用的方法主要包括两种:1)业务容器裁剪:针对一些需要在机群系统中频繁进行作业迁移,且延时敏感的实时性计算作业。现有方法对现有容器业务镜像进行裁剪,将与业务执行过程无关但需要在容器启动过程中进行初始化的系统调用库和应用工具库进行删减。2)长时间运行机制:将计算业务的服务与物理机器或虚拟机进行绑定,而运行固定计算业务的物理机对用户暴露固定数量的长时间运行的服务接口。由于用户每次的计算请求都由一直处于服务处理状态的物理机或虚拟机完成,从而避免了每次计算业务启动的耗时过程。
目前云计算场景大多以容器为业务承载方式的多租户、高吞吐作业。但是,现有技术仍然存在技术方面的不足。一方面,现有技术在业务启动速度方面性能仍然表现不佳。另外,由于没有对用户屏蔽其请求的服务的计算资源,增加了系统安全风险。再者,长时间运行的服务在服务请求比较少的闲置状态,会造成系统计算和存储资源的较大浪费,降低系统资源的利用率。
发明内容
本发明提供一种基于微容器及云函数的轻量虚拟化裁剪方法。同时,作为该方法的实施例,本发明还提供了基于微容器及云函数的轻量虚拟化裁剪系统。发明具体包括钥匙微容器镜像裁剪构造与业务请求方法、基于等待与完成队列的作业处理方法、运行状态机对长时运行服务容器的控制方法和计算资源的动态扩容与缩容方法。该系统包含钥匙微容器的生成与启动模块,运行时控制模块,动态扩缩控制模块。
钥匙微容器的生成与启动模块,首先将用户对计算服务请求的执行代码编译成二进制文件,再基于Scratch作为基础镜像,生成可供用户以“云函数”方式调用的钥匙微容器镜像。在这种“云函数”的业务调用方式中,用户将以函数调用的方式发起业务请求。当用户提出计算请求后,该模块根据已生成的钥匙微容器镜像启动钥匙微容器。
运行时控制模块,一方面将根据容器作业等待队列情况,调整并控制长时运行服务容器的工作状态。另一方面,该模块将利用作业等待与完成队列,实现资源代理容器同时管理多个容器控制组。
动态扩缩控制模块,通过每个计算节点的动态扩缩控制器,开启或关闭微服务容器组的各个组件,保证在不影响用户作业执行速度前提下,提高计算资源的利用率。
针对现有技术的不足,本发明提出一种基于微容器及云函数的轻量虚拟化裁剪方法,其中包括:
步骤1、将用户的服务请求的执行代码编译为执行文件,根据该执行文件和基础容器镜像,生成轻量化的钥匙微容器镜像,根据该钥匙微容器镜像启动钥匙微容器,钥匙微容器向该服务请求对应业务的资源代理容器,发送作业请求指令;
步骤2、该资源代理容器根据该作业请求指令,对该业务选择一个已经开启微服务控制组,将该业务写入该微服务控制组的作业等待队列,长时运行服务器容器从作业等待队列获取该业务并进行作业处理,得到该服务请求的作业处理结果。
所述的基于微容器及云函数的轻量虚拟化裁剪方法,其中还包括:
步骤3、运行状态机收到扩容指令后,将工作状态从未启动状态调整至服务扩容状态,待微服务容器控制组各个组件完成初始化,上一运行作业完成执行后,进入等待作业状态,判断当前微服务控制组的作业等待队列是否为空,若是,则选择进入步骤5,否则选择进入步骤4;
步骤4、运行状态机向作业等待队列发送作业读取请求,使队列头部的作业项出队,并发送给长时运行服务容器进行处理,重置作业等待队列为空,重置计时器为零;
步骤5、运行状态机进入“服务缩容”状态,利用计时器,在作业等待队列为空时进行计时,只有当队列为非空时,进入执行服务作业状态,如果判断当前计时已达到缩容要求则执行步骤7,否则进入步骤6;
步骤6、单位间隔时间是由系统设计者自定的时间间隔,在该时间间隔后,再次判断作业队列是否为空,若为非空则进入该步骤4进行作业处理,否则将单位间隔时间累加到等待队列的“空”状态计时器,并进入该步骤5。
步骤7、运行状态机向扩缩控制器代理组件,发送缩容信号,待微服务容器控制组各个组件完成关闭,进入“未启动”状态。
所述的基于微容器及云函数的轻量虚拟化裁剪方法,其中还包括:
步骤8、当用户通过钥匙微容器向资源代理容器发送用户请求,但没有可用的微服务容器时,资源代理容器向各个计算节点发送“未满足的用户请求”;
步骤9、计算节点的动态扩容控制器在收到“未满足的用户请求”后,向该节点上处于未运行状态的微服务容器控制组,发送扩容控制信号;
步骤10、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件发送组件启动信号,同时运行状态机进入服务扩容状态;
步骤11、在扩缩控制器代理组件进入等待扩缩容指令状态;
步骤12、当微服务容器控制组的作业等待队列处于“空”状态的时间大于预设值,且运行状态机进入“服务缩容”状态时,进行计时;
步骤13:当已经达到缩容计时要求时,运行状态机的工作状态更新为“未启动”,并向计算节点的动态扩容控制器发送缩容信号;
步骤14、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件,发出组件关闭信号,运行状态机从服务缩容进入未启动状态。
所述的基于微容器及云函数的轻量虚拟化裁剪方法,其中该微服务控制组包含该长时运行服务容器。
所述的基于微容器及云函数的轻量虚拟化裁剪方法,其中该初始化包括:启动组件对应的容器。
本发明还提出一种基于微容器及云函数的轻量虚拟化裁剪系统,其中包括:
模块1、将用户的服务请求的执行代码编译为执行文件,根据该执行文件和基础容器镜像,生成轻量化的钥匙微容器镜像,根据该钥匙微容器镜像启动钥匙微容器,钥匙微容器向该服务请求对应业务的资源代理容器,发送作业请求指令;
模块2、该资源代理容器根据该作业请求指令,对该业务选择一个已经开启微服务控制组,将该业务写入该微服务控制组的作业等待队列,长时运行服务器容器从作业等待队列获取该业务并进行作业处理,得到该服务请求的作业处理结果。
所述的基于微容器及云函数的轻量虚拟化裁剪系统,其中还包括:
模块3、运行状态机收到扩容指令后,将工作状态从未启动状态调整至服务扩容状态,待微服务容器控制组各个组件完成初始化,上一运行作业完成执行后,进入等待作业状态,判断当前微服务控制组的作业等待队列是否为空,若是,则选择进入模块5,否则选择进入模块4;
模块4、运行状态机向作业等待队列发送作业读取请求,使队列头部的作业项出队,并发送给长时运行服务容器进行处理,重置作业等待队列为空,重置计时器为零;
模块5、运行状态机进入“服务缩容”状态,利用计时器,在作业等待队列为空时进行计时,只有当队列为非空时,进入执行服务作业状态,如果判断当前计时已达到缩容要求则执行模块7,否则进入模块6;
模块6、单位间隔时间是由系统设计者自定的时间间隔,在该时间间隔后,再次判断作业队列是否为空,若为非空则进入该模块4进行作业处理,否则将单位间隔时间累加到等待队列的“空”状态计时器,并进入该模块5。
模块7、运行状态机向扩缩控制器代理组件,发送缩容信号,待微服务容器控制组各个组件完成关闭,进入“未启动”状态。
所述的基于微容器及云函数的轻量虚拟化裁剪系统,其中还包括:
模块8、当用户通过钥匙微容器向资源代理容器发送用户请求,但没有可用的微服务容器时,资源代理容器向各个计算节点发送“未满足的用户请求”;
模块9、计算节点的动态扩容控制器在收到“未满足的用户请求”后,向该节点上处于未运行状态的微服务容器控制组,发送扩容控制信号;
模块10、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件发送组件启动信号,同时运行状态机进入服务扩容状态;
模块11、在扩缩控制器代理组件进入等待扩缩容指令状态;
模块12、当微服务容器控制组的作业等待队列处于“空”状态的时间大于预设值,且运行状态机进入“服务缩容”状态时,进行计时;
模块13:当已经达到缩容计时要求时,运行状态机的工作状态更新为“未启动”,并向计算节点的动态扩容控制器发送缩容信号;
模块14、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件,发出组件关闭信号,运行状态机从服务缩容进入未启动状态。
所述的基于微容器及云函数的轻量虚拟化裁剪系统,其中该微服务控制组包含该长时运行服务容器。
所述的基于微容器及云函数的轻量虚拟化裁剪系统,其中该初始化包括:启动组件对应的容器。
由以上方案可知,本发明的优点在于:
1)启动速度快:每次伴随用户的作业请求而启动和关闭的容器,具有启动时间短,容器镜像文件占用的存储容量小的优点,而非采用现有技术中常见的两种方式:通过容器编排系统如Swarm、Kubernetes、Mesos等,以提交作业请求方式,启动一个或一组容器或;通过容器运行时软件,如Docker,singularity等,启动单个容器。2)屏蔽服务和计算资源细节:用户仅与其启动的轻量容器进行交互,而无法直接与实际运行作业的容器及其相关计算进程进行交互,避免了由于人为所导致的系统不安全隐患。3)计算服务动态扩缩容:实际执行计算任务的长时间运行服务容器,能够根据其自身服务当前被请求的频繁程度,自动进行服务的扩容和缩容。一方面,自动扩容能有效避免由于多个用户同时请求服务,导致排队延迟。另一方面,自动缩容能有效避免由于计算服务闲置,而导致“空跑”的长时间服务容器对计算资源的浪费。
附图说明
图1为容器快速启动系统结构图;
图2为现有容器与钥匙微容器在镜像层次划分上的对比示意图;
图3为对用户的屏蔽服务内容与计算资源的原理图;
图4为钥匙微容器镜像裁剪构造与业务请求流程图;
图5为基于双队列的计算作业执行原理图;
图6为基于等待与完成队列的作业处理流程图;
图7为运行状态机控制长时运行服务容器的状态转移图;
图8为运行状态机对长时运行服务容器的控制流程图;
图9为针对长时运行服务的资源动态扩缩容原理图;
图10为计算资源的动态扩容与缩容流程图。
具体实施方式
本发明的加快容器启动的关键点是利用长时运行服务的“空间”,来换取业务容器启动的时间。详细的说,是在容器启动过程中,利用长时间运行的在线服务,来替代业务容器启动时需要逐层初始化调用和多次调用的系统依赖库的问题。所以从原理上,是一种用“空间”(即在线运行服务消耗额外计算资源),换区“时间”(业务容器启动时间)的优化方法。在本发明的容器启动设计中,将仅包含作业请求指令的轻量容器(钥匙微容器),作为每次用户按需启动的容器。
此外,设计了长时间运行计算服务可按需动态扩缩容的优化设计。一方面,扩容设计可根据用户的作业需求情况,有针对性地避免某在线运行服务需求过多导致用户需求排队等待,形成计算等待“时间”增长的问题。另一方面,缩容设计可避免由于过多空闲的在线运行服务造成计算资源浪费,形成“空间”浪费。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
如图1所示,本发明包含三个子模块:钥匙微容器的生成与启动模块,运行时控制模块,动态扩缩控制模块。
针对钥匙微容器的生成与启动模块,本发明提供一种容器镜像裁剪构造与业务请求的方法。其特征如图2和图3所示,具有如下两个:
1)钥匙微容器镜像小:用户每次作业请求会启动“钥匙”容器,该容器的容器镜像从组成结构上区别于传统重载业务容器,如图2所示。传统重载业务容器由于自低至上包含了用户需要运行业务软件的各个依赖环境和库函数,因此容器镜像大小较大,通常大于100MByte。而钥匙微容器的镜像文件,除了启动容器所需的最基本的基础操作系统层(Scratch)之外,仅包含用于提交作业请求的二进制代码,因此其容器镜像大小将小于10MByte。
2)钥匙微容器启动速度快:由于构造镜像的层级越多,容器的启动时就需要花费更多时间进行逐级启动。因此,容器的启动速度与构造容器镜像的层次深度是成反比的。具有更薄层次结构的钥匙微容器,虽然在其启动时间会根据处理器体系结构的不同而存在差异,但是启动速度会明显优于重载业务容器,更适合用于一些频繁启动多次调用的计算服务业务,如在线视频监控与人脸识别、高频数据采样和分析、无人驾驶领域的车道识别等计算业务场景。
3)对用户屏蔽服务内容和计算资源:钥匙微容器启动后,并不会与现有技术一样直接与负责计算业务的业务容器直接沟通。取而代之方法如图3所示采取资源代理方式,向计算资源相关的资源代理容器提交计算请求,再由资源代理容器转达其计算请求至负责计算业务的容器。这种通过资源代理的方式来沟通用户启动的容器和实际计算业务的容器,不仅能有效针对不同用户进行计算资源的管理,同时还能够有效地将用户请求进程与业务执行进程进行隔离。这种进程间隔离技术能够有效地将服务内容和计算资源对用户直接运行的进程进行屏蔽,能有效避免人为的不良进程对核心计算服务进程的恶意访问。
本发明提出一种钥匙微容器镜像裁剪构造与业务请求的流程,具体实施细节如图4所示,详细步骤如下:
步骤11:针对用户请求,判断机群镜像仓库是否已存储其钥匙微容器镜像,若不存在则先执行镜像裁剪构造流程。根据用户和计算作业的类型,面向特定业务的资源代理容器,生成发送用户服务请求的执行代码。
步骤12:利用步骤11执行代码的对应编译器,将执行代码编译成二进制可执行文件。
步骤13:基于Scratch基础容器镜像和步骤12生成的可执行文件,产生可生成钥匙微容器的容器镜像构建文件Dockerfile文件。
步骤14:根据Dockerfile文件和Scratch基础容器镜像,生成用户请求的容器镜像文件,并将之存入镜像仓库。
步骤15:按照用户的服务请求,从镜像仓库中拉取与之对应的钥匙微容器镜像,并启动钥匙微容器。启动容器,先要具有用于构造容器的容器镜像文件,才能启动。容器镜像文件是启动容器的必须。容器镜像文件是由软件开发者制作开发的,用于描述容器内所执行的代码的功能和以来环境。而用户作为使用者,如果需要启动包含某应用的容器前,需要先具有该容器的镜像文件。所有启动容器的工具和方式,都需要按照镜像文件中描述容器构造细节,才能启动对应的容器。
步骤16:钥匙微容器向用户所请求的对应业务的资源代理容器,发送作业请求指令,并等待资源代理容器反馈计算和服务运行结果信息。
所述运行时控制模块的特征包含以下两个。
1)双队列缓冲设计:一方面,运行时控制模块利用双队列结构,避免了由于用户服务请求速度与长时运行服务容器执行作业速度不一致的问题。
2)基于状态转移的运行时控制:另一方面,运行时控制模块利用运行状态机控制产试运行服务容器的工作状态,使原本只能处于单一工作状态的业务容器,能够根据实际作业负载请求量,改变容器运行状态。
基于双队列的计算作业执行原理图,如图5所示,本发明提出一种基于等待与完成队列的作业处理方法,具体实施步骤如图6所述,详细步骤如下:
步骤21:资源代理容器收到钥匙微容器的作业请求指令,对所请求的计算业务,选择一个已经开启且作业等待队列非“满”的微服务控制组。当有多个微服务控制组可供选择时,选择具有作业排队数量最少的微服务控制组。
步骤22:对选定的微服务控制组的作业等待队列,将服务作业写入作业等待队列的队尾,进入作业等待状态。微服务控制组内包含了多个组件,其中就包括长时运行服务容器。
步骤23:当长时运行服务容器处于可处理作业的状态,且作业等待队列为非空时,作业等待队列的队头作业出队,并通过长时运行服务器容器进行作业处理。
步骤24:长时运行服务容器完成作业处理后,根据作业执行状态,产生作业完成事件,写入作业完成队列。
步骤25:当作业完成队列为“非空”状态时,将队头完成事件内作业执行结果反馈给资源代理容器以及钥匙微容器。
运行状态机控制长时运行服务容器的状态转移图,如图7所示。本发明提出一种运行状态机对长时运行服务容器的控制方法,具体实施步骤如图8所述,详细步骤如下:
步骤31:运行状态机收到扩缩控制器代理组件的扩容指令后,将工作状态从“未启动”状态调整至“服务扩容”状态。微服务容器控制组各个组件开始进行初始化。
步骤32:待微服务容器控制组各个组件完成初始化(组件对应的容器的启动过程),上一运行作业完成执行后,进入“等待作业”状态。按照图7所示,根据当前微服务控制组的作业等待队列空满状态。当作业等待队列为空,则选择进入步骤35。若作业等待队列不为空,则选择进入步骤34。
步骤33:运行状态机向作业等待队列发送作业读取请求,使队列头部的作业项出队,并发送给长时运行服务容器进行处理,重置作业等待队列为“空”状态计时器为零。
步骤34:进入“服务缩容”状态,利用计时器,在作业等待队列为“空”状态时进行计时。只有当队列为非空时,进入执行服务作业状态。如果判断当前“空”状态的计时,已经达到了缩容要求(“空”状态的计时数值,到达系统设计者设置的缩容门限阈值)则进入步骤37进行缩容。再次判断是否达到缩容计时要求,若尚未达到缩容要求则进入步骤36。
步骤35:单位间隔时间是由系统设计者自定的时间间隔,在该时间间隔后,再次判断作业队列是否为空,若为非空则进入步骤34进行作业处理。若为空,将单位间隔时间累加到等待队列的“空”状态计时器,并进入步骤35。
步骤36:运行状态机向扩缩控制器代理组件,发送缩容信号,待微服务容器控制组各个组件完成关闭,进入“未启动”状态。
所述动态扩缩控制模块的特征包含以下两个。
1)由“未满足的用户请求”产生扩容信号:当微服务容器控制组内的长时运行服务容器处于满负荷工作状态时,即作业等待队列为“满”,该微服务容器控制组将不能再接收钥匙微容器所发出的作业请求。当机群中各个计算节点都没有能够接收作业请求时,资源代理容器需要向各个节点的动态扩缩容控制器发出为满足用户请求信号,使收到信号的计算节点对该计算业务执行服务扩容,开启未运行的微服务容器控制组内的长时运行服务容器。
2)由长时间处于“空”状态的作业等待队列产生缩容信号:由于微服务容器控制组内的长时运行服务容器需要占用计算和存储资源,过多开启闲置的微服务容器将会导致计算资源的浪费。判断服务是否闲置的标准是:在长时运行服务容器没有处于执行服务作业状态,且作业等待队列的“空”状态时间超过服务闲置时间要求。对作业等待队列长时间处于“空”状态的微服务容器控制组,将执行服务缩容,以降低计算资源的闲置浪费。
本发明提出一种计算资源的动态扩容与缩容方法,具体实施步骤如图9所述。针对长时运行服务的资源动态扩缩容原理图,如图10所示。其中步骤41至步骤43为扩容执行步骤,而步骤45至步骤47为缩容执行步骤,详细步骤如下:
步骤41:当用户通过钥匙微容器向资源代理容器发送用户请求,但没有可用的微服务容器时,资源代理容器向各个计算节点发送“未满足的用户请求”。
步骤42:计算节点的动态扩容控制器在收到“未满足的用户请求”后,向该节点上处于未运行状态的微服务容器控制组,发送扩容控制信号(扩容指令)。
步骤43:扩缩控制器代理组件对其所在的微服务容器控制组的各个组件发送组件启动信号。同时,运行状态机进入服务扩容状态。
步骤44:在扩缩控制器代理组件进入等待扩缩容指令状态。
步骤45:当某微服务容器控制组的作业等待队列长时间处于“空”状态,且运行状态机进入“服务缩容”状态时,进行计时。
步骤46:当已经达到缩容计时要求时,运行状态机的工作状态更新为“未启动”,并向计算节点的动态扩容控制器发送缩容信号。
步骤47:扩缩控制器代理组件对其所在的微服务容器控制组的各个组件,发出组件关闭信号。运行状态机从服务缩容进入未启动状态。
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提出一种基于微容器及云函数的轻量虚拟化裁剪系统,其中包括:
模块1、将用户的服务请求的执行代码编译为执行文件,根据该执行文件和基础容器镜像,生成轻量化的钥匙微容器镜像,根据该钥匙微容器镜像启动钥匙微容器,钥匙微容器向该服务请求对应业务的资源代理容器,发送作业请求指令;
模块2、该资源代理容器根据该作业请求指令,对该业务选择一个已经开启微服务控制组,将该业务写入该微服务控制组的作业等待队列,长时运行服务器容器从作业等待队列获取该业务并进行作业处理,得到该服务请求的作业处理结果。
所述的基于微容器及云函数的轻量虚拟化裁剪系统,其中还包括:
模块3、运行状态机收到扩容指令后,将工作状态从未启动状态调整至服务扩容状态,待微服务容器控制组各个组件完成初始化,上一运行作业完成执行后,进入等待作业状态,判断当前微服务控制组的作业等待队列是否为空,若是,则选择进入模块5,否则选择进入模块4;
模块4、运行状态机向作业等待队列发送作业读取请求,使队列头部的作业项出队,并发送给长时运行服务容器进行处理,重置作业等待队列为空,重置计时器为零;
模块5、运行状态机进入“服务缩容”状态,利用计时器,在作业等待队列为空时进行计时,只有当队列为非空时,进入执行服务作业状态,如果判断当前计时已达到缩容要求则执行模块7,否则进入模块6;
模块6、单位间隔时间是由系统设计者自定的时间间隔,在该时间间隔后,再次判断作业队列是否为空,若为非空则进入该模块4进行作业处理,否则将单位间隔时间累加到等待队列的“空”状态计时器,并进入该模块5。
模块7、运行状态机向扩缩控制器代理组件,发送缩容信号,待微服务容器控制组各个组件完成关闭,进入“未启动”状态。
所述的基于微容器及云函数的轻量虚拟化裁剪系统,其中还包括:
模块8、当用户通过钥匙微容器向资源代理容器发送用户请求,但没有可用的微服务容器时,资源代理容器向各个计算节点发送“未满足的用户请求”;
模块9、计算节点的动态扩容控制器在收到“未满足的用户请求”后,向该节点上处于未运行状态的微服务容器控制组,发送扩容控制信号;
模块10、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件发送组件启动信号,同时运行状态机进入服务扩容状态;
模块11、在扩缩控制器代理组件进入等待扩缩容指令状态;
模块12、当微服务容器控制组的作业等待队列处于“空”状态的时间大于预设值,且运行状态机进入“服务缩容”状态时,进行计时;
模块13:当已经达到缩容计时要求时,运行状态机的工作状态更新为“未启动”,并向计算节点的动态扩容控制器发送缩容信号;
模块14、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件,发出组件关闭信号,运行状态机从服务缩容进入未启动状态。
所述的基于微容器及云函数的轻量虚拟化裁剪系统,其中该微服务控制组包含该长时运行服务容器。
所述的基于微容器及云函数的轻量虚拟化裁剪系统,其中该初始化包括:启动组件对应的容器。
Claims (10)
1.一种基于微容器及云函数的轻量虚拟化裁剪方法,其特征在于,包括:
步骤1、将用户的服务请求的执行代码编译为执行文件,根据该执行文件和基础容器镜像,生成供用户以云函数方式调用的轻量化钥匙微容器镜像,根据该钥匙微容器镜像启动钥匙微容器,该钥匙微容器向该服务请求对应业务的资源代理容器,发送作业请求指令;
步骤2、该资源代理容器根据该作业请求指令,对该业务选择一个已经开启微服务控制组,将该业务写入该微服务控制组的作业等待队列,长时运行服务器容器从作业等待队列获取该业务并进行作业处理,得到该服务请求的作业处理结果。
2.如权利要求1所述的基于微容器及云函数的轻量虚拟化裁剪方法,其特征在于,还包括:
步骤3、运行状态机收到扩容指令后,将工作状态从未启动状态调整至服务扩容状态,待微服务容器控制组各个组件完成初始化,上一运行作业完成执行后,进入等待作业状态,判断当前微服务控制组的作业等待队列是否为空,若是,则选择进入步骤5,否则选择进入步骤4;
步骤4、运行状态机向作业等待队列发送作业读取请求,使队列头部的作业项出队,并发送给长时运行服务容器进行处理,重置作业等待队列为空,重置计时器为零;
步骤5、运行状态机进入“服务缩容”状态,利用计时器,在作业等待队列为空时进行计时,只有当队列为非空时,进入执行服务作业状态,如果判断当前计时已达到缩容要求则执行步骤7,否则进入步骤6;
步骤6、单位间隔时间是由系统设计者自定的时间间隔,在该时间间隔后,再次判断作业队列是否为空,若为非空则进入该步骤4进行作业处理,否则将单位间隔时间累加到等待队列的“空”状态计时器,并进入该步骤5。
步骤7、运行状态机向扩缩控制器代理组件,发送缩容信号,待微服务容器控制组各个组件完成关闭,进入“未启动”状态。
3.如权利要求1或2所述的基于微容器及云函数的轻量虚拟化裁剪方法,其特征在于,还包括:
步骤8、当用户通过钥匙微容器向资源代理容器发送用户请求,但没有可用的微服务容器时,资源代理容器向各个计算节点发送“未满足的用户请求”;
步骤9、计算节点的动态扩容控制器在收到“未满足的用户请求”后,向该节点上处于未运行状态的微服务容器控制组,发送扩容控制信号;
步骤10、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件发送组件启动信号,同时运行状态机进入服务扩容状态;
步骤11、在扩缩控制器代理组件进入等待扩缩容指令状态;
步骤12、当微服务容器控制组的作业等待队列处于“空”状态的时间大于预设值,且运行状态机进入“服务缩容”状态时,进行计时;
步骤13:当已经达到缩容计时要求时,运行状态机的工作状态更新为“未启动”,并向计算节点的动态扩容控制器发送缩容信号;
步骤14、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件,发出组件关闭信号,运行状态机从服务缩容进入未启动状态。
4.如权利要求3所述的基于微容器及云函数的轻量虚拟化裁剪方法,其特征在于,该微服务控制组包含该长时运行服务容器。
5.如权利要求3所述的基于微容器及云函数的轻量虚拟化裁剪方法,其特征在于,该初始化包括:启动组件对应的容器。
6.一种基于微容器及云函数的轻量虚拟化裁剪系统,其特征在于,包括:
模块1、将用户的服务请求的执行代码编译为执行文件,根据该执行文件和基础容器镜像,生成轻量化的钥匙微容器镜像,根据该钥匙微容器镜像启动钥匙微容器,钥匙微容器向该服务请求对应业务的资源代理容器,发送作业请求指令;模块2、该资源代理容器根据该作业请求指令,对该业务选择一个已经开启微服务控制组,将该业务写入该微服务控制组的作业等待队列,长时运行服务器容器从作业等待队列获取该业务并进行作业处理,得到该服务请求的作业处理结果。
7.如权利要求6所述的基于微容器及云函数的轻量虚拟化裁剪系统,其特征在于,还包括:
模块3、运行状态机收到扩容指令后,将工作状态从未启动状态调整至服务扩容状态,待微服务容器控制组各个组件完成初始化,上一运行作业完成执行后,进入等待作业状态,判断当前微服务控制组的作业等待队列是否为空,若是,则选择进入模块5,否则选择进入模块4;
模块4、运行状态机向作业等待队列发送作业读取请求,使队列头部的作业项出队,并发送给长时运行服务容器进行处理,重置作业等待队列为空,重置计时器为零;
模块5、运行状态机进入“服务缩容”状态,利用计时器,在作业等待队列为空时进行计时,只有当队列为非空时,进入执行服务作业状态,如果判断当前计时已达到缩容要求则执行模块7,否则进入模块6;
模块6、单位间隔时间是由系统设计者自定的时间间隔,在该时间间隔后,再次判断作业队列是否为空,若为非空则进入该模块4进行作业处理,否则将单位间隔时间累加到等待队列的“空”状态计时器,并进入该模块5。
模块7、运行状态机向扩缩控制器代理组件,发送缩容信号,待微服务容器控制组各个组件完成关闭,进入“未启动”状态。
8.如权利要求6或7所述的基于微容器及云函数的轻量虚拟化裁剪系统,其特征在于,还包括:
模块8、当用户通过钥匙微容器向资源代理容器发送用户请求,但没有可用的微服务容器时,资源代理容器向各个计算节点发送“未满足的用户请求”;
模块9、计算节点的动态扩容控制器在收到“未满足的用户请求”后,向该节点上处于未运行状态的微服务容器控制组,发送扩容控制信号;
模块10、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件发送组件启动信号,同时运行状态机进入服务扩容状态;
模块11、在扩缩控制器代理组件进入等待扩缩容指令状态;
模块12、当微服务容器控制组的作业等待队列处于“空”状态的时间大于预设值,且运行状态机进入“服务缩容”状态时,进行计时;
模块13:当已经达到缩容计时要求时,运行状态机的工作状态更新为“未启动”,并向计算节点的动态扩容控制器发送缩容信号;
模块14、扩缩控制器代理组件对其所在的微服务容器控制组的各个组件,发出组件关闭信号,运行状态机从服务缩容进入未启动状态。
9.如权利要求7所述的基于微容器及云函数的轻量虚拟化裁剪系统,其特征在于,该微服务控制组包含该长时运行服务容器。
10.如权利要求7所述的基于微容器及云函数的轻量虚拟化裁剪系统,其特征在于,该初始化包括:启动组件对应的容器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911319222.9A CN111158855B (zh) | 2019-12-19 | 2019-12-19 | 一种基于微容器及云函数的轻量虚拟化裁剪方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911319222.9A CN111158855B (zh) | 2019-12-19 | 2019-12-19 | 一种基于微容器及云函数的轻量虚拟化裁剪方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111158855A true CN111158855A (zh) | 2020-05-15 |
CN111158855B CN111158855B (zh) | 2023-06-23 |
Family
ID=70557436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911319222.9A Active CN111158855B (zh) | 2019-12-19 | 2019-12-19 | 一种基于微容器及云函数的轻量虚拟化裁剪方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111158855B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782369A (zh) * | 2020-07-01 | 2020-10-16 | 浪潮云信息技术股份公司 | 一种Go语言下的数据任务处理系统及方法 |
CN112035228A (zh) * | 2020-08-28 | 2020-12-04 | 光大科技有限公司 | 一种资源调度方法及装置 |
CN112153036A (zh) * | 2020-09-18 | 2020-12-29 | 湖南联盛网络科技股份有限公司 | 一种基于代理服务器的安全防御方法及系统 |
CN112346817A (zh) * | 2020-10-20 | 2021-02-09 | 北京健康之家科技有限公司 | 容器启动方法、装置、存储介质及计算机设备 |
WO2022120577A1 (zh) * | 2020-12-08 | 2022-06-16 | 中国科学院深圳先进技术研究院 | 一种预处理函数的无服务器计算方法及其系统 |
CN111782369B (zh) * | 2020-07-01 | 2024-05-31 | 浪潮云信息技术股份公司 | 一种Go语言下的数据任务处理系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021608A (zh) * | 2017-10-31 | 2018-05-11 | 赛尔网络有限公司 | 一种基于Docker的轻量级网站部署方法 |
CN108139935A (zh) * | 2015-10-23 | 2018-06-08 | 华为技术有限公司 | 业务定义容器的资源约束的扩展 |
CN109062658A (zh) * | 2018-06-29 | 2018-12-21 | 优刻得科技股份有限公司 | 实现计算资源服务化的调度方法、装置、介质、设备及系统 |
US10289457B1 (en) * | 2016-03-30 | 2019-05-14 | Quest Software Inc. | Systems and methods for dynamic discovery of container-based microservices |
CN109803018A (zh) * | 2019-01-24 | 2019-05-24 | 云南电网有限责任公司信息中心 | 一种基于Mesos和YARN结合的DCOS云管理平台 |
-
2019
- 2019-12-19 CN CN201911319222.9A patent/CN111158855B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108139935A (zh) * | 2015-10-23 | 2018-06-08 | 华为技术有限公司 | 业务定义容器的资源约束的扩展 |
US10289457B1 (en) * | 2016-03-30 | 2019-05-14 | Quest Software Inc. | Systems and methods for dynamic discovery of container-based microservices |
CN108021608A (zh) * | 2017-10-31 | 2018-05-11 | 赛尔网络有限公司 | 一种基于Docker的轻量级网站部署方法 |
CN109062658A (zh) * | 2018-06-29 | 2018-12-21 | 优刻得科技股份有限公司 | 实现计算资源服务化的调度方法、装置、介质、设备及系统 |
CN109803018A (zh) * | 2019-01-24 | 2019-05-24 | 云南电网有限责任公司信息中心 | 一种基于Mesos和YARN结合的DCOS云管理平台 |
Non-Patent Citations (2)
Title |
---|
WEI WANG; LIQING ZHANG: ""Reg: An Ultra-Lightweight Container That Maximizes Memory Sharing and Minimizes the Runtime Environment"", 《2019 IEEE INTERNATIONAL CONFERENCE ON WEB SERVICES (ICWS)》 * |
官东亮: "基于微服务的业务平台架构重构", 《电信科学》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782369A (zh) * | 2020-07-01 | 2020-10-16 | 浪潮云信息技术股份公司 | 一种Go语言下的数据任务处理系统及方法 |
CN111782369B (zh) * | 2020-07-01 | 2024-05-31 | 浪潮云信息技术股份公司 | 一种Go语言下的数据任务处理系统及方法 |
CN112035228A (zh) * | 2020-08-28 | 2020-12-04 | 光大科技有限公司 | 一种资源调度方法及装置 |
CN112035228B (zh) * | 2020-08-28 | 2024-04-12 | 光大科技有限公司 | 一种资源调度方法及装置 |
CN112153036A (zh) * | 2020-09-18 | 2020-12-29 | 湖南联盛网络科技股份有限公司 | 一种基于代理服务器的安全防御方法及系统 |
CN112346817A (zh) * | 2020-10-20 | 2021-02-09 | 北京健康之家科技有限公司 | 容器启动方法、装置、存储介质及计算机设备 |
WO2022120577A1 (zh) * | 2020-12-08 | 2022-06-16 | 中国科学院深圳先进技术研究院 | 一种预处理函数的无服务器计算方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111158855B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111158855A (zh) | 一种基于微容器及云函数的轻量虚拟化裁剪方法 | |
US9977689B2 (en) | Dynamic scaling of management infrastructure in virtual environments | |
CN110058932B (zh) | 一种用于数据流驱动计算的存储方法和存储系统 | |
EP2300910B1 (en) | Scheduler instances in a process | |
KR101936453B1 (ko) | 새로운 애플리케이션을 위한 메모리 관리 모델 및 인터페이스 | |
KR20200015721A (ko) | 인터럽트 요청 처리 방법 및 장치, 및 가상화된 디바이스 | |
EP2721480B1 (en) | Memory manager with enhanced application metadata | |
KR101976221B1 (ko) | 수정되지 않은 애플리케이션을 위한 메모리 관리 모델 및 인터페이스 | |
US9875141B2 (en) | Managing pools of dynamic resources | |
JP2008506187A (ja) | 複数のカーネルの並列実行のための方法およびシステム | |
KR20110019729A (ko) | 스케줄러 내의 스케줄링 컬렉션 | |
EP2585917B1 (en) | Stack overflow prevention in parallel execution runtime | |
JP5030647B2 (ja) | 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム | |
US10430245B2 (en) | Systems and methods for dynamic low latency optimization | |
US20210389994A1 (en) | Automated performance tuning using workload profiling in a distributed computing environment | |
US8806180B2 (en) | Task execution and context switching in a scheduler | |
CN112346835B (zh) | 一种基于协程的调度处理方法及系统 | |
US9619277B2 (en) | Computer with plurality of processors sharing process queue, and process dispatch processing method | |
CN112416591A (zh) | 分布式的任务处理方法、装置、设备、存储介质和系统 | |
CN111090627A (zh) | 基于池化的日志存储方法、装置、计算机设备及存储介质 | |
JP3349547B2 (ja) | スケジューリングシステム | |
JP2000215071A (ja) | 仮想計算機システム | |
CN117806573B (zh) | 一种固态硬盘的搜索方法、装置、设备及介质 | |
CN111143078B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN116170518B (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 |