阿里云服务器ECS    
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新 [咨询更多]
阿里云存储OSS
简单易用、多重冗余、数据备份高可靠、多层次安全防护安全性更强、低成本 [咨询更多]
阿里云数据库RDS
稳定可靠、可弹性伸缩、更拥有容灾、备份、恢复、监控、迁移等方面的全套解决方案 [咨询更多]
阿里云安全产品
DDoS高防IP、web应用防火墙、安骑士、sll证书、态势感知众多阿里云安全产品热销中 [咨询更多]
阿里云折扣优惠    
云服务器ECS、数据库、负载均衡等产品新购、续费、升级联系客服获取更多专属折扣 [咨询更多]
Serverless云应用如何落地Knative理念
2020-7-14    点击量:
    Serverless云应用如何落地Knative理念?
    云开发CloudBase的Serverless云应用是基于Knative来构建整个体系的,围绕Knative进行了相关理念的实际落地。下面我们会从CloudBaseServing、CloudBaseBuild、CloudBase云应用生态三个方面进行具体的阐述。
    CloudBaseServing
    URL到容器

    在用户使用CloudBaseServerless云应用新建服务的时候,会产生一个与之对应的URL,通过这个URL,用户即可访问到对应的服务。那么这个URL是如何通过版本进行流量管理,映射到对应的容器的呢?如下图:

映射到对应的容器的呢

    其中创建的CloudBase服务下允许存在多个版本(Revision)。用户可以针对每个版本进行流量设置,Router会根据流量占比来进行请求路由,从而实现服务维度的定制化灰度策略。
    扩缩至0

    在Serverless场景下,我们还允许用户设置最小副本数为0,对于一些需要常驻的服务,开发者设置最小副本数不为0即可,这样可以有效应对冷启动。

可以有效应对冷启动

    可以看到,每个Revision对应了Deployment管理的一组Pod。
    Pod会自动上报metrics数据到Autoscaler,Autoscaler会根据请求量和资源使用情况修改Deployment的副本数量,从而实现自动扩缩容。Serverless容器一个重要的特点是它会scaleto0,也就是当应用没有流量访问时,它会自动销毁所有的Pod。
    Activator是为了处理0→1而出现的。当某个revision后面的Pod缩容到0时,Route的流量会指向Activator,Activator接收到请求之后会自动拉起Pod,然后把流量转发过去。
    CloudBaseBuild
    CloudBase提供三种能力来进行云应用的交付,用户可以通过镜像、源代码+Dockerfile、源代码这三种方式中任一的一种进行Serverless云应用部署。
    下面阐述下三种方式的落地实践:
    方案选型:考虑到目前KnativeBuild仍然处于快速演进变化中(从KnativeBuild→tektonpipeline),CloudBaseBuild这块暂时是复用腾讯云现有的buildpipeline能力进行构建交付。

    镜像方式

镜像方式

    用户可用已有的镜像或者在本地生成的镜像,通过dockerpush原生命令,将镜像推送到腾讯云个人私有镜像仓库中,即可进行CloudBase云应用的部署运行了。
    源代码+Dockerfile

    用户可以通过源代码+Dockerfile的方式进行云应用部署运行。源代码+Dockerfile的方式支持本地代码上传,以及云端代码(GitHub/GitLab/Coding等)授权拉取部署运行。在该模式下,开发者不再需要关心镜像是如何构建的,CloudBaseBuildServer会在云端进行镜像的构建。

源代码

    源代码

    Dockerfile还是需要一定的入门门槛,我们一直在思考有没有办法进一步降低用户的使用门槛,推出了基于源代码的方式。用户只需要在CloudBaseFramework下进行源代码编写,通过CloudBaseCLI命令行工具就可以进行云端构建+部署。

CloudBase云应用生态

    CloudBase云应用生态

    为了更加方便CloudBase云应用的开发者,CloudBase云应用还将兼容CloudBase的生态(比如CloudBaseServerSDK,CloudBase云调用,CloudBase云支付等)。

当云应用和CloudBase现有生态进行了结合

    当云应用和CloudBase现有生态进行了结合,用户就可以复用现有CloudBase生态的能力了。
    举一个例子:比如用户的一个网站,可以将静态资源放到静态托管中,实现加速。将动态资源放到云应用中,实现流量驱动。并且代码无需实现跨域访问设置。云应用可和云函数以统一的域名对外提供访问。
    这只是生态结合的一种场景,基于云函数可以在微信生态使用的能力(云调用、云支付),在云应用中都可以正常的使用,这里就不一一介绍了,期待大家的探索。
    云开发CloudBase的Serverless云应用是云开发团队在落地Serverless云端一体化实践过程中推出的新一代计算托管平台。
联系客服免费领取更多阿里云产品新购、续费升级折扣,叠加官网活动折上折更优惠