什麼是 Cloud Run?

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

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

服務和工作

在 Cloud Run 中,程式碼可以服務、工作worker 集區的形式執行。。

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

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

Cloud Run 服務

Cloud Run 服務提供執行可靠 HTTPS 端點所需的基礎架構。您有責任確保程式碼監聽 TCP 連接埠並處理 HTTP 要求。

下圖顯示 Cloud Run 服務執行數個容器執行個體,透過 HTTPS 端點處理用戶端的網頁要求和事件。

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 Hosting 和 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,並每隔幾小時上傳檔案。

後續步驟