次の方法で共有


Orleans Stream プロバイダー

ストリームは、さまざまな形やフォームで提供されることがあります。 ストリームによっては、ダイレクト TCP リンク経由でイベントを配信するストリームもあれば、永続的なキューを介してイベントを配信するストリームもあります。 ストリームの種類によって、異なるバッチ処理戦略、キャッシュ アルゴリズム、またはバックプレッシャ プロシージャが使用される場合があります。 ストリーム プロバイダーは、 Orleans Streaming Runtime の拡張ポイントであり、任意の種類のストリームを実装できるため、ストリーミング アプリケーションに対する制約を回避して、それらの動作の選択肢のサブセットのみに限定できます。 この拡張ポイントは、Orleans ストレージ プロバイダーと精神的に似ています。

Azure Event Hub ストリーム プロバイダー

Azure Event Hubs は、1 秒あたり何百万ものイベントを受信して処理できるフル マネージドのリアルタイム データ インジェスト サービスです。 これは、複数のソースからの高スループットで待機時間の短いデータ インジェストとその後の複数のコンシューマーによるそのデータの処理を処理するように設計されています。

Event Hubs は、イベント パイプラインの "フロント ドア" として機能する、大規模なイベント処理アーキテクチャの基礎としてよく使用されます。 これを使用して、ソーシャル メディア フィード、IoT デバイス、ログ ファイルなど、さまざまなソースからデータを取り込むことができます。 Event Hubs の主な利点の 1 つは、最大のイベント処理ワークロードのニーズを満たすために水平方向にスケールアウトできることです。 また、高可用性とフォールト トレラント性も備え、高可用性を確保するために複数の Azure リージョンに複数のデータ レプリカが分散されています。

Microsoft.Orleans.Streaming.EventHubs NuGet パッケージには、イベント Hub Stream プロバイダーが含まれます。

Azure キュー (AQ) ストリーム プロバイダー

Azure Queue (AQ) ストリーム プロバイダーは、Azure キュー経由でイベントを配信します。 プロデューサー側では、AQ ストリーム プロバイダーはイベントを Azure Queue に直接エンキューします。 コンシューマー側では、AQ ストリーム プロバイダーは、一連の Azure キューからイベントをプルし、それらを使用するアプリケーション コードに配信する一連のプル エージェントを管理します。 プル エージェントは、パーティション分割された高可用性のエラスティック分散コンポーネントである分散 "マイクロサービス" と考えることができます。 プルエージェントは、アプリケーションのグレインをホストする同じサイロ内で動作します。 そのため、キューからプルするために個別の Azure worker ロールを実行する必要はありません。 Orleans ストリーミング ランタイムは、プル エージェントの存在や管理、バックプレッシャー、キューのバランス調整、失敗したエージェントから別のエージェントへのキューの引き渡しを完全に管理します。 これは、ストリームを使用するアプリケーション コードに対してすべて透過的です。

Microsoft.Orleans.Streaming.AzureStorage NuGet パッケージには、Azure Queue storage stream プロバイダーが含まれます。

キュー アダプター

永続キューを介してイベントを配信するさまざまなストリーム プロバイダーは、同様の動作を示し、同様の実装の対象となります。 そのため、まったく新しいストリーム プロバイダーをゼロから記述することなく、さまざまな種類のキューをプラグインできる、汎用的な拡張可能な PersistentStreamProvider が用意されています。 PersistentStreamProvider では、特定のキュー実装の詳細を抽象化し、イベントをエンキューおよびデキューする手段を提供する、IQueueAdapter コンポーネントが使用されます。 PersistentStreamProvider内のロジックは、他のすべてを処理します。 上記の Azure キュー プロバイダーも、この方法で実装されます。これは、PersistentStreamProviderを使用するAzureQueueAdapterのインスタンスです。

シンプル メッセージ ストリーム プロバイダー

SMS プロバイダーとも呼ばれる単純なメッセージ ストリーム プロバイダーは、通常の Orleans グレイン メッセージングを使用して TCP 経由でイベントを配信します。 SMS イベントは信頼性の低い TCP リンク経由で配信されるため、 SMS は信頼性 の高いイベント配信を保証せず、SMS ストリームの失敗したメッセージを自動的に再送信しません。 既定では、プロデューサーの OnNextAsync の呼び出しは、ストリーム コンシューマーの処理状態を表す Task を返します。 これにより、コンシューマーがイベントを正常に受信して処理したかどうかをプロデューサーに通知します。 このタスクが失敗した場合、プロデューサーは同じイベントを再度送信することを決定し、アプリケーション レベルで信頼性を実現できます。 ストリーム メッセージ配信はベスト エフォートですが、SMS ストリーム自体は信頼性が高いです。 つまり、Pub-Sub で実行されるサブスクライバーとプロデューサー間のバインドは完全に信頼できます。

こちらもご覧ください