![【论文】略读笔记46-经典-两层资源结构下长期流式工作负载的调度与伸缩联合](https://d3i71xaburhd42.cloudfront.net/8f23ef9824f3f4fc25520b73b4e6126ce6a73435/4-Figure1-1.png)
【论文】略读笔记46-经典-两层资源结构下长期流式工作负载的调度与伸缩联合
![](/images/MessAround.jpeg)
📖《Elastic Scheduling for Microservice Applications in Clouds》
2021 年发表于 CCF-A 类顶级期刊 TPDS。
🎯需求
- 微服务广泛用于灵活的软件开发。近年来,容器由于启动速度快、开销低等特点,成为微服务的首选部署技术。
- 如今,基于云的软件开发,如SaaS(软件即服务),已经变得越来越流行,因为它提高了业务敏捷性并降低了软件维护成本。然而,业务需求的多样性和云的弹性要求软件架构具有高扩展性和快速开发。
- 与传统架构相比,微服务通过构建具有独立生命周期的服务和降低服务的粒度,缩短了开发周期,降低了固有的复杂性,提高了可扩展性。因此,微服务被广泛用于商业软件,如Netflix。
- 一般来说,部署在云中的应用需要满足性能要求,比如响应时间,同时也要尽可能降低云资源的成本。因此,任务调度和自动扩展是云中基于微服务的应用程序需要解决的关键问题。
- 但是,容器层使云中的任务调度和自动扩展变得复杂。
- 在微服务系统中,容器由于其快速启动和低开销而成为部署微服务实例的首选技术。然而,容器层也给自动扩展带来了新的挑战。
- 1)云提供商以虚拟机的形式提供资源,具有不同的配置,形成带有容器的两层资源结构。它需要同时在容器层和虚拟机层上进行扩展,而传统的扩展算法仅适用于单层结构(虚拟机或容器)。
- 2)由于同一虚拟机中的容器共享镜像,因此新添加的容器可以部署在托管相应镜像的虚拟机上,从而减少镜像拉取时间和容器的启动时间。
- 因此,缩放算法需要充分利用现有镜像来提升缩放性能,并且需要考虑这两个因素来缩放虚拟机,然后将实例放置在虚拟机上。
🚧现状
- 现有算法不适应由虚拟机和容器组成的两层结构,并且经常忽略流式工作负载。在文献中,任务调度和自动伸缩有不同的方法来有效利用云中的计算资源。
- 1)在任务调度中,应用程序被描述为一个工作流,主要主题是调度任务在多个实例上的执行以优化makespan。当实例不足以满足性能要求时,算法将使用云资源创建新实例,以实现性能和成本之间的权衡。
- 但是,扩展规则通常很简单,无法满足更复杂的扩展要求,例如,在由容器和虚拟机 (VM) 组成的两层结构中进行扩展。
- 2)自动伸缩通过阈值或强化学习或构建性能预测模型来建立规则,并确定满足性能标准的资源量。
- 与任务调度相比,自动伸缩算法侧重于构建伸缩规则,但会简化或忽略任务调度。
- 事实上,不同的调度策略会导致对资源的不同需求,需要不同的扩容方案。不结合调度的扩容算法的预测结果与调度的实际资源量是有区别的。这种差异可能会因资源预配不足而导致性能下降,或者由于过度预配而导致不必要的额外成本。
- 因此,我们积极将云中微服务弹性伸缩与任务调度相结合,在最大限度降低服务部署成本的同时,获得准确的扩容资源需求,满足业务性能要求。
- 1)在任务调度中,应用程序被描述为一个工作流,主要主题是调度任务在多个实例上的执行以优化makespan。当实例不足以满足性能要求时,算法将使用云资源创建新实例,以实现性能和成本之间的权衡。
- 目前,云中的大多数调度算法都假设单一工作流执行,并根据当前工作流或预先设置的参数做出扩展决策,而忽略了流式工作负载的动态特性。
- 在流式工作负载中,调度算法需要重复执行才能服务于连续提交的工作流,并且算法无法提前知道所有工作流的特征,例如任务的执行时间。
- 由于任务的执行时间在运行时会波动,因此调度算法在当前时刻做出的最优扩容决策,如新服务实例的配置和数量,并不能保证全局最优。
- 因此,调度算法需要做出长期优化的决策,以保证流式工作负载下的系统性能。
🛩创新
- 为此,本文提出了一种基于最常见的按需模型将任务调度与自动扩展集成在一起的 Elastic Scheduling for Microservices (ESMS)。ESMS旨在最大限度地降低虚拟机的成本,同时满足最后期限限制。具体来说,
- 1)首先,我们将微服务的任务调度问题定义为具有截止时间约束的成本优化问题,并提出了一种基于统计的策略来确定流式工作负载下的适当容器配置。
- 2)然后,我们提出了一种基于截止时间分布和紧迫性的启发式任务调度算法,该算法在考虑容器镜像的影响的情况下,该算法可以分配任务并确定用于放大的实例的类型和数量。
- 3)最后,为了实现虚拟机和容器的两层扩展,新容器的部署问题被描述为可变大小的箱装问题(VSBPP),我们将新容器到虚拟机的映射建模为一个可变大小的 bin 打包问题,并求解它以实现虚拟机和容器的集成扩展。
- 本文的主要贡献如下。
- a. 我们提出了一种集任务调度和自动伸缩于一体的微服务弹性调度算法。采用紧急调度算法获取调度方案,准确确定需要扩容的新实例。然后通过两层缩放算法获得缩放方案。
- b. 为了提高微服务流式工作负载下的利用率,我们设计了一种基于统计信息的配置求解算法。生成的配置用于创建新容器并分配截止时间,以提高截止时间分布的准确性。
- c. 为了解决虚拟机和容器的两层伸缩问题,我们考虑了容器镜像对任务调度中容器初始化时间的影响。将自动伸缩问题构造为VSBPP,以获得虚拟机的最优伸缩方案和容器部署,最小化虚拟机成本。
- d. 通过对实际工作流应用的仿真实验,验证了所提出的算法在满足期限和虚拟机成本的比例上优于三种具有代表性的任务调度和自动扩展算法。
📊效果
- 我们使用真实世界的工作流程应用程序(例如蒙太奇)和维基百科访问跟踪进行基于模拟的实验。与现有算法(例如ProLiS)相比,ESMS被证明能够降低租赁成本,并获得满足最后期限限制的最高成功率。
⛳️未来机会
- 首先,我们计划研究如何为基于微服务的系统构建一个广义的性能模型,以准确预测不同配置的每个微服务的响应时间。
- 其次,本文重点关注云中的水平缩放。将进一步研究水平缩放和垂直缩放的结合。
- 第三,考虑到云资源的多样性,其他计费模式,如Spot,将是我们的研究方向之一。
🧠疑问
- 两层结构和一层结构的区别,带来了什么挑战?
- 两层结构下可以通过共享镜像提高伸缩效率。
- 两层结构需要考虑长期影响(例如出于共享镜像等原因,当前虚机在未来可能会被大量容器共享,则需要多分配一些资源)。【这一点文中没说】
- 流式工作负载带来了什么挑战?
- 需要额外考虑时间因素,求解在未来的全局最优而非当下的全局最优。
- 本文的现状逻辑有些复杂,现状不足的层次是什么样的?
- 研究问题:主流两类研究分别仅考虑任务调度和自动伸缩,而未联合考虑。前者在伸缩策略上过于简单,后者在工作流感知上过于简单。(似乎前者的能力范围能够覆盖后者,没说后者的策略不适用于两层结构,如果直接把两者结合是不是就解决问题了?)
- 研究对象-请求:仅考虑一次性执行的工作流任务。没有考虑长时间优化。
- 研究对象-资源:仅考虑单层结构,没有考虑容器-虚机两层映射优化。
- 对于每一个不足是如何解决的?
- 二者联合考虑(好像没说明难点)
- 得看具体算法才知道如何解决第二个问题(TODO)
- 得看具体算法才知道如何解决第三个问题(TODO)
- 希望这篇博客对你有帮助!如果你有任何问题或需要进一步的帮助,请随时提问。
- 如果你喜欢这篇文章,欢迎动动小手 给我一个follow或star。
🗺参考文献
- 标题: 【论文】略读笔记46-经典-两层资源结构下长期流式工作负载的调度与伸缩联合
- 作者: Fre5h1nd
- 创建于 : 2024-07-06 21:48:06
- 更新于 : 2024-07-09 16:46:53
- 链接: https://freshwlnd.github.io/2024/07/06/literature/literatureNotes46/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论