什麼是 Cloud Run?
Cloud Run 是一個完全託管的運算環境,用於部署和擴展無伺服器 HTTP 容器,使用 Cloud Run,您無需擔心配置機器、配置叢集或自動擴展。
- 不受環境限制 – 由於 Cloud Run 採用標準 OCI 容器並實施標準 Knative Serving API,您可以輕鬆地將應用程式移至地端或其他公有雲環境。
- 快速的自動擴展與縮減 – 部署在 Cloud Run 中的微服務會根據傳入請求(request)的數量自動擴展,您無需配置或管理成熟的 Kubernetes 叢集。如果沒有請求,Cloud Run 會自動縮減到0,即不浪費任何資源。
- 分流流量 – Cloud Run 使您能夠在多個版本之間分流流量,因此您可以循序漸進地進行部署,例如使用金絲雀部署(canary deployments )或藍/綠部署(blue/green deployments)。
- 自訂網域 – 您可以在 Cloud Run 中自訂網域配置,為您的網域提供 TLS 憑證。
- 自動冗餘 – Cloud Run 提供自動冗餘,因此您不必為了實現高可用性而創建多個實例(instance)
該如何使用 Cloud Run ?
透過 Cloud Run,您可以使用自己喜歡的語言編寫程式碼和/或使用您選擇的二進位檔, 再將其推送到 Cloud Build 構建容器。 只需要一個指令:“gcloud run deploy”,您就可以將一個容器化映像檔轉到一個完全託管的 Web 應用程式,該應用程式會在具有 TLS 憑證的網域上運行,並根據請求自動擴展。
Cloud Run 是怎麼運作的?
Cloud Run 服務可以透過以下七種方式觸發:
一、HTTPS:您可以透過發送 HTTPS 請求來觸發 Cloud Run 託管服務,所有的 Cloud Run 服務都有一個穩定的 HTTPS 網址。 其中包含的場景有:
- 自定義 RESTful Web API
- 私人微服務
- HTTP 中介層或 Web 應用的反向代理伺服器
- 預先打包好的 Web 應用程式
二、gRPC:您可以使用gRPC將 Cloud Run 服務與其他服務連接起來,例如在內部微服務之間提供簡單、高性能的通訊。當您需要執行以下操作時,gRPC 是個不錯的選擇:
- 想要內部微服務之間進行通訊
- 支持高數據負載(gRPC 使用協定緩衝區,比 REST 調用快七倍)
- 您不想編寫完整的客戶端庫時,只需要一個簡單的服務定義
- 在 gRPC 服務器中使用流式 gRPC 來構建響應速度更快的應用程序和 API
三、WebSockets: Cloud Run 支持 WebSockets 應用程式,無需額外配置。可能的場景包含任何需要串流服務的應用程式,例如聊天應用程式。
四、從 Pub/Sub 觸發:您可以使用Pub/Sub 將訊息推送到 Cloud Run 服務的端點,然後這些消息將作為 HTTP 請求傳遞到容器。可能的場景包括:
- 當文件上傳到 Cloud Storage 時,接收到事件後進行數據轉換
- 使用 Cloud Run 處理您的 Google Cloud 日誌,將它們導出到 Pub/Sub
- 從 Cloud Run 服務發布和處理您自己的自定義事件
五、按計劃運行服務:您可以使用Cloud Scheduler 按計劃安全地觸發 Cloud Run 服務,可能的場景包括:
- 定期執行備份
- 執行經常性管理任務,例如刪除舊數據、內容與配置
- 生成帳單或其他文件
六、執行非同步任務:您可以使用 Cloud Tasks 安全地將要由 Cloud Run 非同步處理的任務排序。典型場景包括:
- 處理生產突發事件請求
- 透過延遲非面向使用者的工作來平衡流量峰值
- 為第三方API與資料庫等後端服務限制速率
七、來自 Eventrac 的事件:您可以使用來自 60 多個 Google Cloud 來源的事件觸發 Cloud Run。例如:
- 使用 Cloud Storage 事件(透過 Cloud Audit Logs)觸發數據處理管道
- 每次任務完成時,使用 BigQuery 事件(透過 Cloud Audit Logs)在 Cloud Run 中發起下游處理
Cloud Run 與 Cloud Functions 有哪些差別?
Cloud Run 和 Cloud Functions 都在 Google Cloud 的無伺服器基礎架構上運行的完全託管服務,可自動擴展並處理 HTTP 請求或事件。它們的主要差別如下:
- 在程式碼的部署方式上,Cloud Functions 相較於 Cloud Run 具有更多限制,您需要先將程式碼打包成函數,且 Cloud Functions 僅支持一組特定的程式語言。
- Cloud Run 支持使用應用程式中的任何工具或系統庫,而 Cloud Functions 不允許您使用自定義的可執行文件。
- Cloud Run 提供更長的請求超時時間,最長可達60分鐘,而使用 Cloud Functions,請求超時時間最長可設置為9分鐘。
- Cloud Functions 每次只向每個函數實例發送一個請求,而預設的情況下,Cloud Run 能在每個容器實例上發送多個併發請求。如果您希望獲得更大的容量,這將有助於改善延遲並降低成本。
宏庭科技為 Google Cloud 菁英合作夥伴,協助多間知名企業運用無伺服器服務與容器化微服務,讓企業加快部署作業並提高彈性、強化創新速度。歡迎填寫連絡表單,讓宏庭科技專屬顧問為您提升團隊靈活度、加速營運部署!
本文章翻譯並改寫自 Google Cloud 官方部落格。
延伸閱讀
GCP 企業入門篇:Google Cloud 費用、服務、代理商全攻略!