Serverless AI训练营:课时5:云原生体系下 Serverless 弹性探索与实践(二)
课时5:云原生体系下 Serverless 弹性探索与实践(二)
接下来分析一下现在普遍的存在的三种弹性伸缩模式。它的代表是各个云厂商的云产品,比如阿里云的弹性伸缩 ess。
它的整体使用流程是通过配置云监控,是阿里云的监控服务,通过云监控的报警规则来触发相应的ECS的增减操作。比如当 ecs 实力整理了 CPU 大于80%时,会增加 ECS 的实力。
当它小于30%时,会减少 ECS 的实力,同时能支持动态增减到 slb 的后端伏击组。SLB 是挂在ECS的前面的,在增加和减少 ECS 的时候,也把 SLB 后端的虚拟服务器组也给动态的增加,以及 RDS 的白名单就相当于也是动态增加,减少 RDS 的白名单 IP 的配置。然后来保证整体架构的稳定性,同时通过健康检查功能来实现弹性自愈。
ESS 有了一些概念。它定义了伸缩组的概念及弹性伸缩的基本单位。它是为相同的应用场景 ECS 实力的集合以及相关联的 SLB、RDS 提供了定义为一个弹性伸缩基本单位。用户整体的使用流程是创建对应的伸缩组和伸缩配置,然后创建对应的伸缩规则,伸缩规则可以基于人物或者高级。
具体的伸缩可以分为简单规则,即直接来破几台或者伸缩几台 ECS 实力或者进步规则,相当于对应不长的进行破损,还有目标追踪规则,相当于设置具体的指标值。ECS 通过对应的算法使整个弹性伸缩组来维持在目标值的区间内,以及预测规则,是通过算法来对弹性伸缩组的上下限的配置进行改动。进而再通过监控来查看具体的弹性和执行情况。这个是 Iass 的弹性伸缩。
3. 弹性探索:kubernetes 弹性伸缩(水平)
第二个是 kubernetes 弹性伸缩,这里主要关注水平弹性伸缩,也就是 hpa,不涉及到 CAL、VPA 等等。然后它的代表产品是原生的kubernetes 对应的托管的云产品,比如这个阿里云的容器服务,它就是托管的 k8s,它是作为面向应用运维的技术设施,以及它提供了内置的能力。
它主要是围绕着容易级别进行管理和编排的,而弹性更加聚焦于对体能耗的动态的水平工作。它的原理是 k8S HDA pod中监控数据。并将它与对应的期望值进行比较,然后通过它的内置算法来算出期望的目标的实际数,再指导操控对应的Deployment其他的工作负担来改变它的实际数来实现不断的进行水平弹性伸缩的流程。然后用户整体使用上,它需要首先创建 workload,比如对应的 Deployment或者其他的 workload,跑它的具体应用,然后在它的上层创建具体的 hpa, hpa 需要配置期望的指标源,期望弹性策略达到多少指标进行扩缩。K8s 提供的可观测手段是通过实践来查看对应的执行情况。这是 k8s 提供的弹性伸缩。
4. 弹性探索:应用画像弹性伸缩
接下来说一下应用画像的弹性伸缩。它主要应用于互联网公司的内部,比如像阿里的容量平台。容量平台提供了容量预测服务和弹性变更的决策服务。可以看一下右边这张图。
它会预先通过和 ODPS 大数据能力,然后对应用的具体的监控指标数据、应用的实际的数据,进行数据预处理进行机器学习,然后进而生成对应的应用画像,应用画像可以分为基准画像,弹性画像,大图画像等。然后再通过整体的容量平台进行管控,比如实现画像准入、变更管控、故障熔断等。具体的容量平台执行相应,操作下面的 VPA/AHPA 执行率的各种操作,再指导具体的 odPS 进行不断的学习,它实现了闭环的操作。
用户整理的使用流程预先将它的应用接入到容量平台中,容量平台会基于历史数据以及人为的经验,生成对应的基准画像、弹性画像或者大促画像。借助画像来驱动应用的伸缩,同时它也基于 metrics 的实时的指标进行修正画像。
可以通过监控来查看弹性的执行情况。可以看到应用画像弹性伸缩和之前的两种差异是比较明显的,它是以画像驱动为主,以metrics 驱动为辅的一种弹性伸缩能力,它的目标是不断修正应用画像。使用应用画像,不断的与实际情况相吻合。它的弹性伸缩准不准主要依赖应用画像的准不准。
5. 弹性探索:弹性模式
接下来总结一下。可以看到通过这三种弹性伸缩模式对比,可以看到各产品弹性伸缩从模式上抽象来讲是基本平衡的。都是由触发源、弹性决策和触发动作三部分组成。首先触发源一般依赖于外部的监控系统,它可以对指标节点的应用指标进行采集进行处理。而弹性决策一般是周期性轮询原理的指标,然后通过内置算法或者一些预测分析、定制策略来决策出当前实际数应该是多少。而触发动作是对实力进行水平扩缩,并提供变更记录和对外通知的功能。
在比较基本的触发源、弹性决策和触发动作的基础上来做云产品的场景和工作效率或稳定性上竞争力,并通过反思能力来提升弹性系统透明度,便于问题排查和指导弹性优化。同时提升用户整体的使用体验和黏性。后续 SE 主打在座的也是在行业工作效率和稳定性上竞争力,后面会予以展开。
6. 弹性探索:弹性发展方向
刚才说的是相同点,当然也有不同点。可以看一下下面这张表,这张表对比了不同弹性模型的差异。首先是 Iass 弹性伸缩,它作为老牌弹性伸缩能力,沉淀时间长,功能强大且丰富,但是各个云厂商的能力是趋于同质化的,而且它是绑定于各个云厂商的 Iass 产品的,比如 ESS 只能操控 ECS,而且弹性效率是远不达容器的。比如 doter 等。
Kubernetes 作为开源产品,它的艺术可以通过社区力量来不断迭代优化的弹性能力和最佳实践。而且作为开源产品,实际上它的功能是符合绝大部分开发运维人员的诉求。而且它是对弹性行为和 API 进行高度抽象,但是它也有相关弊端,它目前是可扩展性不强,无法支持跟进需求。像K8s 它是在 KCM 里的。KCM是开发的一些非常核心的组件,没有可扩展的功能,没法改它的对应的逻辑来适应诉求。而应用画像弹性伸缩是具备互联网内部的特色。它是根据集团应用的现状和弹性诉求进行设计,更加聚焦于内部,肯定都有自己的机器,自己的 ITC,更加聚焦于资源池的预算、成本优化,缩容风险、复杂度等痛点,它不易拷贝,特别对于外部的中小客户不适用。
进一步从终态目标上来看,可以看到公有云与互联网厂商,互联网企业的发展方向是不同的。互联网企业往往由于它的内部应用具备着显著的流量特征,并且它的应用启动依赖多,速度慢,而且对于整体的资源池的容量水位、库存的财务管理、离在线混部有很多组织上的诉求。因此,相当于它的诉求是来自多方面的。就不是那么单纯的来做弹性伸缩了,因此更多的是以容量画像为主,体验过程为主,以 metrics 的计算为辅的一种实时修正的一种模式,它的目标是使容量画像足够精准,以至于资源的利用率可以达到预期的目标。
而作为公有云厂商,它是服务于外部客户的,它应该提供更加通用,普示的能力,并且通过完善的可拓展性来满足不同用户的差异化的诉求。尤其在现在所处 severless 的领域场景,更强调应用应突发流量能力。其目标在于无需进行预先的容量规划,通过指标弹性配合及时弹性能力来实现应用资源的近乎按需使用,并且使整个过程是可用的。这就是整体的弹性伸缩的调研情况,然后也说了弹性做的是在场景工作在效率在稳定性上的竞争力。SE也是在这几个方面进行不断的拓展和研究,也在市场上有相应的明显的优势。
五、severless 弹性落地
1.severless 应用引擎简介
看一下整体的落地情况。首先介绍一下 se,也是回顾一下,相信第一节课也应该介绍了。Severless 作为云计算的最佳实践,云原生的发展方向和未来演进趋势,它的核心价值在于快速交互、智能弹性和更低成本。