阿里云Serverless技术、产品选型理由
从发展历程中,我们也可以看出,以函数为起点,Serverless 的技术和产品逐步趋于多元化。多种形态相互补充,为解决更复杂、更多样化的业务场景提供支撑,我们通常会把场景分为三类:
- 函数计算(FaaS):面向函数,用户只需关注函数层级的代码,用于解决轻量型、无状态、有时效的任务;>
- Serverless 应用托管:面向应用,用户只需要更关注应用本身,与微服务结合,它融合应用治理、可观测,降低了新应用的构建成本、老应用的适配改造成本;
- Serverelss 容器服务:面向容器,在不改变当前 Kubernetes 的前提下,由于不再需要关注节点,大大提升了前期资源的准备过程,降低了维护成本,使得应用的全生命周期管理更高效。
随着 Serverless 的内涵持续外延,计算的 Serverless 化要求 BaaS 服务也具备与之配套的托管能力和极致弹性,全链路完整支撑真正 Serverless 化的应用构建。
——《Serverless 进阶实战课》极客时间
Serverless 产品概念:

Servless解决方案图:

目前Serverless技术绝大部分都是基于Knative来进行构建的。Knative是什么:
Knative is a platform-agnostic solution for running serverless deployments.
Knative 是一种用于运行无服务器部署的与平台无关的解决方案。
运行Serverless函数会自动生成一个容器:
When you build or run a function, an Open Container Initiative (OCI) format container image is generated automatically for you, and is stored in a container registry. Each time you update your code and then run or deploy it, the container image is also updated.
当您构建或运行函数时,会自动为您生成开放容器计划 (OCI) 格式的容器映像,并将其存储在容器注册表中。每次更新代码然后运行或部署它时,容器映像也会更新。
也就是无论时面向函数、应用、容器的Serverless服务,实际上底层的实现都是通过将代码打包成OCI镜像,然后用Knative容器来运行该镜像的。
容器与虚拟机的差异:
容器允许应用组件共享单个操作系统实例的资源,就像虚拟机 (VM) 允许应用共享单个物理计算机的资源一样。 容器比虚拟机更小、资源效率更高,更适合敏捷和 DevOps 开发方法的增量发布周期,容器已成为现代云原生应用事实上的计算单元。
再且由于实际上Serverless的运行单位是容器,再加上阿里云支持自定义容器镜像,所以可以将Rust、AI、GPU等非阿里云内置支持语言打包成容器镜像以后,进行Serverless部署。
Serverless预留资源
TableStore当业务稳定以后,需要将纯按量计费提升为预留吞吐量按量计费,这样可以节省成本。
访问量稳定以后,可以通过预留函数实例来避免冷启动导致请求延迟
详情:配置预留实例
Serverless应用开发
前提:
- 因为事件函数不能响应HTTP请求,不能处理HTTP触发器的参数,所以函数类型只能选择Web函数(可自定义容器镜像)。
- 再进一步,想要提交代码以后自动构建并部署函数,并对函数版本进行管理,就使用“应用”
创建Serverless应用
应用创建:选择模板(Express,轻量级nodejs,必要功能齐全,可通过中间件扩展)
因为应用最终还是要变成函数执行,所以创建应用会带一个函数,该函数在后续也不能删除。
开发和部署
创建出来的模板仓库中,有README.md文档,里面有如何本地开发并部署上云的。(但是windows下执行s deploy会导致异常,因为s.yaml中的命令是unix的。)
所以直接在WebIDE开发,然后保存提交部署可以解决部署问题(但是测试速度慢,得等1分钟部署好)
添加依赖的方式
nodejs可以直接在package.json中添加依

最低0.47元/天 解锁文章
470

被折叠的 条评论
为什么被折叠?



