加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

带给你 Serverless 云开发高阶应用

发布时间:2021-04-18 13:48:35 所属栏目:动态 来源:互联网
导读:中创建了一个云函数,并将云函数与 Express 进行整合,配合云数据库写好了增删改查的接口,但是这样的开发方式并不是 Serverless 的最佳食用方法。 在我们的代码中,是将整个后端应用的全部业务能力写进了一个函数中。这样做的好处就是方便管理,毕竟在一个


中创建了一个云函数,并将云函数与 Express 进行整合,配合云数据库写好了增删改查的接口,但是这样的开发方式并不是 Serverless 的最佳食用方法。

在我们的代码中,是将整个后端应用的全部业务能力写进了一个函数中。这样做的好处就是方便管理,毕竟在一个应用下只有一个云函数。但是单个云函数的并发是有限的,并行的函数实例个数由云厂商决定,而超过限制后,事件队列就需要等待其他函数实例执行完毕后,再生成新的函数实例。

那可能就有人问了,不是说 Serverless 是弹性伸缩的吗?不是说会根据业务处理的需求自动调配资源嘛?为什么还会有函数的并发限制呢?

要搞清楚这一点,我们需要了解 FaaS 的运行机制。

FaaS 的运行机制

在 FaaS 平台中,函数默认是不运行的,也不会分配任何资源,甚至 FaaS 中都不会保存函数代码。只有当 FaaS 接收到触发器的事件后,才会启动并运行函数。前面我们就是使用 HTTP 的触发器来执行函数代码的,整个函数的运行过程实际上可以分为四个阶段:

代码下载:FaaS 平台本身不会存储代码,而是将代码放在对象存储中,需要执行函数的时候,再从对象存储中将函数代码下载下来并解压,因此 FaaS 平台一般都会对代码包的大小进行限制,通常代码包不能超过 50MB。

启动容器:代码下载完成后,FaaS 会根据函数的配置,启动对应容器,FaaS 使用容器进行资源隔离。

初始化运行环境:分析代码依赖、执行用户初始化逻辑、初始化入口函数之外的代码等。

运行代码:调用入口函数执行代码。

当函数第一次执行时,会经过完整的四个步骤,前三个过程统称为“冷启动”,最后一步称为“热启动”。

整个冷启动流程耗时可能达到百毫秒级别。函数运行完毕后,运行环境会保留一段时间,这个时间在几分钟到几十分钟不等,这和具体云厂商有关。如果这段时间内函数需要再次执行,则 FaaS 平台就会使用上一次的运行环境,这就是“执行上下文重用”,也叫做 “实例复用”,函数的这个启动过程也叫“热启动”。“热启动” 的耗时就完全是启动函数的耗时了。当一段时间内没有请求时,函数运行环境就会被释放,直到下一次事件到来,再重新从冷启动开始初始化。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!