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 端點處理用戶端的網頁要求和事件。
標準服務包含下列功能:
- 每個服務都有專屬的 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 IAM 指定存取權政策。
- 使用輸入設定限制網路存取權。如果您只想允許來自 VPC 和內部服務的內部流量,這項功能就非常實用。
- 只允許通過 Identity-Aware Proxy (IAP) 驗證的使用者存取。
您可以透過內容傳遞聯播網 (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,並每隔幾小時上傳檔案。