Eventarc 可讓您建構以事件為準的架構,無須實作、自訂或維護底層基礎架構。
Eventarc 提供兩種版本:Eventarc Advanced 和 Eventarc Standard。這兩個版本都提供可擴充、無伺服器且全代管的事件解決方案,可讓您從來源異步路由事件至目標。詳情請參閱「選擇 Eventarc Advanced 或 Eventarc Standard」。
Eventarc Standard 提供標準化解決方案,可管理在已分離的微服務之間,稱為「事件」的狀態變更流程。觸發之後,Eventarc Standard 會將這些事件轉送至不同的目的地 (請參閱本文中的「事件目的地」),同時為您管理傳送、安全性、授權、觀測和錯誤處理工作。
您可以透過 Google Cloud 主控台、gcloud CLI 指令列或 Eventarc API 管理 Eventarc。
1 Google 供應商的事件會直接從來源 (例如 Cloud Storage) 傳送,或透過 Cloud 稽核記錄項目傳送,並使用 Pub/Sub 做為傳輸層。來自 Pub/Sub 來源的事件可以使用現有的 Pub/Sub 主題,或是由 Eventarc 自動建立主題並管理。
2 Google Kubernetes Engine (GKE) 目的地的事件 (包括在 GKE 叢集中執行的 Knative 服務) 會使用 Eventarc 的事件轉送器,從 Pub/Sub 提取新事件並轉送至目的地。這個元件是 Pub/Sub 傳輸層與目標服務之間的仲介。這項服務適用於現有服務,也支援信號傳遞服務 (包括不在全代管叢集外公開的服務),同時簡化設定和維護作業。請注意,事件轉送器的生命週期由 Eventarc 管理,如果您不小心刪除事件轉送器,Eventarc 會還原這個元件。
3 工作流程執行作業的事件會經過轉換,並以執行階段引數的形式傳遞至工作流程。工作流程可以按照您定義的順序,結合並自動調度管理 Google Cloud 和以 HTTP 為基礎的 API 服務。
4 Cloud Run 函式中的所有事件驅動函式都會使用 Eventarc 觸發條件來傳送事件。您可以使用 Cloud Run 函式介面部署 Cloud Run 函式,並設定 Eventarc 觸發條件。
主要用途
Eventarc 支援許多目的地應用程式的用途。以下列舉幾個例子:
設定及監控 |
|
Harmonize |
|
分析 |
|
事件
事件是表示事件及其背景的資料記錄。事件是獨立的通訊單位,與其他事件無關。舉例來說,事件可能表示資料庫中的資料發生變更、檔案新增至儲存系統,或是排程工作。
事件提供者
事件會從事件供應者 (來源) 轉送至感興趣的事件消費者。系統會根據事件內含的資訊進行路由,但事件不會識別特定路由目的地。Eventarc 支援 超過 130 個 Google 供應商的事件。這些供應商會直接從來源或透過 Cloud 稽核記錄項目,傳送事件 (例如 Cloud Storage 值區中物件的更新,或發布至 Pub/Sub 主題的訊息)。
事件目的地
事件會透過 Pub/Sub 推播訂閱,路由至特定目的地 (目標),也就是事件接收器 (或消費者)。
Cloud Run
瞭解如何建構可部署至 Cloud Run 的事件接收器服務。
如要決定將事件轉送至 Cloud Run 服務的最佳方式,請參閱「事件路由」。
Cloud Run 函式
Cloud Run 函式中的所有事件導向函式都會使用 Eventarc 觸發事件,以便傳送事件。Eventarc 觸發條件可讓函式由 Eventarc 支援的任何事件類型觸發。使用 Cloud Run 函式介面部署 Cloud Run 函式時,您可以設定 Eventarc 觸發條件。
GKE
Eventarc 支援建立指定 Google Kubernetes Engine (GKE) 服務的觸發事件。包括在 GKE 叢集中執行的私人和公開服務的公開端點。
如要讓 Eventarc 指定並管理任何指定叢集中的服務,您必須將所有必要權限授予 Eventarc 服務帳戶。
您必須在目的地服務執行的 GKE 叢集中啟用 Workload Identity Federation for GKE。您必須使用 Workload Identity Federation for GKE,才能正確設定事件轉送器,而且由於這項功能的安全性和可管理性較高,因此建議您使用這項功能,從在 GKE 中執行的應用程式存取 Google Cloud 服務。詳情請參閱「啟用 Workload Identity」。
虛擬私有雲網路中的內部 HTTP 端點
您可以將事件路由設為虛擬私有雲 (VPC) 網路中的內部 HTTP 端點。如要設定觸發條件,您也必須提供網路附件 ID。詳情請參閱將事件路由至虛擬私人雲端網路中的內部 HTTP 端點。
工作流程
您可以觸發工作流程的執行作業。Workflows 需要 IAM 服務帳戶電子郵件地址,Eventarc 觸發條件會使用這項資訊叫用工作流程執行作業。建議您使用服務帳戶,並授予存取必要資源所需的最低權限。詳情請參閱「建立及管理服務帳戶」。
事件格式和程式庫
無論提供者為何,Eventarc 都會使用二進位內容模式的 HTTP 要求,以 CloudEvents 格式將事件傳送至目標目的地。CloudEvents 是用來以常用方式描述事件中繼資料的規格。
視事件供應商而定,您可以將事件酬載資料的編碼指定為 application/json
或 application/protobuf
。通訊協定緩衝區 (或 Protobuf) 是一種語言中立、平台中立的可擴充機制,可用來序列化結構化資料。注意事項:
- 自訂來源或第三方供應商,或是來自 Pub/Sub 的直接事件,則不支援這個格式設定。
- 以 JSON 格式編寫的事件酬載比以 Protobuf 格式編寫的酬載大,這可能會影響可靠性,具體取決於事件目的地和事件大小限制。詳情請參閱「已知問題」。
指定目的地 (例如 Cloud Run 函式、Cloud Run 和 GKE) 會以 HTTP 格式使用事件。針對工作流程目的地,工作流程服務會將事件轉換為 JSON 物件,並將事件做為執行階段引數傳遞至工作流程執行作業。
使用標準方式說明事件中繼資料,可確保一致性、可用性和可移植性。事件使用者可以直接讀取這些事件,也可以使用各種語言 (包括 C++、C#、Go、Java、Node.js、PHP、Python 和 Ruby) 的 Cloud 用戶端程式庫來讀取及剖析事件。另外還有一組特定語言的 CloudEvents SDK。
您可以在 Google CloudEvents GitHub 存放區中找到所有事件的 HTTP 主體結構。
回溯相容性
Eventarc 會將下列屬性和欄位的新增視為向下相容:
- 選用篩選屬性或僅輸出屬性
- 事件酬載的選用欄位
Eventarc 觸發條件
無論目標目的地是否回應,事件都會發生。您可以使用「觸發條件」建立事件的回應。觸發條件是一個宣告,表明您對特定事件或一組事件感興趣。建立觸發條件時,您會為觸發條件指定篩選器,以便擷取並對這些特定事件採取行動,包括從事件來源路由至目標目的地。詳情請參閱「觸發事件資源的 REST 表示法」和「事件供應者和目的地」。
請注意,為 Eventarc 建立的 Pub/Sub 訂閱會持續保留,不受活動影響,也不會過期。如要變更訂閱屬性,請參閱「訂閱屬性」。
Eventarc 支援以下事件類型的觸發事件:
Cloud 稽核記錄 (CAL) 事件 | |
---|---|
說明 | Cloud 稽核記錄會為每個 Cloud 專案、資料夾和機構提供管理員活動和資料存取稽核記錄。 Google Cloud 服務會將項目寫入這些記錄。您可以使用稽核記錄中的 serviceName 和 methodName 值,為 Eventarc 觸發條件建立篩選器。如需確切值,請參閱Google Cloud 含有稽核記錄的服務。詳情請參閱「決定 Cloud 稽核記錄的事件篩選器」。 |
事件篩選器類型 | 當系統建立符合觸發條件的稽核記錄時,含有 type=google.cloud.audit.log.v1.written 的 Eventarc 觸發條件會將要求傳送至您的服務或工作流程。 |
直接事件 | |
說明 | Eventarc 可由各種直接事件觸發,例如 Cloud Storage 值區更新、Firebase 遠端設定範本更新,或是 Google Cloud 服務上的資源變更。 發布至 Pub/Sub 主題的訊息也可以觸發 Eventarc。Pub/Sub 是遍及全球的訊息匯流排,可自動按照您的需求進行擴充。由於 Eventarc 可透過 Pub/Sub 主題上的訊息叫用,因此您可以將 Eventarc 與任何支援 Pub/Sub 做為目的地的其他服務整合。 |
事件篩選器類型 | 當發生符合觸發條件篩選條件的事件時,Eventarc 會透過特定事件篩選器類型的觸發條件,向您的服務或工作流程傳送要求,例如 type=google.cloud.storage.object.v1.finalized (在 Cloud Storage 儲存桶中建立物件) 或 type=google.cloud.pubsub.topic.v1.messagePublished (將訊息發布至指定的 Pub/Sub 主題)。 |
觸發地點
Google Cloud 您可以將 Cloud Storage 等服務設為地區或多地區。部分服務 (例如 Cloud Build) 可在全球設定。
Eventarc 可讓您建立區域觸發條件,對於某些事件,您也可以建立全域觸發條件,並接收來自所有區域的事件。詳情請參閱「瞭解 Eventarc 位置」。
您應指定 Eventarc 觸發事件的位置,以便與產生事件的 Google Cloud服務位置相符,並避免全域觸發事件造成的任何效能和資料保留地點問題。
您可以使用每個指令的 --location
標記指定觸發位置。針對 Cloud Run 目的地,如果未指定 --destination-run-region
標記,系統會假設服務與觸發事件位於相同區域。詳情請參閱 Google Cloud CLI 參考資料。
可靠性和交付
預期的送達時間如下:
- 使用 Cloud 稽核記錄的事件會在 1 分鐘內傳送。(請注意,雖然 Cloud 稽核記錄觸發條件會立即建立,但觸發條件傳播及篩選事件可能需要最多兩分鐘的時間)。
- 使用 Pub/Sub 的事件會在幾秒內傳送。
我們無法保證資料會依序送達,且先進先出。請注意,嚴格排序會破壞 Eventarc 的可用性和可擴充性功能,這些功能與其傳輸層 Cloud Pub/Sub 的功能相符。詳情請參閱「排序訊息」。
延遲時間和處理量是盡力而為。這取決於多項因素,包括 Eventarc 觸發事件是區域、多區域還是全球觸發事件;特定服務的設定;以及 Google Cloud 區域中資源的網路負載。
請注意,Eventarc 一般適用用量配額和限制。另外,Workflows 也有專屬的用量配額和限制。
事件重試政策
Eventarc 的重試特性與其傳輸層 (Cloud Pub/Sub) 相符。詳情請參閱「重試要求」和「推送回退」。
Eventarc 設定的預設訊息保留時間為 24 小時,並採用指數輪詢延遲機制。
您可以透過與 Eventarc 觸發事件相關聯的 Pub/Sub 訂閱項目,更新重試政策:
- 開啟「觸發條件詳細資料」頁面。
- 按一下主題。
- 按一下「Subscriptions」(訂閱項目) 分頁標籤。
由 Eventarc 自動建立的任何訂閱項目都會採用以下格式:projects/PROJECT_ID/subscriptions/eventarc-REGION-TRIGGER_ID-sub-SUBSCRIPTION_ID
。如要進一步瞭解訂閱限制,請參閱「Pub/Sub 資源限制」。
如果 Pub/Sub 嘗試傳送訊息,但目的地無法確認,Pub/Sub 會以 10 秒的最低指數輪詢時間再次傳送訊息。如果目的地持續未確認訊息,系統會在每次重試時增加更多延遲時間 (最多 600 秒),並將訊息重新傳送至目的地。
請注意,Workflows 會在工作流程執行開始後立即確認事件。
無效信件主題
如果目的地未收到訊息,您可以將未送達的訊息轉寄至無效信件主題 (也稱為無效信件佇列)。dead-letter 主題可儲存目的地無法確認的訊息。您必須在建立或更新 Pub/Sub 訂閱時設定死信主題,而非在建立 Pub/Sub 主題或 Eventarc 建立 Pub/Sub 主題時。詳情請參閱「處理訊息失敗」。
不需重試的錯誤
如果應用程式使用 Pub/Sub 做為事件來源,但未傳送事件,系統會自動重試事件,但若發生錯誤,則無法保證會重試。如果工作流程未執行,系統就不會重試任何來源的工作流程目的地事件。如果工作流程執行作業開始後稍後失敗,系統不會重試執行作業。如要解決這類服務問題,您應在工作流程中處理錯誤和重試。
重複事件
事件處理常式可能會收到重複的事件。根據 CloudEvents 規格,source
和 id
屬性的組合會視為不重複,因此任何具有相同組合的事件都會視為重複。您應導入冪等事件處理常式,做為一般最佳做法。
觀測能力
Google Cloud 觀測功能提供監控、記錄和診斷工具。這些工具可協助您監控及分析 Eventarc 活動和成長情形,並瞭解應用程式的運作情形、健康狀態和效能。詳情請參閱「Eventarc 中的觀測功能」。
您可以透過 Cloud 稽核記錄查看 Eventarc、Cloud Run、Cloud Run 函式、GKE、Pub/Sub 和工作流程的詳細記錄。
災難復原
您可以利用可用區和區域,在發生停機時確保可靠性。如要進一步瞭解如何確保使用 Eventarc 時,備份和復原時間符合 RTO (復原時間目標) 和 RPO (復原點目標) 目標,請參閱「為雲端基礎架構中斷情形建構災難復原架構」。
法規遵循標準
Eventarc 符合下列認證和標準。