
上QQ阅读APP看书,第一时间看更新
3.3 生命周期
了解了事件模型后,我们模拟事件触发的场景,继续了解FaaS的生命周期,如图3-3所示。

图3-3 FaaS平台生命周期
从图3-3中可以看出,开发者在创建FaaS服务时,从本地上传、选取模板创建对应的函数,函数上传到FaaS平台后,会提供运行环境托管用户业务代码。开发者可以在代码中调用BaaS服务,这样就完成了FaaS服务的创建。
终端用户通过事件触发的方式访问FaaS服务(包含COS、消息队列、定时任务、网关等多种触发器)。触发事件发生后,FaaS平台将分配对应的实例运行用户上传的代码、执行业务逻辑,并访问对应的BaaS服务,从而实现业务访问。
FaaS是分布式、事件驱动的架构,其核心节点为一个个函数实例。通过上述流程可知,函数实例的生命周期有以下两个特点。
- 函数实例按需运行,在长时间未被事件触发时,处于关闭状态。
- 事件触发时,函数才会被启动和运行。
为了高效地复用函数实例,公有云服务商会在函数实例启动后,将实例保留一定时间,从而避免频繁创建和销毁资源。因此可知,函数实例的生命周期主要有以下几个阶段。
- 事件触发。
- 创建及启动函数实例。
- 执行函数触发逻辑并返回结果。
- 在实例保留时间内,如有新的请求,再次执行启动或触发阶段。
- 等待一段时间,若无新的事件请求,则销毁函数实例。
了解了函数的生命周期后,在业务逻辑中,可以有针对性地提供最佳实践,例如将变量定义、数据库连接放在启动阶段,将事件触发相关逻辑放在触发阶段等。