無伺服器器運算如何提升效能?| Lambda 效能

在無伺服器架構中,擁有更多的服務提供點會對效能產生巨大的正面影響。

學習目標

閱讀本文後,您將能夠:

  • 瞭解 AWS Lambda、Lambda@Edge 和 Cloudflare Workers
  • 查看平台之間的效能差異
  • 瞭解延遲和服務提供點

複製文章連結

無伺服器如何改善效能?

無伺服器運算的一個優點是可以從任何地方執行應用程式代碼。如定義所示,無伺服器架構中沒有來源伺服器;因此,代碼可以在靠近終端使用者的邊緣位置執行。AWS Lambda@Edge 和 Cloudflare Workers 是兩個利用此功能、從而減少延遲的無伺服器平台。透過比較 Lambda 與 Cloudflare Workers 和 Lambda@Edge 的效能,可以觀察在邊緣部署無伺服器應用程式的效果。測試結果(如下)表明,Cloudflare Workers 通常具有更快的回應速度。

什麼是 AWS Lambda?

AWS Lambda 是 Amazon Web Services 提供的無伺服器基礎結構服務。Lambda 代管以多種語言編寫的事件驅動型應用程式功能,並在需要時啟動和執行這些功能。

AWS Lambda 部署在哪裡?

AWS 在全球範圍提供眾多部署區域。通常,Lambda 代管的應用程式僅託管在這些區域中的某一個區域。

什麼是 AWS Lambda@Edge?

AWS Lambda@Edge 是部署在全球各地所有 AWS 區域中,而不是一個當地地理區域中的 Lambda 服務。儘管 Lambda 支援多種語言,但 Lambda@Edge 功能在 Node.js(用於執行 JavaScript 的執行時期環境)上執行。觸發 Lambda@Edge 功能時,它會在最靠近觸發事件來源的 AWS 區域內執行,這意味著它在盡可能靠近使用該應用程式的人員或機器的區域執行。

例如,假設芝加哥的使用者使用具有無伺服器架構的應用程式請求一些資訊。如果無伺服器應用程式的基礎結構使用 US-East-1 區域(位於維吉尼亞州)內的 AWS Lambda 進行代管,請求須一直傳送到維吉尼亞州的 AWS 中心,回應也將從那裡一直傳回到芝加哥。但是,如果應用程式使用 AWS Lambda@Edge 代管,則請求和回應僅需往返於最近的 AWS 區域,即俄亥俄州的 US-East-2。與 AWS Lambda 相比,距離縮短減少了延遲。

AWS Lambda@Edge 與 Cloudflare Workers

與 AWS Lambda@Edge 相似,Cloudflare Workers 是由世界各地的資料中心託管的事件驅動型 JavaScript 函數。但是,這兩種無伺服器基礎結構服務之間有許多重要區別。Cloudflare Workers 直接在 Chrome V8 上執行,而不是在 Node.js 上執行,並且 Cloudflare 在全球 200 個城市擁有資料中心。由於它們直接使用 V8,因此,與其他無伺服器平台相比,Cloudflare Workers 可以更快地啟動並且消耗更少的資源。在上面的範例中,如果芝加哥的使用者試圖從使用 Cloudflare Workers 構建的應用程式獲取回應,則該請求將傳輸到芝加哥(而不是俄亥俄州)的 Cloudflare PoP。

什麼是延遲?延遲如何影響使用者行為?

在網路中,「延遲」是載入所請求的資訊之前的延遲時間長度。隨著延遲增加,離開網頁的使用者數量也會隨之增加。

即使載入時間小幅縮短,也可以大大提高使用者參與度。例如,沃爾瑪 (Walmart) 進行的一項研究表明,頁面載入時間每縮短一秒鐘,轉換率就會提高 2%。相反,隨著延遲增加,使用者更可能停止使用網站或應用程式。隨著傳輸距離縮短,延遲會減小。

什麼是服務提供點 (PoP)?

服務提供點 (PoP) 是通訊網路相互連接的地方,在網際網路環境中,它是人們連接到網際網路的硬體(路由器、交換器、伺服器等)的地方。在邊緣網路中,服務提供點是邊緣伺服器位置。邊緣上的 PoP 越多,就能為更多使用者提供更快的回應速度,因為 PoP 在地理位置上靠近使用者的可能性隨 PoP 的增加而增加。

無伺服器功能平均回應速度有多快?

為了展示無伺服器回應能力並測試在多個 PoP 部署無伺服器功能的有效性,Cloudflare 對 AWS Lambda、Lambda@Edge 和 Cloudflare Workers 進行了測試。(測試功能是一些簡單指令碼,執行時會返回當前時間。)

下表顯示了 AWS Lambda(藍色)、AWS Lambda@Edge(綠色)和 Cloudflare Workers(紅色)的功能回應時間。針對此測試,AWS Lambda 功能託管在 US-East-1 地區。

aws-lambda-vs-cloudflare-workers

在無伺服器架構中,執行代碼的位置(就地理位置而言)會對延遲產生影響。如果執行應用程式代碼的位置距離使用者較近,資訊不必傳輸那麼遠,應用程式的回應速度就會更快,因此應用程式的效能將提升。儘管這三種服務的回應時間都會變化,但 Cloudflare Workers 的回應速度通常最快。Lambda@Edge緊隨其後,證明了在多個位置執行無伺服器功能的好處。

儘管 AWS 區域遍佈全球,但 Cloudflare 的 PoP 總數更高。Cloudflare 還執行了僅限於北美地區的測試,並篩選掉了由 DNS 解析引起的延遲。下面顯示的結果再次證明了更多 PoP 有助於減少延遲和提升效能。請注意,Cloudflare Workers 回應花費的時間最少。

lambda-vs-workers

無伺服器冷啟動:新處理序在無伺服器架構中回應的速度有多快?

在無伺服器運算中,「冷啟動」是指一個最近未執行的函數必須回應某個事件。此類函數需要「啟動」後才能執行,這通常需要幾毫秒的時間。這可能會導致其他延遲問題。

Cloudflare Workers 完全消除了冷啟動,這意味著它們的啟動時間為零。Cloudflare 全球網路中的每個位置都是這種情況。相比之下,Lambda 和 Lambda@Edge 函數都可能需要一秒鐘的時間才能從冷啟動回應。

差異主要源於 Cloudflare Workers 在 Chrome V8 而非 Node.js 上執行。Node.js 構建於 Chrome V8 之上,啟動時間更長,並需要消耗更多記憶體。通常,V8 執行個體只需不到 5 毫秒的時間即可啟動。

進一步瞭解 Cloudflare Workers