Serverless弹性伸缩的现状调研(超详细)

引言

闲鱼的服务端技术架构正向着云原生/Serverless化发展,Serverless具有着运维自动化、按需加载、弹性伸缩、强隔离性、敏捷开发部署等技术特点,带来了降低人力成本、降低风险、降低基础设施成本、降低交付时间等核心优势。这其中,弹性伸缩是Serverless中被广泛关注的一大亮点,甚至有些人将自动扩缩容的能力支持作为应用是否Serverless化的判定标准。另外,在闲鱼与淘系Gaia FaaS平台共建Serverless化的业务迁移时,弹性伸缩也一直是个悬而未决的问题。为此,本文会针对Serverless的弹性伸缩技术的现状做一个初步的调研。

弹性伸缩的基本概念

定义

弹性伸缩所关注的问题主要是容量规划与实际集群负载间的矛盾,当现有集群的资源无法承载流量压力时,如果通过调整集群的规模或者资源的分配,从而保障系统的稳定性,同样在集群负载较低时,尽量降低集群的资源配置从而减少闲置资源的浪费带来的成本开销。弹性伸缩不仅适合业务量不断波动的应用程序, 同时也适合业务量稳定的应用程序。

弹性伸缩可以分为应用伸缩、技术伸缩和资源伸缩,我们通常所说的伸缩大都指的是资源的伸缩性,即调整机器的硬件资源以提高系统性能。而资源伸缩又可以分为横向水平伸缩和纵向垂直伸缩。纵向垂直伸缩是指通过提升集群内每个节点的处理能力以提升整体性能的伸缩方式,简单来说就是给单节点机器配置升级;而横向伸缩是指通过增删集群节点来提升或降低系统的处理能力,优点在于伸缩更加灵活,由于节点间资源是完全隔离的,也不必担心单点故障对其他节点的影响,更加安全可靠。因此在大部分Serverless应用场景中都采用横向水平伸缩方式。

弹性伸缩算法

弹性伸缩算法一般可分为基于某个资源指标阈值的响应式伸缩算法和基于预测型的伸缩算法,前者通过周期性的资源指标数据,与所设定的指标阈值进行对比,从而动态的改变集群节点数量;后者则通过对历史的系统性能与资源配置数据的分析,对未来的容量进行评估预测,相比于基于阈值的响应式伸缩算法,基于预测型的伸缩算法能更快的响应突发状况,弹性伸缩变化更加的平滑,但是分析数据所需要的模型建立也显得尤为关键,具有比较大的挑战难度。

通常在业务场景的落地和大部分的开源解决方案中,弹性伸缩的算法都是基于阈值来实现的,比如CPU使用率、Load、内存使用率、磁盘使用率等,通过设定一个资源的Buffer水位来避免系统的过载发生。

云原生应用Kubernetes弹性实践

目前云原生应用的设计理念已被越来越多的业内人士所认可,而Kubernetes作为云原生的标准接口实现,已经成为了容器编排的事实标准。云服务的能力可以通过Cloud Provider、Operator等方式从Kubernetes的标准接口向业务层透出,而业务开发者可以基于Kubernetes构建自己的云原生应用,基于Kubernetes的各种云原生应用生态让Kubernetes成为了“云OS”。

Kubernetes弹性伸缩组件

Kubernetes提供了一系列标准的弹性伸缩组件,从方向上可分为横向水平和纵向垂直两种伸缩方式,从对象上可分为按Pod伸缩和按节点伸缩。这样就存在节点水平伸缩组件Cluster-Autoscaler、Pod水平伸缩HPA&Cluster-Proportional-Autoscaler以及Pod垂直伸缩VPA&Resizer这三大组件。其中HPA组件最为常用,HPA可以基于CPU利用率自动扩展Pod数量,当然也支持基于其他应用程序提供的自定义度量指标来执行自动扩缩。Pod 水平自动扩缩特性由 Kubernetes API 资源和控制器实现,资源决定了控制器的行为。控制器会周期性的调整副本控制器或部署中的副本数量,以使得 Pod 的平均 CPU 利用率与用户所设定的目标值匹配。

HPA

Kubernetes资源指标数据

目前HPA的API共有三个版本,分别是autoscaling/v1、autoscaling/v2beta1和autoscaling/v2beta2,其中autoscaling/v1只支持基于CPU指标的伸缩,v2beta版本额外支持内存等其他资源指标,并且还支持自定义指标的伸缩。所有的系统资源指标数据,都可以通过Metrics API来获取,而自定义指标数据的采集是通过Agrregator APIServer扩展机制来实现的,HPA使用这些metrics信息来实现动态伸缩。

HPA算法介绍

HPA的主要伸缩流程如下:

1.HPA控制器根据当前

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值