首页 >web前端 >js教程 >无服务器功能:使用和部署指南

无服务器功能:使用和部署指南

Lisa Kudrow
Lisa Kudrow原创
2025-02-10 09:30:11382浏览

Serverless Functions: A Guide to Usage and Deployment

近年来,无服务器函数(有时也称为“无服务器”或“无服务器计算”)已成为一种流行技术。然而,关于这个术语仍然存在很多混淆。如何在没有服务器的情况下运行代码?这项技术的优缺点是什么?在哪些情况下可以使用它?在本文中,我希望回答这些问题,并为您提供该技术的良好概述。

关键要点

  • 无服务器函数允许开发人员在无需管理服务器的情况下运行代码,云提供商负责服务器的配置、扩展和管理,使开发人员能够专注于编码。
  • 由于其计费模式(基于实际使用的计算时间收费,通常以毫秒计算),这些函数对于零星或轻量级工作负载具有成本效益。
  • 虽然无服务器函数会自动扩展以处理增加的流量,但由于云提供商施加的最大执行时间限制,它们最适合短生命周期进程。
  • 无服务器函数的常见用例包括简单的后端任务,例如表单邮件程序、计划的 cron 作业和图像处理任务,这证明了它们在处理各种小型后端操作方面的多功能性。
  • 部署无服务器函数涉及创建函数代码、将其与必要的依赖项打包并将其上传到云提供商,具体细节因提供商和使用的特定技术而异。

什么是无服务器函数?

第一次听到“无服务器”这个术语肯定会激起好奇心。“如何在没有服务器的情况下在 Web 上运行代码?”你可能会想。它的实际含义是,作为开发人员,您不必担心代码运行的服务器。硬件的配置、网络的配置、软件的安装和扩展都由无服务器提供商抽象化。

从开发的角度来看,无服务器函数是您上传到无服务器提供商(例如 AWS 或 Google)的代码包。此代码可以配置为通过 URL 响应请求、按计划运行(即通过 cron 作业)或从其他服务或无服务器函数调用。

无服务器函数非常适合为前端应用程序添加后端功能,而无需运行完整服务器的复杂性和成本。

在另一个极端,您还可以使用无服务器函数构建整个应用程序。结合提供文件存储、数据库系统和身份验证的其他云服务,可以构建大型、健壮且可扩展的应用程序,而无需配置单个服务器。

无服务器函数的优势

无服务器函数在按需启动的微型容器中运行。它们专为相当短的运行进程而设计,因此计费也以此为准。与通常按小时计费的完整服务器实例不同,无服务器函数通常按 GB 秒计费。由于最短计费时间约为毫秒级,因此低频或零星工作负载作为无服务器函数运行的成本远低于传统服务器实例。轻量级工作负载和原型设计甚至可能属于某些提供商的免费层。

无服务器函数的按需调用意味着它们可以快速轻松地扩展,而无需开发人员做额外的工作。这使得它们非常适合流量可能不可预测地激增的情况,因为将自动提供更多函数实例来处理负载。之后,函数将缩减规模,这意味着您无需为未使用的容量付费。

无服务器模型的一个主要优势是无需处理服务器。运行 Web 应用程序需要大量时间和服务器管理方面的专业知识,才能使软件保持最新安全补丁,并确保服务器配置正确以确保安全和高性能。对于初创企业和小型企业而言,聘请人员处理服务器管理是一项巨大的额外开销。使用无服务器,开发人员可以专注于创建解决方案。

无服务器函数的缺点

当然,没有哪项技术是完美的,无服务器函数也有其缺点。正如我前面提到的,无服务器模型的设计考虑的是短暂的进程。由于最大执行时间以分钟为单位(例如,AWS 上为 15 分钟,Google 上为 9 分钟),因此它不适合长时间运行的作业,例如处理大量数据。

另一个广泛讨论的问题是冷启动时间。这是提供商在无服务器函数准备好开始运行之前配置和初始化其容器所需的时间。函数运行完毕后,容器将保留一段时间,以便在再次执行代码时重用。这种“冷启动”延迟可能会给函数的响应时间增加半秒到一秒的延迟。有一些解决方法,包括 Serverless 框架的 WarmUp 插件,它会按计划 ping 您的函数以保持容器处于活动状态。

虽然无服务器函数使您无需担心服务器配置和维护,但这并不意味着没有学习曲线。使用无服务器构建应用程序需要与使用传统单体代码库不同的思维方式。您必须以不同的方式构建代码,将功能分解成更小、更独立的服务,以适应无服务器函数的限制。部署也更加复杂,因为每个函数都是独立版本化和更新的。

有时还会提到供应商锁定问题,这是无服务器技术的缺点。就目前而言,该领域的 主要提供商(AWS、Google、Azure)都有各自不同的实现和管理工具。这可能会使将无服务器应用程序从一个云提供商迁移到另一个云提供商变得困难。诸如 Serverless Framework 之类的项目试图抽象化底层服务,以便使应用程序可在提供商之间移植。

无服务器函数用例

尽管无服务器函数可用于构建整个应用程序,但让我们来看一些无服务器可以使普通开发人员受益的不太雄心勃勃的用例。

表单邮件程序

网站通常完全是静态的,除了客户希望在用户点击发送时将其通过电子邮件发送给他们的联系表单。网站的托管提供商可能支持也可能不支持服务器端脚本,即使支持,也可能不是您熟悉的语言。将无服务器函数设置为表单邮件程序允许您将此功能添加到静态托管的网站。

Cron 作业

有时您可能需要在后台运行计划的任务。通常,您必须付费才能设置 cron 作业的服务器,并且此服务器会在作业之间处于空闲状态。使用无服务器函数,您只需为作业运行所花费的时间付费(如果在免费层内,则可能根本无需付费)。

缩略图生成器

假设您的 React 应用程序允许用户上传照片用作整个应用程序中的头像。您希望调整上传图像的大小,这样就不会因为提供比需要大得多的图像而浪费带宽。无服务器函数可用于处理上传请求,将图像调整为所需大小并保存到 S3 或 Google Storage 等服务。

无服务器函数的实际示例

为了更深入地了解无服务器函数的工作原理,让我们来看一个真实的例子。我们将创建一个带有新闻稿注册表单的静态页面,该页面使用无服务器函数将用户的姓名和电子邮件地址保存到 Google 电子表格。

根据提供商的不同,无服务器函数可以用多种语言编写,但我们将使用 JavaScript,因为 Netlify 支持 Node.js 函数。为了继续学习,我假设您在本地计算机上安装了最新版本的 Node/npm。

(以下步骤与原文示例相同,为了保持一致性,这里不再重复翻译。)

无服务器:只是一个时尚,还是后端的未来?

无服务器同时被斥为一种时尚,并被誉为后端应用程序的未来。亚马逊的 Lambda 函数自 2014 年以来就已存在,并且是 AWS 的一个关键产品。当然,在许多情况下,仍然需要全天候运行并具有完全 shell 访问权限的实际服务器的灵活性和功能。

但是,正如我们所看到的,对于某些类型的工作负载,无服务器的低廉成本、可扩展性和低维护成本使其成为一个不错的选择。随着无服务器生态系统中越来越多的书籍、课程、框架和服务的出现,可以肯定地说,无服务器函数将长期存在。

(以下FAQ部分与原文示例相同,为了保持一致性,这里不再重复翻译。)

以上是无服务器功能:使用和部署指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn