当前位置: 首页 > 后端技术 > Java

空闲计费-Serverless冷启动与成本最优解

时间:2023-04-01 17:14:10 Java

介绍:函数计算空闲计费功能的上线帮助用户进一步降低使用预留实例的成本,让用户预留资源只为实际使用付费。作者|阿里云Serverless高级开发工程师小七,听说你做过这样的技术选型。小王是一名程序员。你需要自己做。每一次升级和机器扩容都会带来比较大的运维压力。同时,为了及时扩大产能,闲置机器较多,机器成本一直比较高。最近,公司开发了两个新的应用系统。小王在做技术选型,打算拥抱云计算,把新的应用部署到云端,设计一套弹性高、成本低、运维简单的,可以轻松应对业务突发事件、流量不断增加的架构方案让您将更多的精力投入到业务发展中,减轻您的运维负担。这两款应用有几个共同的特点:两款应用都是在线应用,对调用时延和服务稳定性的要求都比较高。应用流量随业务变化很大,很难提前预测业务量会增加多少,对灵活性要求比较高。有明显的业务低峰期,低峰期通话量相对较低。预计淡季主要集中在傍晚。应用启动时间长:一个是JavaSpringBoot点餐系统,一个是基于大图的AI图像识别系统,启动时间接近1分钟。小王的需求可以概括为三个方面:一是希望在运维上省事省心。应用交付jar包或镜像后,只需简单的配置即可运行,无需在运维、监控、告警上花费专门的精力。二是弹性要好。当业务流量增加时,能及时自动扩容,当流量下降时,能自动收缩。三是利用云计算提高资源利用率,在成本上更具优势。下面我们拆开来看看小王是如何一步步选择技术的。业务高度集成、免运维、高度灵活。在进行技术选型时,小王考虑了三种技术架构:负载均衡+云服务器+弹性伸缩传统架构、K8s架构、函数计算(FC)架构。传统架构需要自己做SLB负载均衡;配置弹性伸缩服务,不断调试寻找合适的伸缩策略;您还需要自己收集日志以创建警报并监控市场。这套的运维和部署成本其实也不是很低。有没有更省事的解决方案?小王进一步研究了K8s架构。k8s的Services和Ingress规则可以管理应用层的访问,这样就不用再搞SLB负载均衡了,利用HPA根据应用水位进行水平伸缩。这样看起来很好,但是在实际测试中发现HPA的缩放是分钟级的。伸缩慢一点问题不大,但是当流量快速上升时,伸缩总是延迟几分钟,这会导致一些请求的延迟。增加或失败,影响服务可用性。如果降低扩展指标的阈值,可以解决这个问题,但同时降低了资源利用率,成本增加了很多。另外还需要自己做日志采集、告警、行情监控,运维成本也不少。况且小王之前也没有接触过k8s,了解k8s的各种概念真的是费了很大的劲。基于FC的架构可以很好的解决上述问题。首先,FC支持预留模式和基于实例指标的自动伸缩。在该模式下,可以实现更加灵敏快速的扩缩容能力,并保证扩缩容时请求延时保持稳定;其次,FC高度集成了许多开箱即用的功能,提供流畅无忧的体验,例如:提供http触发器,无需连接网关和SLB;控制台提供完整的可观察性,让您轻松查看请求、实例状态和运行日志。最后,FC只需要为通话和通话中使用的活跃资源付费,没有通话时不产生费用,可以充分提高资源利用率,降低成本。下面详细介绍一下reservation模式的使用,以及如何通过idlebilling来降低reservation的使用成本。预留模式,完美解决冷启动。FC支持两种使用模式:on-demand和reserved。按需模式通过请求自动触发实例的创建和扩展。当调用次数增加时创建实例,当请求减少时销毁实例。.按量付费模式充分提高了资源利用率,但是像小王这种启动时间比较长的应用,在按量付费模式下创建实例会出现明显的冷启动现象模式。为了解决这个冷启动问题,FC提供了预留使用模式。用户配置预留后,FC会创建指定数量的预留实例驻留在系统中,直到用户更新预留配置释放它们。当有请求时,预留实例会被优先调度。预留实例用完后,新的请求会触发创建按量付费实例。同时,为了让预留实例数量更好地贴合业务曲线,还提供了预留定时伸缩和索引伸缩能力,以提高预留实例的利用率。点击这里了解更多详情。这样一来,解决了应用冷启动时间长的问题,保留实例的利用率也保持在较高水平。即使偶尔出现比较大的流量波动,也可以临时扩容基于容量的实例来响应请求,在流量快速增长的情况下尽量保证服务质量。闲置计费,降低成本的一大杀手在实际使用场景中,为了保证应用请求的低延迟,即使没有请求,也必须维护一定数量的预留实例,增加了成本。有没有办法同时实现低延迟和低成本?为了帮助用户降低该场景下的使用成本,函数计算推出了预留实例闲置计费功能。下面让我们仔细看看这个函数。空闲计费根据预留实例是否在处理请求,我们将实例分为空闲和活跃两种状态,分别设置两种状态的计费单价。活跃计费单价与原资源使用单价一致,闲置计费单价为活跃计费单价的20%。开启空闲计费可以帮助您节省大量成本。闲置计费功能默认关闭。此时不管reserved模式下的实例是否在处理请求,FC都会为其分配CPU并保持该实例处于活动状态,以保证该实例在没有请求时仍能正常工作。运行后台任务。开启idlebilling功能后,当reserved模式的实例没有请求时,FC会冻结实例上的CPU,使实例进入idle状态。通过增加闲置计费,您可以只为预留实例实际使用的CPU资源付费。当预留实例空闲时,您只需支付20%的费用来处理实例冷启动问题。这将帮助用户大幅降低使用预留实例的成本,同时,用户可以不那么关心预留实例的利用率,放心使用预留实例。以上图为例,假设预留实例使用率为60%,原始使用费用为1,使用idlebilling后费用为60%*1+40%*20%*1=0.68,可带来32%的成本降低。配置方法可以通过控制台和SDK配置预留实例和空闲计费。登录函数计算控制台,在首页->弹性管理页面选择创建规则,配置“闲置计费”。同时可以使用SDK进行配置,支持Java、Go、Node.js等语言。具体请参考API在线调试。开启闲置计费后,您可以在计费中心-计费明细-计费明细中查看弹性实例和性能实例的闲置资源使用费(计费账单一般有3-6小时的延迟生成)。EpilogueFunctionCompute(FC)一直致力于为用户提供高度灵活、免运维、低成本的全托管计算服务。闲置计费功能的上线可以帮助用户进一步降低使用预留实例的成本,让用户只为实际使用的预留资源付费。函数计算将逐步释放更多Serverless技术红利,在性能、成本、体验等方面持续为用户提供更极致的表现。文档链接:灵活管理:https://help.aliyun.com/document\_detail/185038.html计费概览:https://help.aliyun.com/document\_detail/54301.html版权声明:本内容文章由阿里云实名注册用户自愿投稿,版权归原作者所有。阿里云开发者社区不拥有自己的版权,也不承担相应的法律责任。具体规则请参考《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如发现本社区涉嫌抄袭内容,请填写侵权投诉表进行举报,一经查实,本社区将立即删除涉嫌侵权内容。