功能即服务 (FAAS) 是一类云计算服务,它提供了一个平台,允许客户开发、运行和管理应用程序功能,而 无需构建和维护通常与开发和启动应用程序相关的基础设施的复杂性。 构建遵循此模型的应用程序是实现“无服务器”体系结构的一种方式,通常在构建微服务应用程序时使用。
FAAS 最初是由 PiCloud 等各种初创企业在2010年左右提供的。
AWS Lambda 是大型公共云供应商提供的第一个 FAAS,随后是 Google Cloud Functions、Microsoft Azure Functions、IBM/Apache 2016年的 OpenWhisk (开源)和 2017 年的 Oracle Cloud FN(开源)。
国内的云厂商近几年也陆续提供 FAAS 产品,有阿里云 Serverless 服务、腾讯云云函数(Serverless Cloud Function,SCF)、华为云函数工作流(FunctionGraph)。
云服务商 | 产品 | 产品介绍 | 使用场景 | 客户案例 | 备注 |
---|---|---|---|---|---|
AWS | AWS Lambda | AWS Lambda 是一项无服务器事件驱动型计算服务,该服务使您可以运行几乎任何类型的应用程序或后端服务的代码,而无需预置或管理服务器。 | 文件处理; 流处理;Web 应用程序;IoT 后端;移动后端; | 可口可乐 西门子 Netflix Coinbase | |
阿里云 | Serverless 工作流 | Serverless 工作流(Serverless Workflow)是用来协调多个分布式任务执行的全托管 Serverless 云服务,简化开发、运行业务流程需要的任务协调、状态管理和错误处理等繁琐工作。用顺序、分支、并行等方式编排分布式任务,服务按照预设顺序协调任务执行,跟踪任务的状态转换,必要时执行用户定义的重试逻辑,确保工作流顺利完成。 | 多媒体文件处理场景;数据处理流水线场景;自动运维场景;解决运维无法可视化的问题; | ||
Serverless 应用引擎 SAE | 是一个全托管、免运维、高弹性的通用 PaaS 平台。SAE 支持 Spring Boot、Spring Cloud、Dubbo、HSF、Web 应用和 XXL-JOB、ElasticJob 任务的全托管,零改造迁移、无门槛容器化、并提供了开源侧诸多增强能力和企业级高级特性。 | 微服务应用托管;弹性扩缩容场景;持续集成与交付; | 贵州酒店集团 视野数科 爱奇艺体育 | 类似 side car ,用来管理应用,承接流量 | |
Serverless 容器服务 ASK | 是一款基于阿里云弹性计算基础架构,同时完全兼容 Kubernetes 生态,安全、可靠的容器产品。通过该产品,您无需管理和维护集群即可快速创建 Kubernetes 容器应用,并且根据应用实际使用的 CPU 和内存资源量进行按需付费,从而使您更专注于应用本身,而非运行应用的基础设施。 | 应用托管;在线业务弹性阔缩容数据计算 低成本支撑CI/CD任务执行 | 图森未来 越光医疗 | ||
腾讯云 | 云函数(Serverless Cloud Function,SCF) | 腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。 | 静态网站托管;构建 RESTful API;部署 Serverless 全栈 Web 应用;Serverless 全景录制方案; | 腾讯视频 新东方 微信阅 腾讯教育 腾讯相册 百视通 猎豹移动 | |
API网关 | 腾讯云 API 网关(API Gateway)是腾讯云推出的一种 API 托管服务,能提供 API 的完整生命周期管理,包括创建、维护、发布、运行、下线等。 | Serverless HTTP;微服务整合;外部多端统一;业务整合;能力提供及售卖; | 人人视频 江娱互动 腾讯视频 英孚教育 |
常规的一个服务在容器中启动的流程 | FAAS 调用启动流程 |
---|---|
其实理解起来比较简单,可以理解成我们的代码已经是与 PAAS 平台进行强解耦的结果了,我们的代码就是一部电视剧,一个操作系统安装了指定的视频播放器就可以播放我们的电视剧了,同理,我们现在只需要关心我们的函数内业务代码逻辑的定义,只要接口定义的按照封装平台的要求来开发即可,我们不需要关心运行的环境及系统,由于 runtime 已经到了 func 级别,热更新代码以及启动服务都是快速可以响应的。
综上,若 FAAS 代表着是“无服务器”架构的话,其实 Service Mesh 严格意义上不能称为是“无服务器”架构,它并不能将容器部署与代码部署隔离开,只是在服务响应中增加了一层代理,用来控制应用程序中服务请求的传递,可以使得服务到服务的通讯快速、可靠和安全。
优点:
缺点:
将调用限流、熔断、安全、服务注册与发现、服务管理等非业务逻辑的功能全部都放到 Sidecar 中去,本质上是一个管理性质进程在管理着业务逻辑性质的进程,进程之间的通讯使用的是 UDC(Unix domain socket)。