什么是无服务器?

复制 URL

无服务器是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。“无服务器”这一术语并不意味着没有服务器,而是指在应用开发过程中对服务器进行了抽象化处理。云提供商负责置备、维护和扩展服务器基础架构等例行工作。

在无服务器架构中,开发人员只需将代码打包到容器中即可进行部署。部署之后,无服务器应用即可响应需求,并根据需要自动扩展和缩减。公共云提供商的无服务器产品通常利用一种事件驱动型执行模型来按需计量。因此,当无服务器功能闲置时,不会产生任何费用。

探索红帽 OpenShift Serverless

“无服务器计算”和“无服务器架构”这两个术语经常互换使用,但它们实际上是不同的概念。“无服务器计算”是指应用的开发模式,“无服务器架构”则是指应用的设计方法。

无服务器计算

无服务器计算与其他云计算模型的区别在于,它是由云提供商负责管理云基础架构和应用扩展。应用无需置备和维护服务器,而是在由云提供商提供的自动管理的计算资源上运行。无服务器计算为事件驱动型,可自动进行扩展,并且通常采用即付即用的定价模式。无服务器应用部署在容器中,这些容器在被调用时会自动按需启动。

在标准的基础架构即服务(IaaS)云计算模型中,用户需要预先购买容量单元;也就是说,您要先向公共云提供商支付始终可用的服务器组件的费用,才能运行您的应用。用户自行负责在需求高时扩展服务器容量,并在不再需要时缩减容量。即使在应用闲置不用期间,运行该应用所需的云基础架构也要保持就绪。

无服务器计算的类型

无服务器计算可以分为以下几类:

  • 功能即服务(FaaS):FaaS 在短期容器中运行事件驱动型功能。无需管理服务器实例,它仅在触发时执行。
  • 后端即服务(BaaS):BaaS 提供完全托管的后端服务,可处理身份验证、数据库、消息传递和存储等功能。它常用于移动应用和 Web 应用。
  • 无服务器数据库:无服务器数据库可自动扩展,而且无需进行基础架构管理。
  • 无服务器容器:无服务器容器无需手动置备即可运行,而且可以动态扩展。
  • 无服务器边缘计算:无服务器边缘计算在用户附近运行代码,以降低延迟。

无服务器架构

无服务器架构描述了一种设计方法,其中应用仅在需要时启动。有事件触发应用代码运行时,公共云提供商才会为这一代码分配资源。该代码执行结束后,用户便不再付费。无服务器还帮助开发人员摆脱了与应用扩展和服务器置备相关的任务。管理操作系统和文件系统、安全补丁、负载平衡以及容量管理等例行任务都由云服务提供商分担。您既可以构建一个完全无服务器化的应用,也可以打造一个由无服务器组件和传统微服务组件构成的应用。

采用微服务组件的无服务器架构称为无服务器微服务。在无服务器微服务中,无服务器架构使开发人员能够编写代码,而微服务则将应用分解为更小、更易于管理的组件。这种组合可以实现更快速的开发和部署。 

红帽资源

优势

  • 摆脱服务器管理任务:开发人员无需再置备、维护或扩展服务器,从而有更多时间专注于应用开发。
  • 经济高效:采用即用即付模式,您只需为功能的实际执行时间付费,从而降低了闲置资源的成本。
  • 加快开发和部署速度:由于基础架构管理工作减少,且部署所需的前期设置极少,显著提升了开发人员工作效率
  • 自动扩展:功能和服务可根据需求自动进行扩展或缩减。
  • 内置安全防护:安全更新和补丁均由提供商管理,降低了因服务器配置不当而带来的风险。

缺点

  • 架构复杂:当多个功能以异步方式交互时,事件驱动的工作流可能会变得很复杂。
  • 交互限制:云提供商可能会对您使用其组件的方式施加限制,这可能会降低灵活性。
  • 供应商锁定:与云提供商生态系统紧密集成的无服务器服务可能会使迁移变得困难。

无服务器用例有哪些?

对于能够瞬时启动的异步、无状态应用,无服务器架构是十分理想的选择。它适合那些有不频繁、无法预知的激增需求的用例。

比如有一个批处理传入图像文件的任务,它的运行频率也许并不高,但时不时就会有大量图像一次性到达。或者例如监控数据库传入的更改,再应用一系列功能,比如对照质量标准检查更改或进行自动转换。

无服务器应用也适合涉及传入数据流、聊天机器人、计划任务或业务逻辑的用例。

其他一些常见的无服务器用例有后端应用编程接口(API)和 Web 应用、业务流程自动化、无服务器网站,以及跨多系统集成。

在无服务器模型中,云提供商负责运行物理服务器并代表用户分配资源,用户则可以直接将代码部署到生产环境中。

FaaS 是一种更为常见的无服务器模型,它专注于事件驱动的功能,使开发人员能够编写自定义服务器端逻辑,并部署到完全由云服务提供商管理的容器中。这些容器具有以下特点:

  • 无状态 - 让数据集成变得更加简单。
  • 短暂运行 - 可以只运行非常短的时间。
  • 由事件触发 - 在需要时自动运行。
  • 完全托管 - 只需为使用的资源付费。

借助 FaaS,开发人员可以拥有更高程度的控制权,并可以通过 API 调用功能,而且这些 API 由云提供商通过 API 网关进行管理。

各大主流云提供商都提供 FaaS 解决方案,其中包括 AWS Lambda、Azure Functions、Google Cloud 和 IBM Cloud Functions。一些公司使用红帽® OpenShift® Serverless(基于 Knative)之类的开源平台来运行他们自己的 FaaS 环境。

FaaS 与其后端服务对应项 BaaS 的不同之处在于,BaaS 通常通过 API 为开发人员提供访问第三方服务(如身份验证、加密和数据库)的途径。虽然 BaaS 简化了后端开发任务,但在自定义应用逻辑方面给予开发人员的控制权相对较少。

进一步了解 FaaS

Kubernetes 是一个广受欢迎的用于管理容器化应用的平台,但它本身并不原生支持无服务器工作负载。Knative 是一个开源项目,可以添加必要组件,从而在 Kubernetes 上部署、运行和管理无服务器应用。

借助 Knative,您可以在红帽 OpenShift 等 Kubernetes 平台上部署代码,从而打造无服务器环境。使用 Knative 时,您只需将代码打包成容器镜像,系统会根据需求自动启动和停止实例。

Knative 包含三个主要组成部分:

  • 构建(Build):将源代码转换为容器。
  • 服务(Serving):基于请求驱动的需求,自动部署和扩展容器。
  • 事件处理(Eventing):管理来自各种来源的事件,例如应用程序、云服务软件即服务(SaaS)系统以及用于 Apache Kafka 的 Streams,以此来触发功能。

与传统的无服务器解决方案不同,Knative 支持从单体式应用、微服务到小型功能等多种类型的工作负载。它可以在任何支持 Kubernetes 的平台上运行,包括本地部署环境。

Knative 带来了诸多关键优势,包括:

  • 支持微服务和无服务器工作负载:您可以在 Kubernetes 内部署事件驱动的无状态功能。您还可以部署长时间运行且能够动态扩展的微服务,而无需手动维护服务器实例。
  • 优化成本和资源利用:在与传统微服务中,容器集可能始终处于运行状态,Knative 则与之不同,它支持缩放到零。这意味着如果没有请求传入,Knative 会释放资源,从而降低成本。
  • 标准化 API 和灵活性:Knative 遵循 Kubernetes 原生模式,能够在不同的云提供商平台上使用。

Knative 将无服务器计算的强大功能引入到 Kubernetes 中,简化了无服务器工作负载的部署与管理。

使用 Knative 构建无服务器架构

红帽 OpenShift Serverless 可帮助您更快速地构建和部署无服务器应用,而无需担心基础架构细节方面的管理问题。它提供了一个企业级无服务器平台,能够在混合云和多云环境中实现可移植性和一致性。

借助 OpenShift Serverless,开发人员可以使用 Kubernetes 中的一系列自定义资源定义(CRD)和关联的控制器来创建以源为中心的云原生应用。对于运维团队而言,OpenShift Serverless 提供了一种简化的体验,因为它可以轻松安装在红帽 OpenShift 上,并已通过其他红帽产品的兼容测试,能够获得一流的支持

OpenShift Serverless 可通过将应用与其他红帽 OpenShift 容器平台服务(如红帽 OpenShift 服务网格和集群监控)集成,帮助实现完整的无服务器应用开发和部署解决方案。开发人员的受益之处在于能够使用单个平台来托管微服务、传统应用和无服务器应用。应用将被封装为可在任何地方运行的 Linux® 容器。

创建 OpenShift Serverless 函数

中心

红帽官方博客

获取有关我们的客户、合作伙伴和社区生态系统的最新信息。

所有红帽产品试用

我们的免费试用可让您亲身体验红帽的产品功能,为获得认证做好准备,或评估某个产品是否适合您的企业。

扩展阅读

什么是应用迁移?

应用迁移是指通过将应用从一个环境迁移到另一个环境来改善工作负载的过程。

有状态应用 VS 无状态应用

有状态应用和无状态应用的区别在于,有状态应用会保存过去和现在的信息,而无状态应用不会保存。

一文看懂 SDK 是什么意思?SDK 和 API 的区别是什么?

SDK全称:软件开发套件 (Software development kit)是通常由硬件平台、操作系统(OS)或编程语言的制造商提供的一套工具。就像购买梳妆台时随板材一同提供的工具包,从而可以自行组装。

应用开发和交付 相关资源

相关文章