
上QQ阅读APP看书,第一时间看更新
3.1 事件模型
本节通过介绍FaaS平台的几种事件模型(请求模型)及触发事件的结构,帮助读者进一步了解FaaS平台的执行原理及常见的触发器类型。
3.1.1 FaaS事件模型
事件驱动是FaaS平台常见的编程模型。FaaS事件模型主要由以下几个部分组成,如图3-1所示。

图3-1 Serverless事件模型组成
- 事件源:触发后端服务的事件。
- FaaS平台:函数平台。
- 后端服务:包括广泛的服务,如数据库、消息队列、其他API服务等。
在FaaS平台中,通常将事件分为三类,如图3-2所示。

图3-2 Serverless事件分类
1. 同步/推送事件
在同步/推送事件模型中,通过一个请求触发函数,等待其返回函数的执行结果。一个典型的例子是,当我们访问一个API网关结合函数组成的网站时,输入对应域名(发送请求)后,这个请求会收到一个resp的返回事件,也就是我们在浏览器中查看到的网页(返回执行结果)。
2. 异步事件
我们在对象存储中上传某个文件,或者在通知服务中传入一条消息,请求会先传入对应的服务,之后该服务会生成一条请求触发函数。在这种情况下,函数将执行请求,但不会向客户端返回执行结果,因此称为异步事件。
3. 拉取事件
在拉取事件模型中,触发源往往会收到持续不断的请求,也称为流数据。和上述两种事件模型不同,触发源不会主动上报或推送请求,而是由FaaS平台持续运行一个探测服务,检测变化并主动拉取数据,传入一个触发请求执行的函数。该模型最典型的案例是触发消息队列,在交易系统中,通过消息队列实时处理用户的交易日志,将该队列配置为FaaS平台的触发源,则可以对消息队列中的流数据进行安全性检查,筛选出异常数据(如刷单)并告警。
3.1.2 常见触发器介绍
FaaS平台的强大能力来自对多种触发方式的支持,FaaS平台常见的触发器有以下几种。
- API网关:FaaS平台最常用的触发器之一,作为Serverless服务的API接入层,起到请求转发、认证鉴权、安全防护等作用。网关的触发方式主要是同步请求。
- 对象存储服务:作为云端的分布式存储服务,在数据转存、文件处理等场景下和FaaS服务有紧密的结合,例如文件解压缩、CDN缓存刷新等。
- 消息队列服务:用于数据处理,对生产者和消费者之间的数据进行解耦。FaaS服务可以很好地完成数据中转处理,在数据清洗、异常检测场景的应用十分广泛。
- 数据库服务:FaaS服务和云上数据库服务也有紧密的结合。数据库增删改查等操作作为触发器事件会传入FaaS平台,从而执行关联操作,例如计数、发送告警等。
- 监控、告警:FaaS服务可以作为监控服务的事件处理平台,用户通过配置监控触发FaaS服务执行自定义逻辑,例如发送告警短信和邮件等。
- 物联网应用:物联网应用具有弱状态性、波峰波谷明显等特点,十分适合通过FaaS平台触发。典型的物联网服务有AWS Alexa、腾讯云智能对话平台等。
- 定时触发:用于在约定的时间执行计划好的工作,一般通过用户定义CRON表达式实现时间周期的配置。定时触发的应用场景非常广泛,例如定时提醒服务(邮件、企业办公软件等)、日志定时清理及收集、请求定时刷新保活等。
- API / SDK触发:针对一些自定义场景,也可以直接调用FaaS服务的标准HTTP接口触发,从而实现服务间的灵活组合及扩展。