简介
函数即服务(FunctionasaService,FaaS)是当前Serverless实现的技术基础。FaaS的一个鲜明特点是,应用程序的颗粒度不再是集众多业务功能于一身的集合体,而是一个个细颗粒的函数(Function)。
特点
FaaS与serverless关系密切,因此FaaS的特点同时也是Serverless平台的特点
- 抽象了底层计算资源
- 按使用量付费
- 自动弹性扩展
- 事件驱动
FaaS架构特点
- 函数定义(FunctionDefinition)
一个函数实现一个业务逻辑 - 函数实例(FunctionInstance)
在运行状态的应用函数的实例 - 控制器(Controller)
负责应用函数的加载、执行等流程的管理 - 事件(Event)
事件驱动架构中的事件 - 事件源(EventSource)
事件驱动架构中的事件来源。可以是一个数据库中插入了新的记录,也可以是一个目录里删除了一个文件,或者是消息队列收到了新的消息 - 触发规则(TriggerRule)
定义事件与函数的关系及触发的规则 - 平台服务(PlatformService)
支撑应用运行的各类底层服务,如计算资源、数据存储等
函数的生命周期
- 函数应用的开发
当前主流的FaaS平台都支持多种不同的编程语言,如Java、Python、JavaScript及Go等 - 函数上传FaaS平台
平台将负责编译和构建这些函数,并将构建的输出保存。一个完善的FaaS平台可以对函数进行版本控制 - 设置函数触发规则
将事件源与特定版本的函数进行关联。一个函数可以和多个不同版本的事件源进行关联 - FaaS平台管理
当事件到达且满足触发规则时,平台将会部署、编译构建后的函数并执行。平台将监控函数执行的状态,根据请求量的大小,平台负责对函数实例进行扩容和缩容