2

私の理解では、eventhub は 1 秒あたり数百万のメッセージを処理/取り込むことができます。取り込みを調整するために、スループットを使用できます。

より多くのスループット = より多くの取り込みパワー。

ただし、受信/消費側では、最大 32 個のレシーバーを作成できます (32 個のパーティションを作成でき、1 つのパーティションが 1 つのレシーバーによって消費されるため)。

上記に基づいて、1 つのメッセージの処理に 100 ミリ秒かかる場合、1 つのコンシューマーは 1 秒あたり 10 メッセージを処理でき、32 のコンシューマーは 32*10= 1 秒あたり 320 メッセージを処理できます。

受信者がより多くのメッセージを消費するようにするにはどうすればよいですか (例: 1 秒あたり 5 ~ 10k)。

1) ProcessEventsAsync 内でメッセージを非同期的に処理する必要があります。しかし、この場合、注文を維持することはできません。

2) または、さらにパーティションを作成できるように Microsoft に依頼する必要があります。

ご意見をお聞かせください

4

1 に答える 1

6

TLDR: 許可されるパーティションの数を増やすように Microsoft に依頼する必要があります。現在、既に存在する Event Hub の数を増やす方法がないことに注意してください。

消費並列処理の単位がパーティションであることは正しいです。コンシューマーが順番に 1 秒あたり 10 回しか実行できない場合、または順番に 1 秒あたり 100 回しか実行できない場合は、何百万ものイベントを消費するためにより多くのパーティションが必要になります。100 ミリ秒/イベントは確かに遅いように思えますが、そこで最適化を探す必要があると思います (つまり、待機する必要のない作業をファームアウトする、コミットの頻度を減らすなど)。

注意すべき点: 32 個のパーティションでは、32 Mb/秒のイングレスと 64 Mb/秒のイーグレスしか得られません。送信スループットは使用するすべてのコンシューマー グループで共有されるため、これらの要因はどちらも重要です。そのため、データを読み取る 4 つのコンシューマー グループ (それぞれ 16Mb/s) がある場合、入力用に 2 倍のパーティション (または少なくともスループット ユニット) が必要になります。 .

マルチテナンシーに関するあなたのコメントについてですが、すべてのデータが同じハブを通過するすべてのテナントを処理する 1 つの「データベース コンシューマー」グループができますか? それが賢明な使用方法のように聞こえる場合、テナントごとに 1 つのコンシューマー グループを使用して、それぞれがストリーム全体を消費することは、あまり賢明ではありません。

于 2015-01-08T01:02:24.217 に答える