首頁 > web前端 > js教程 > 無服務器功能:使用和部署指南

無服務器功能:使用和部署指南

Lisa Kudrow
發布: 2025-02-10 09:30:11
原創
372 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板