Serverless功能特性

本文介绍当前serverless架构中函数及事件系统应该具备的能力。

让我们介绍一下serverless架构功能。


一、函数功能

函数调用
  • 可以使用多种语言,只需要提供一个代码片段即可运行
  • 函数之间可以调用
  • 函数执行超时时间
  • 支持代码中使用第三方依赖
调试
  • 本地IDE开发调试
  • 在界面上调试,能够快速的部署,收集调试的日志
构建

从源码到服务,自动构建,支持不同语言,第三方依赖

集成

能够方便的调用其他服务(如存储、数据库等)

版本
  • 支持多个版本
  • 支持蓝绿测试
权限验证

包括外部请求接口的权限以及函数内部调用其他服务的权限

性能

高性能

数据输入输出绑定

输入输出数据源的绑定(比如数据源可以是http、kafka队列)

日志

统一收集调用日志

自动伸缩容

按指标(请求数、cpu)对业务进行快速扩容,扩容过程业务最好无感知,对服务性能无影响。
能缩容到0,减少常驻服务降低成本。

启动时间

冷启动时间尽可能缩短,如果使用k8s,包含k8s启动容器时间 + 业务进程启动时间。解决从0->1和1->n快速扩容的问题。

工作流

能够编排工作流,按步骤调用函数

计费(可选)

只为使用的资源付费,能够采集cpu时间、耗时用于计费


二、事件功能

自定义事件源

根据规范可以自由定制业务自己想要的事件源来触发Event

任务完成提供回调功能

事件触发后等待任务完成,完成后可以回调业务配置的接口

事件编排——工作流引擎
  • 提供工作流定制的功能,让用户可以在Event上配置各种事件的依赖关系
  • 支持顺序事件、分支事件和并行事件
性能

高吞吐处理事件源

事件权限隔离

业务只能编排自己创建的事件,外部触发事件流时,也只能触发自己创建的事件流

监控功能

可监控各个业务的单个事件、事件链路耗时等指标

操作平台

供用户编排事件,查看事件结点日志等

对外API提供

可提供通用hook供业务使用,用来触发事件链路的根节点

横向扩展能力

具有横向扩展能力来应对持续增长的事件处理

全局唯一事件id

提供唯一事件id,在并行事件中可以等到该id的所有前置步骤完成后,才触发下一步行为;不同id的 前置步骤不会触发其他id的下一步行为

下游扩展能力

事件触发后,除http调用外,还提供如RPC等其他协议来触发下游任务

调试功能

提供单步调试功能,可直接调试事件链路中的任意相连结点组合


参考资料