Cloud Run 是全代管應用程式平台,可在 Google 高擴充性的基礎架構上執行程式碼、函式或容器。
簡而言之,開發人員可透過 Cloud Run 專心編寫程式碼,不必花費太多時間操作、設定及擴充 Cloud Run 服務。您不必建立叢集或管理基礎架構,就能使用 Cloud Run 提高生產力。
服務和工作
在 Cloud Run 中,您的程式碼可以做為服務或工作執行。
下表概略列出各 Cloud Run 資源類型提供的選項。
| 資源 | 說明 |
|---|---|
| 服務 | 使用無狀態容器執行個體,回應傳送至專屬穩定端點的 HTTP 要求,並根據各種重要指標自動調度資源,同時回應事件和函式。 |
| 工作 | 執行可平行處理的工作,這些工作會手動或依排程執行,直到完成為止。 |
Cloud Run 服務
Cloud Run 服務提供執行可靠 HTTPS 端點所需的基礎架構。如要使用這項服務,請務必確保程式碼監聽 TCP 通訊埠,並處理傳入的 HTTP 要求。
下圖說明 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 服務可從網際網路連線,您也可以透過下列方式限制存取權:
- 使用 Cloud Identity and Access Management (IAM) 指定存取權政策。
- 使用輸入設定限制網路存取權。如果您只想允許來自虛擬私有雲和內部服務的內部流量,這項功能就非常實用。
- 只允許通過 Identity-Aware Proxy (IAP) 驗證的使用者存取。
您可以透過內容傳遞聯播網 (CDN) (例如 Firebase 託管和 Cloud CDN) 服務前端,從更靠近用戶端的邊緣位置提供可快取的資產。
將資源調度率降至零並使用最少執行個體
根據預設,如果帳單設定為以例項為準的帳單,Cloud Run 會自動新增及移除例項,以處理所有傳入要求,或處理要求以外的 CPU 使用率增加情況。
將資源縮減為零
如果服務沒有任何傳入要求,即使是最後一個例項也會遭到移除。這種行為通常稱為「擴充至零」。
如果服務沒有任何作用中執行個體,Cloud Run 會在收到新要求時建立新的執行個體。視容器準備好處理流量的速度而定,這個程序可能會增加這些初始要求的回應時間。
變更資源調度行為
您可以透過下列任一方法修改這項預設行為:
- 執行個體數量下限:設定 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,並每隔幾小時上傳檔案。