使用 Eventarc 建立事件導向架構

您可以運用 Eventarc 和 Firestore 建構事件導向架構。Eventarc 的 Firestore 觸發程序會根據資料庫中特定文件的變更產生事件。觸發條件可將事件傳送至支援的目的地

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類型。

後續步驟