什麼是 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 費用、服務、代理商全攻略!