Jump to section

什么是功能即服务(FaaS)?

复制 URL

"功能即服务"(或称为 FaaS)是一种云计算服务,它允许开发人员以功能的形式来构建、计算、运行和管理这些应用包,无需维护自己的基础架构。

FaaS 是一种在无状态容器中运行的事件驱动型执行模型,这些功能将利用 FaaS 提供商的服务来管理服务器端逻辑和状态。

FaaS 解决方案可通过主流公共云提供,并可在内部置备,这样就为企业 IT 应用开发新增了一些重要的功能。获取云原生策略指南,为借助 FaaS 实施无服务器方案做好准备。

以下是 FaaS 的一些常见示例:

  • IBM 云功能
  • Amazon 的 AWS Lambda
  • Google 云功能
  • Microsoft Azure 功能(开源)
  • OpenFaaS(开源)

FaaS 是一种实现无服务器计算的方法,藉此开发人员可以编写业务逻辑,然后在完全由平台管理的 Linux 容器中执行这些业务逻辑。

虽然通常只是一个使用云计算服务的云计算平台,但该模型还在扩展中,包含内部部署和混合部署。

无服务器会对基础架构问题进行抽象处理,例如管理或置备服务器及开发人员的资源分配,并将其提供给平台(如红帽® OpenShift®),这样开发人员就可以专注于编写代码和实现业务价值。

功能是操作系统上的一个运行业务逻辑的软件。应用可以由许多功能组成。

使用 FaaS 模型是通过无服务器架构来构建应用的方法之一,但随着无服务器模式的日渐普及,开发人员正在寻找支持构建无服务器微服务和无状态容器的解决方案。

FaaS 为开发人员提供了一种运行 Web 应用的抽象方式,可以在无需管理服务器的情况下响应事件。例如,上载文件可触发自定义代码,从而将文件转码为各种格式。

FaaS 基础架构通常是由服务提供商按需计量的,主要通过事件驱动型执行模型进行,因此它会随时待命,但不需要任何服务器进程在后台持续运行(这一点与平台即服务 (PaaS)不同)。 

现代 PaaS 解决方案提供了无服务器功能(作为通用工作流的一部分),藉此开发人员可以实现应用的部署,从而模糊了 PaaS 和 FaaS 之间的界线。 

实际上,整个应用将由以下解决方案混合而成:功能、微服务和长期运行的服务。

提供商会通过应用编程接口(API)让您的功能处于可用状态并管理资源分配。由于功能是事件驱动而不是资源驱动的,因此它们很容易进行扩展,这种扩展允许提高效率和价值。

为了发挥部分优势,其体系架构会受到一定制约(例如对功能执行施加时间限制),因此需要做到功能的快速启动和运行。 

功能会在毫秒内启动并处理各个请求。如果您的功能有多个同步请求,系统将创建尽可能多的功能副本来满足需求。

当需求下降时,应用会自动减少功能副本的数量。动态扩展是 FaaS 的一项优势,而且颇具成本效益,因为提供商仅对使用的资源收费,而不对空闲时间收费。

在内部运行时,这种动态特性还可以提高平台密度,从而允许运行更多工作负载并优化资源消耗和功能。

需要横向扩展的事件驱动型服务可作为功能和 RESTful 应用进行工作。 

FaaS 非常适合大数据量的交易、经常发生的工作负载,例如报表生成、图像处理或任何计划任务。常见的 FaaS 用例包括数据处理、IoT 服务、移动和 Web 应用。

您可以使用 FaaS 构建完全无服务器化的应用,也可以打造部分无服务器、部分传统微服务组件的应 用 ,以便利用更新的技术和容器编排系统,如 Kubernetes

  • 提高开发人员的生产率并缩短开发时间
  • 不负责服务器管理
  • 易于扩展,且横向扩展由平台管理
  • 仅在必要和需要时消耗资源或支付费用
  • 几乎可以用任何编程语言来编写功能

最初,FaaS 和无服务器多多少少具有一定的相似性,但现在,无服务器的含意已扩展至更多的体系架构模式和实践,除了以 FaaS 编码的自定义业务逻辑外,它们还大量使用了通用服务。

微服务甚至传统应用都可以使用无服务器,只要它们可以容器化并且符合动态扩展和状态管理的要求即可。 

"无服务器"一词也用于表示托管服务(例如数据库和消息传递系统)- 由于系统由云提供商或第三方公司管理,因此无需开发人员或管理员来操作系统。  

FaaS 与主要通过事件驱动型体系架构连接的通用后端服务(如数据库、消息传递和身份验证)相结合,可为无服务器开发人员带来最大的收益。

继续阅读

文章

有状态 VS 无状态

要判断一个应用为有状态或无状态,取决于交互状态的记录时长以及该信息所需的存储方式。

文章

什么是 Quarkus?

Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的 Kubernetes 原生 Java 堆栈,专门根据容器而对 Java 进行了优化。

文章

什么是无服务器?

无服务器是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。

详细了解云原生应用

产品

企业级应用平台,包含一系列久经测试的服务,可在您选择的基础架构上将应用推向市场。

相关资源

电子书

云原生遇到混合云:策略指南

电子书

云原生应用的构建之路

产品规格表

以更低的成本和复杂性加速应用开发

培训

免费培训

利用微服务架构开发云原生应用