什麼是 Cloud Run?

Cloud Run 是全代管應用程式平台,可在 Google 高擴充性的基礎架構上執行程式碼、函式或容器。

簡而言之,開發人員可透過 Cloud Run 專心編寫程式碼,不必花費太多時間操作、設定及擴充 Cloud Run 服務。您不必建立叢集或管理基礎架構,就能使用 Cloud Run 提高生產力。

服務和工作

在 Cloud Run 中,您的程式碼可以做為服務工作執行。

下表概略列出各 Cloud Run 資源類型提供的選項。

資源 說明
服務 使用無狀態容器執行個體,回應傳送至專屬穩定端點的 HTTP 要求,並根據各種重要指標自動調度資源,同時回應事件和函式。
工作 執行可平行處理的工作,這些工作會手動或依排程執行,直到完成為止。

Cloud Run 服務

Cloud Run 服務提供執行可靠 HTTPS 端點所需的基礎架構。如要使用這項服務,請務必確保程式碼監聽 TCP 通訊埠,並處理傳入的 HTTP 要求。

下圖說明 Cloud Run 服務如何執行多個容器執行個體,處理來自用戶端的網路要求和事件:

Cloud Run 服務會執行容器,處理網路要求和事件

標準服務包含下列功能:

每個服務都有專屬的 HTTPS 端點
每個 Cloud Run 服務都有 HTTPS 端點,位於 *.s3nsrun.fr 網域的專屬子網域中,您也可以設定自訂網域。Cloud Run 會為您管理 TLS,並支援 WebSocket、HTTP/2 (端對端) 和 gRPC (端對端)。
根據要求快速自動調度資源
如果帳單設定為以執行個體為準的計費方式,Cloud Run 會快速擴充,處理所有傳入要求,或處理要求以外的 CPU 使用率增加情況。服務可以快速水平擴展至一千個執行個體,如果要求增加配額,甚至可以擴展至更多執行個體。如果需求減少,Cloud Run 會移除閒置容器。如果您擔心費用或下游系統負載過重,可以限制執行個體數量上限。
手動調整資源配置 (選用)
根據預設,Cloud Run 會自動調度更多執行個體來處理更多流量,但您可以透過手動調度來控管調度行為,藉此覆寫這項行為。
內建流量管理

為降低部署新修訂版本的風險,Cloud Run 支援漸進式推出,包括將傳入流量導向最新修訂版本、復原至先前的修訂版本,以及同時將流量分配給多個修訂版本。

舉例來說,您可以先將 1% 的要求傳送至新修訂版本,然後在監控遙測資料時提高該百分比。

公開和私人服務

Cloud Run 服務可從網際網路連線,您也可以透過下列方式限制存取權:

您可以透過內容傳遞聯播網 (CDN) (例如 Firebase 託管和 Cloud CDN) 服務前端,從更靠近用戶端的邊緣位置提供可快取的資產。

將資源調度率降至零並使用最少執行個體

根據預設,如果帳單設定為以例項為準的帳單,Cloud Run 會自動新增及移除例項,以處理所有傳入要求,或處理要求以外的 CPU 使用率增加情況。

將資源縮減為零

如果服務沒有任何傳入要求,即使是最後一個例項也會遭到移除。這種行為通常稱為「擴充至零」。

如果服務沒有任何作用中執行個體,Cloud Run 會在收到新要求時建立新的執行個體。視容器準備好處理流量的速度而定,這個程序可能會增加這些初始要求的回應時間。

變更資源調度行為

您可以透過下列任一方法修改這項預設行為:

服務的即付即用價格

從經濟角度來看,縮減至零很有吸引力,因為系統會以 100 毫秒為單位,針對分配給執行個體的 CPU 和記憶體收費。如果未設定執行個體下限,且服務未啟用,您就不必支付費用。提供超值的免費方案。詳情請參閱定價

您可以啟用兩項帳單設定:

以要求為依據
如果執行個體未處理要求,就不會產生費用。您需要支付每項要求的費用。
以執行個體為依據
系統會向您收取執行個體完整生命週期的費用。不會收取單次要求費用。

提供超值的免費方案。詳情請參閱定價,並參閱帳單設定,瞭解如何為服務啟用以要求為準或以執行個體為準的計費方式。

可拋棄式容器檔案系統

Cloud Run 上的執行個體是可拋棄式的。每個容器都有可寫入的記憶體內檔案系統疊加層,如果容器關閉,這個疊加層就不會保留。Cloud Run 會判斷何時停止將要求傳送至執行個體,並關閉執行個體,例如在縮減規模時。

如要在 Cloud Run 即將關閉執行個體時收到警告,應用程式可以截取 SIGTERM 信號。這可讓程式碼排清本機緩衝區,並將店面資料保存至外部資料儲存區。

如要永久保留檔案,請與 Cloud Storage 整合掛接網路檔案系統 (NFS)

Cloud Run 服務的使用時機

Cloud Run 服務非常適合處理要求、事件或函式的程式碼。使用案例範例包括:

網站和網頁應用程式
利用最常用的堆疊建構網頁應用程式、存取 SQL 資料庫,以及呈現動態 HTML 網頁。
API 與微服務
您可以建構 REST API、GraphQL API,或是透過 HTTP 或 gRPC 通訊的私人微服務。

Cloud Run 工作

如果您的程式碼會執行作業,然後停止 (例如使用指令碼),則可以使用 Cloud Run 工作執行程式碼。您可以使用 Google Cloud CLI 從指令列執行工作、排定重複執行工作

陣列工作是執行工作的更快方式

作業可以啟動單一執行個體來執行程式碼,這是執行指令碼或工具的常見方式。

不過,您也可以使用陣列工作,平行啟動許多相同的獨立執行個體。如果工作可拆分成多個獨立任務,陣列工作就是更快速的處理方式。

下圖顯示有七項工作的作業依序執行時,所需時間比四個執行個體並行處理獨立工作時更長:

陣列工作是執行可平行處理工作的更快方式

舉例來說,如果您要調整 Cloud Storage 中 1,000 張圖片的大小並裁剪,連續處理這些圖片的速度會比使用多個執行個體平行處理慢,而 Cloud Run 會管理自動調整資源配置。

Cloud Run 工作的使用時機

Cloud Run 工作非常適合執行特定作業的程式碼,會在完成後自動結束。以下是一些例子:

指令碼或工具
執行指令碼,進行資料庫遷移或其他作業工作。
陣列工作
對 Cloud Storage 值區中的所有檔案執行高度平行化處理。
已排定的工作
定期建立及傳送月結單,或將資料庫查詢結果儲存為 XML,並每隔幾小時上傳檔案。

後續步驟