使用 Eventarc 建立事件導向架構
您可以運用 Eventarc 和 Firestore 建構事件導向架構。Eventarc 的 Firestore 觸發程序會根據資料庫中特定文件的變更產生事件。觸發條件可將事件傳送至支援的目的地:
- Cloud Run 函式 (第 2 代),支援 Cloud 用戶端程式庫和 Firebase SDK
- Cloud Run
- Google Kubernetes Engine
- Workflows
Eventarc 提供標準化解決方案,可管理已分離微服務之間的狀態變更流程 (稱為「事件」)。觸發之後,Eventarc 會將這些事件轉送至不同的目的地,同時為您管理傳送、安全防護、授權、觀測和錯誤處理工作。
限制
請注意,Eventarc 的 Firestore 觸發條件有下列限制:
- 我們不保證排序。快速變更可能會以非預期的順序觸發事件。
系統至少會傳送一次事件。
請確保事件處理常式為冪等,並避免在事件多次傳送時產生非預期結果或副作用。詳情請參閱建構等冪函式。
觸發條件會與單一資料庫建立關聯。您無法建立與多個資料庫相符的觸發程序。
刪除資料庫時,系統不會自動刪除該資料庫的任何觸發程序。觸發條件會停止傳送事件,但會繼續存在,直到您刪除觸發條件為止。如果資料庫重新建立,您也必須刪除並重新建立所有相關聯的觸發程序,才能還原事件傳送功能。
Eventarc 和 Firestore 位置
Eventarc 不支援原生模式 Firestore 事件觸發程序的多個區域,但您仍可為多區域位置的 Firestore 資料庫建立觸發程序。Eventarc 會將 Firestore 多區域位置對應至下列 Eventarc 區域:
Firestore 多區域 | Eventarc 區域 |
---|---|
nam5 |
us-central1 |
eur3 |
europe-west4 |
第 2 代和第 1 代 Cloud Run 函式的差異
Cloud Run functions (第 2 代) 會使用 Eventarc 事件,適用於所有執行階段。先前,Cloud Run functions (第 1 代) 僅適用於部分執行階段,Eventarc 事件與 Cloud Run 函式 (第 1 代) 的差異如下:
Eventarc 的 Firestore 觸發條件支援 Cloud Run 函式以外的其他目的地。您可以將
CloudEvents
路由至多個目的地,包括但不限於 Cloud Run、GKE 和 Workflows。Eventarc 的 Firestore 觸發條件會在資料庫寫入作業開始時擷取觸發條件定義,並使用該定義判斷 Firestore 是否應發出事件。寫入作業不會將執行期間可能發生的觸發條件定義變更納入考量。
Cloud Run 函式 (第 1 代) 會在評估資料庫寫入作業時擷取觸發條件定義,而評估期間的觸發條件變更可能會影響 Firestore 是否發出事件。
Datastore 模式和 Native 模式事件互通性
Eventarc 支援 Datastore 模式和原生模式的事件觸發條件。這些事件觸發程序可與這兩種資料庫類型互通。 原生模式的 Firestore 資料庫可以接收 Datastore 事件,Datastore 模式的 Firestore 資料庫則可以接收原生模式事件。
事件互通性可讓您在不同類型的 Firestore 資料庫之間共用 Eventarc 程式碼。
事件轉換
如果您將原生模式事件觸發條件套用至 Datastore 模式資料庫,Eventarc 會進行下列轉換:
- 實體的命名空間會儲存在事件的
PartitionId
屬性中。 - 內嵌實體會轉換為「原生模式」
map
類型。
後續步驟
- 瞭解事件導向架構。