Microscaler: Cost-effective Scaling for Microservice Applications in the Cloud with an Online Learning Approach. IEEE Transactions on Cloud Computing, 2020.
一、现状
在云原生系统中,自动扩展是一种通过获取或释放适量的计算资源来适应负载波动的关键使能技术。然而,在微服务应用中,这项技术成为一个挑战性技术,因为这样一个应用包含大量具有复杂交互关系的不同的微服务。当不可预测的工作负载峰值导致性能下降时,很难准确指出需要横向扩展的服务,同时也很难评估需要多少资源。
二、面临的困难与挑战
众所周知,云计算能够提供弹性的资源配置机制,但是,实际上却严重依赖应用供应者来利用这灵活的基础设施。事实上,自动伸缩扩展方法难以实施的难点在于以下三个方面:
- 服务指标收集
今天大多数主流云平台都不能提供足够的方法来监测细粒度的应用,因此,很难获得服务级别的性能指标。尽管应用级别的仪表能够获取性能指标,但是应用开发者必须具备专业知识来精确测量他们的应用。
- 需要扩展的服务的确定
在微服务系统中,大量服务共存,而且这些服务之间存在复杂的交互。因此,性能异常可能同时导致很多服务的异常。当一个性能异常发生时,会导致快速且精确的确定需要扩展的服务非常困难。
- 性能和成本的权衡
在服务资源配置不足或过度配置时,自动伸缩扩展器应能够为服务自动扩展适量的资源,以实现应用运行的性能和成本的优化。但是,在每一个服务的资源和请求量之间,目前不存在明确的调节模型。自动伸缩扩展器需要有效且高效地确定所需扩展的资源量。
三、提出的应对策略与方法
本文提出了一种名叫“Microscaler”的新系统,能够自动识别需要扩展的微服务,并以微服务应用程序的最佳成本满足服务水平协议(SLA)为前提来扩展微服务。
Microscaler工作流程:
- 首先,在服务网格使能的微服务基础设施上收集服务质量指标(Qos);
- 用一种新的需要扩展的服务的标准(本文称为“service power”)所构建的服务依赖图,来确定配置不足或过度配置的微服务实例;
- 通过在线学习方法和逐步启发式方法构建了一个自动扩展的成本模型,Microscalar能够在满足SLA的前提下精确实现最佳服务扩展。与此同时,本文保存了当前工作负载与最优服务规模之间的“键值对”,当类似工作负载出现时,这将有利于加速最佳服务规模的搜索过程。
- 为了在生产级微服务基准系统中评估本文提出的自动扩展算法,设计并实现一个微服务的服务规模自动扩展的软件原型,即“Microscalar”。
三、实验评估
微服务基准测试的实验表明:在需要扩展的微服务确定过程中,Microscalar获得了平均93%的精度,而且收敛到最佳服务规模的速度比目前已有的几种最先进方法更快。
四、下一步工作
1. 结合预测方法,进一步改善本文所设计系统的自动扩展精度和收敛速度。
2. 打算缩短容器的启动时间,这将有助于加速自动扩展过程。