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