0

スロットル制限のある複数のWebサービスを使用するWebサイトを作成しています。つまり、Amazonは1秒あたり1リクエスト、もう1つは5000 /日、もう1つはx/分です。

ユーザーが何かをしたとき、上記のサービスに対して1つ以上のリクエストをトリガーし、利用可能な場合は結果を(ブラウザーに)返す必要があります。

サービスを簡単に追加/削除できるように、ソリューションは柔軟である必要があります。

FIFOキューイングシステムについて考えましたが、後のリクエストの中には、実際には前のリクエストよりも先に処理できる場合があります。

デザインパターンを求めていますが、適切なテクノロジの提案、特に.NETは大歓迎です。

ありがとう!

4

2 に答える 2

0

問題がどこにあるのか完全に理解したかどうかはわかりません。から

後のリクエストの中には、実際には前のリクエストよりも前に処理できる場合があります。

現在は満足できないが、まもなく処理される可能性のあるリクエストのバッファリングについて懸念していると思います。

次のようなリクエストを受け取りました

 { Amazon, X }

そして(たとえば)Xスロットリングのために、現在その要求を満足させることはできません。

私の最初の質問は、リクエストが独立していることです。つまり、Amazonリクエストをすぐに処理して、Xリクエストをキューに入れることができますか?もしそうなら、各サーバブの単純なFIFOキューが確実にその仕事をします。おそらく、キューの最大サイズが必要になります(HTTP要求がタイムアウトした場合、何時間も待つことはできません)。

Xリクエストを発行できるようになるまでAmazonリクエストの発行を延期することを念頭に置いている場合は、事態はさらに複雑になります。事実上、会議のスケジュールに問題があると思います。AmazonとXの両方が空いているときにスロットを見つける必要があります。したがって、ある種のキューのリストを持つことができます。各キューは、サービスのその時間単位で要求が満たされるためのものです。

Amazon(3 per sec)
      09:05:31  -  request A, B, C
      09:05:32  -  request D, E, F
      09:05:33  -  request G  -  -  <=== slots available
      ---                           <=== times and slots available

X (2 per min)
      09:05     -  request M, N
      09:06     -  request O        <=== slot available

ここで、{Amazon、X}には09:06に利用可能なスロットがあります

Amazon(3 per sec)
      09:05:31  -  request A, B, C
      09:05:32  -  request D, E, F
      09:05:33  -  request G  -  -  <=== slots available
      ---                           <=== times and slots available
      09:06:01  -  request P

 X (2 per min)
      09:05     -  request M, N
      09:06     -  request O, P

個人的には、もっと簡単なことから始めます。いずれかのサービス制限に達したためにリクエストを今すぐ満たすことができない場合は、リクエストを拒否するだけです。

于 2010-06-30T06:08:42.973 に答える
0

ご意見ありがとうございます。基本的に、リクエストを拒否したくはありません。リクエストをキューに入れ、処理が完了したらユーザーに表示します。注文システムのようなものです。

0:00:01Amazonリクエストが届きます->次の利用可能なスロットは2秒以内です(0:00:03)

0:00:02xリクエストが届きます->このサービスで利用可能な次のスロットは5秒です(0:00:07)

0:00:03Amazonリクエストが届きます->次の利用可能なスロットは2秒以内です(0:00:05)

最初に2つのAmazonリクエストを引き出すキューシステムが必要です。私の質問は、サービスごとに個別のキューを作成するかどうか、およびスロットリングに適した一般的なテクノロジー(つまり、Service Broker)を作成するかどうかにあると思います。そうでない場合は、独自のスロットリング/キューイングシステムを作成することになります。上記の例ではFIFOではないため、一般的なデザインパターン(つまり、プロデューサー/コンシューマーなど)を探していました。

これまでのところ、各サービスのFIFOキューは、独自のスロットリングを備えており、前進する方法のように見えます。

于 2010-07-02T01:30:52.690 に答える