Orleans ストリーム プロバイダー
ストリームは、さまざまな形やフォームで提供されることがあります。 ダイレクト TCP リンク経由でイベントを配信するストリームもあれば、永続的キューを介してイベントを配信するストリームもあります。 ストリームの種類によって、異なるバッチ処理戦略、異なるキャッシュ アルゴリズム、または異なるバックプレッシャ プロシージャが使用される場合があります。 ストリーム プロバイダーは、ストリーミング アプリケーションをこれらの動作の選択肢のサブセットのみに制限しないようにするために、ユーザーが任意の種類のストリームを実装できるようにする Orleans Streaming Runtime への拡張ポイントです。 この拡張ポイントは、Orleans Storage プロバイダーに似ています。
Azure Event Hub ストリーム プロバイダー
Azure Event Hub は、1 秒あたり何百万ものイベントを受信して処理できる、フル マネージドのリアルタイム データ インジェスト サービスです。 これは、複数のソースからのデータの高スループットで低遅延のインジェストと、その後の複数のコンシューマーによるそのデータの処理を扱うように設計されています。
Event Hubs は、イベント パイプラインの "フロント ドア" として機能する、大規模なイベント処理アーキテクチャの基盤としてよく使用されます。 ソーシャル メディア フィード、IoT デバイス、ログ ファイルなど、さまざまなソースからのデータの取り込みに使用できます。 Event Hubs の主な利点の 1 つは、最大のイベント処理ワークロードのニーズを満たすために水平方向にスケールアウトできることです。 また、可用性が高くフォールト トレラントであり、複数の Azure リージョンにデータの複数のレプリカが分散され、高可用性が確保されます。
Microsoft.Orleans.Streaming.EventHubs NuGet パッケージには、Event Hubs ストリーム プロバイダーが含まれています。
Azure キュー (AQ) ストリーム プロバイダー
Azure キュー (AQ) ストリーム プロバイダーは、Azure キュー経由でイベントを配信します。 プロデューサー側では、AQ ストリーム プロバイダーはイベントを Azure キューに直接エンキューします。 コンシューマー側では、AQ ストリーム プロバイダーは、一連の Azure キューからイベントをプルし、それらを使用するアプリケーション コードに配信する一連のプル エージェントを管理します。 プル エージェントは、パーティション分割された高可用性のエラスティックな分散コンポーネントである分散 "マイクロサービス" と考えることができます。 プル エージェントは、アプリケーション グレインをホストするのと同じサイロ内で実行されます。 そのため、キューからプルするために個別の Azure worker ロールを実行する必要はありません。 プル エージェントの存在、その管理、バックプレッシャ、キュー間のバランス、障害が発生したエージェントから別のエージェントへのキューの引き渡しは、Orleans Streaming Runtime によりフル マネージドであり、ストリームを使用するアプリケーション コードに対して透過的です。
Microsoft.Orleans.Streaming.AzureStorage NuGet パッケージには、Azure Queue Storage ストリーム プロバイダーが含まれています。
キュー アダプター
永続キューを経由してイベントを配信するさまざまなストリーム プロバイダーは、同様の動作を示し、同様の実装の対象となります。 そのため、さまざまな種類のキューをプラグインできる汎用の拡張可能な PersistentStreamProvider を提供することで、開発者は、まったく新しいストリーム プロバイダーをゼロから記述することなく、さまざまなタイプのキューをプラグ インすることができます。 PersistentStreamProvider
では、特定のキュー実装の詳細を抽象化し、イベントをエンキューおよびデキューする手段を提供する、IQueueAdapter コンポーネントが使用されます。 残りはすべて、PersistentStreamProvider
内のロジックによって処理されます。 上記の Azure Queue Provider も、この方法で実装されます。これは、AzureQueueAdapter
を使用する PersistentStreamProvider
のインスタンスです。
シンプル メッセージ ストリーム プロバイダー
シンプル メッセージ ストリーム プロバイダー (別名 SMS プロバイダー) は、通常の Orleans のグレイン メッセージングを利用して TCP 経由でイベントを配信します。 SMS のイベントは信頼性の低い TCP リンク経由で配信されるため、SMS では信頼性の高いイベント配信が保証 "されず"、SMS ストリームの失敗したメッセージは自動的に再送信されません。 既定では、プロデューサーの OnNextAsync の呼び出しは、ストリーム コンシューマーの処理状態を表す Task
が返されます。これにより、コンシューマーがイベントを正常に受信して処理したかどうかがプロデューサーに通知されます。 このタスクが失敗した場合、プロデューサーは同じイベントを再び送信することを決定できるため、アプリケーション レベルで信頼性を実現できます。 ストリーム メッセージ配信はベスト エフォートですが、SMS ストリーム自体は信頼性が高いです。 つまり、Pub-Sub で実行されるサブスクライバーとプロデューサー間のバインドは完全に信頼できます。
関連項目
.NET