共用方式為


Orleans 資料流提供者

資料流可以有不同的圖形和形式。 有些資料流可能會透過直接 TCP 連結傳遞事件,而其他資料流則透過長期佇列傳遞事件。 不同的資料流類型可能會使用不同的批次處理策略、不同的快取演算法,或不同的背壓程序。 為了避免將串流應用程式限制為這些行為選擇的子集,串流提供者是 Orleans 串流執行階段的擴充點,可讓使用者實作任何類型的資料流。 此擴充點類似於 Orleans 儲存體提供者。

Azure 事件中樞串流提供者

Azure 事件中樞是完全受控的即時資料擷取服務,每秒可接收和處理數百萬個事件。 其設計目的是要處理來自多個來源的高輸送量、低延遲擷取的資料,以及由多個取用者後續處理該資料。

事件中樞通常用來作為較大事件處理架構的基礎,其中可用作事件管線的「前門」。 其可用來內嵌各種來源的資料,包括社交媒體摘要、IoT 裝置和記錄檔。 事件中樞的主要優點之一是能夠水平相應放大,以滿足甚至是最大事件處理工作負載的需求。 其也具有高可用性和容錯功能,且有多個資料複本分散到多個 Azure 區域,以確保高可用性。

Microsoft.Orleans.Streaming.EventHubs NuGet 套件包含事件中樞資料流提供者。

Azure 佇列 (AQ) 資料流提供者

Azure 佇列 (AQ) 資料流提供者會透過 Azure 佇列傳遞事件。 在產生者端,AQ 資料流提供者會將事件直接加入 Azure 佇列。 在取用者端,AQ 資料流提供者會管理一組提取代理程式,以從一組 Azure 佇列提取事件,並將其傳遞給取用這些事件的應用程式程式碼。 您可以將提取代理程式視為分散式「微服務」,也就是分割、高可用性的彈性分散式元件。 提取代理程式會在裝載應用程式粒紋的相同定址接收器內執行。 因此,不需要執行個別的 Azure 背景工作角色以從佇列中提取。 提取代理程式、其管理、背壓、平衡兩者之間的佇列,以及將佇列從失敗的代理程式完全交給另一個代理程式,由 Orleans 串流執行階段完全受控理,且對使用資料流的應用程式程式碼而言是透明的。

Microsoft.Orleans.Streaming.AzureStorage NuGet 套件包含 Azure 佇列儲存體資料流提供者。

佇列配接器

透過長期佇列傳遞事件的不同資料流提供者會呈現類似的行為,並受限於類似的實作。 因此,我們提供泛型可延伸 PersistentStreamProvider,可讓開發人員插入不同類型的佇列,而不需要從頭開始撰寫全新的資料流提供者。 PersistentStreamProvider 會使用 IQueueAdapter 元件抽象化特定佇列實作詳細資料,並提供排入佇列和清除佇列事件的方法。 剩餘所有作業都是由 PersistentStreamProvider 內的邏輯所處理。 上述的 Azure 佇列提供者也會以這種方式實作:其為使用 AzureQueueAdapterPersistentStreamProvider 執行個體。

簡易訊息資料流提供者

簡易訊息資料流提供者也稱為 SMS 提供者,利用一般 Orleans 粒紋傳訊並透過 TCP 來傳遞事件。 因為 SMS 中的事件會透過不可靠的 TCP 連結來傳遞,所以 SMS 並「不」保證可靠的事件傳遞,且不會自動重新傳送 SMS 資料流的失敗訊息。 根據預設,生產者對 OnNextAsync 的呼叫會傳回 Task,表示資料流取用者的處理狀態,這會告訴生產者取用者是否已成功接收和處理事件。 如果這項工作失敗,產生者可以決定再次傳送相同的事件,從而達到應用層級的可靠性。 儘管資料流訊息傳遞是理想方式,SMS 資料流本身是可靠的。 也就是說,發行-訂閱所執行的訂閱者對產生者繫結完全可靠。

另請參閱

Orleans 資料流實作詳細資料