开发者学堂课程【通过 Knative 轻松实现应用 Serverless 化交付:Knative 冷启动】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/753/detail/13227
Knative 冷启动
内容介绍:
五、阿里云突发性能实例
六、通过保留实例解决冷启动
七、示例演示
八、总结
五、阿里云突发性能实例
如下所示是对2c4G 配置的计算型实例和突发性能型实例的价格对比:
规格族 |
实例规格 |
VCPU |
内存 |
参考价格元/时 |
计算型c5 |
ecs.c5.large |
2 vCPU |
4 GiB |
0.62 |
突发性能实例t5 |
ecs.t5-lc1m2large |
2 vCPU |
4 GiB |
0.333 |
计算型c6 |
ecs.c6.large |
2 vCPU |
4 GiB |
0.39 |
突发性能实例t6 |
ecst6-c1m2large |
2 vCPU |
4 GiB |
0.236 |
//阿里云中有不同规格,不同规格价格不一样,如图所示,是对2c4G 配置的计算型实例和突发性能型实例的价格对比,通过实例知道突发性能型比计算型便宜,可见没有流量的情况下使用突发性能实例不单单解决了冷启动的问题,还能节省资源成本。突发性能实例除了价格优势外,还有一个非常实用的功能就是 cpu 积分,突发性能实例可以利用 cpu 积分应对突发性能需求,在突发性能实例中持续获得 cpu积分,在性能无法满足负载时,通过消耗累积的 cpu 积分,来提高计算性能,不会影响在实际上的服务。例外,通过 cpu 积分,可以从业务整体角度分别计算资源,将业务低峰期的计算能力无缝嵌入高峰期。
六、通过保留实例解决冷启动
·免冷启动:通过保留实例消除了从0到1的30秒冷启动时间
·成本可控:突发性能实例成本比标准规格实例降低40%的成本,如果和 Spot 实例突发性能实例结合还能再进一步降低成本
//为了解决零到一的冷启动问题,推出了保留实例的能力,保留实例是阿里云Knative 同期服务独有的功能,像上面提到的 Knative 没有流量的情况下,缩用到零,之后从零到一的冷启动问题很难解决,应用市场从毫秒到分钟都是有的,应用启动的这些时间完全是是业务行为,在底层平台是无法控制的。Knative 对这个的解法就是符合低价值的保留实力来平衡成本问题的问题。当第一个请求来临时,签订的切换的标准的计算与处理,这样可以当帮助你降低流量低控制的分类。低谷时获得的 cpu 积分可以在高峰期消耗掉。另外,使用突发性能保留实例只是默认策略,可以通过制定其他实例保留实例的规格。从这个图刻意直观的看到,随着业务量的降低,会逐渐缩容,在没有业务量的时候,并没有把它缩容到零,而缩容到了一个保留实例上。当新的请求进来之后,是通过保留实力响应业务实例,业务的请求。同时会扩容,正常的实例出来,当正常的实例扩容出来 ready 之后,就说无缝下线掉,保留实力,从而解决冷启动问题。这里可以概括两点,首先,免冷启动:通过保留实例消除了从0到1的30秒冷启动时间。另外,成本可控:突发性能实例成本比标准规格实例降低40%的成本,如果和 Spot 实例突发性能实例结合还能再进一步降低成本。
七、示例演示
·社区 Knative 0到1冷启动
·ASK Knative 保留实例冷启动
//接下来,分别演示下社区的 Knative 零到一的冷启动,以及通过保留实例在 ASK Knative 中的冷启动。通过二者的对比,可以做个直观的感受。下面打开相应的控制台,可以看一下,其实部署的是一个简单的 coffee 服务,在上一期呢,其实也介绍到,它就是一个很简单的一个 hello coffee。来看一下,这个是左侧使用的是ASK Knative,然后右侧使用的是社区的 Knative。二者的打印信息都是一样的,可以看一下,最直观的可以看一下在 ASK 托管的 Knative 是不需要管控端相应的组建的,首先呢,可以在 Knative Serving 中,是没有任何 Pod 的,而社区的Knative,也是在相应的 Serving 空间下,需要提供相应的管控组建的,这也是上面提到的 ASK Knative 中对于 Knative Serving 相应组件做出全托管免运维的一个变化。接下来部署相应的服务,首先,可以在社区的Knative中部署相应的服务,可以观察当前 pod 的情况,同时在 ASK Knative 中创建相同的 coffee,同样可以观察当前 pod 的情况,看到 ASk Knative 中,Pod 也在创建中,在社区的 Knative 中,Pod 已经创建完成,接下来观察的一个现象就是没有请求的过程中,社区的Knative 会缩用到零,在 ASK Knative 中,正常的缩容周期是九十秒,可以看到社区的 Knative 已经缩用到零。在这个过程中,可以整理访问请求,重新打开另外一个窗口,另外观察到在 ASK Knative 中相应的创建保留实例,一但这个保留实例ready,就会把正常的实例下线掉。同样的看另外的窗口,可以看到在没有请求的时候,Knative 已经缩容到保留实例。接下来,分别进行访问,看下实际的访问效果。首先,访问社区 Knative,可以看到社区 Knative 一旦接触,就会创建相应的Pod ,启动 Pod 的时间大概需要30秒。在这个过程中,可以通过访问保留实例,可以很明显的对比出来社区的 Knative 有将近30秒的时间,才响应请求,而在 ASK提供的 Knative 几乎是实时响应,一旦正常实例 ready 之后,就会把保留实例响应掉,通过这个对比,知道如何在 ASK 中保留实例,解决冷启动问题。对于服务敏感型的,可以通过这种方式,请求的实时响应。
八、总结
//首先当前社区 Knative 0到1冷启动问题做了介绍,另外使用保留实例平衡成本和冷启动。下一期,会介绍 Knative 灰度发布和自动扩缩容。