1

利用可能なサービスのリストを維持し、要求の性質またはタイプに基づいてエンドポイントを提供できるサービス (web/windows、.net) を実装しようとしています。その後、リクエスタは実際の作業リクエストを提供されたエンドポイントに渡すことができます。実際の作業リクエストには、非常に大きなチャンク (10MB から 1 GB を超える可能性もあります) のデータが含まれる場合があります。

WCF ルーティング サービスは完璧に適合するように思えますが、実際の作業要求がそれを通過する必要があり、ルーティング サービスでボトルネックが発生するため、そうではありません (全体のポイントは、システムをスケールアウトできるようにすることです)。 )。メッセージが小さければ、WCF ルーティングは簡単です。

法案に適合するものはありますか?できれば .NET/Windows ベースですか?

4

1 に答える 1

0

リクエストが仕事をブロックしているからですか?

OneWay OperationContractリクエストプールをブロックしないように非同期サービスを作成するために使用できます。

[ServiceContract]
interface IMyContract
{
   [OperationContract(IsOneWay = true)]
   void DoWork()
}

アップデート

今、あなたの質問をよりよく理解していると思います。トラフィックの負荷が大きいためにリクエストのボトルネックを回避するために、さまざまなサーバーに負荷を分散することを検討しています(コンテンツに基づいて分散することが望ましい)。

MVC Routingそれは確かにこれにとって理想的だと思います。活用できる機能の1つは、フォールオーバー機能です。実際には複数のバックアップエンドポイントを定義でき、1つに障害が発生した場合は、自動的に次のエンドポイントに移動します。これがどのように機能するかについての良い紹介がここにあります

同じ原則を使用したWCFとの負荷分散について説明している優れた記事もここにあります。ラウンドロビンフィルターの実装に2つのソリューションを提供し、サービスリクエストの負荷分散を可能にします(最初に、負荷分散をサポートするかどうかについての彼の一般的な答えは、実装上の理由からノーと言っていますが)。

すべてのリクエストが1つのサーバーを介してルーティングされ、それでもボトルネックになることが心配な場合は、Webロードバランサーを検討してください。同じシナリオです。中間転送パケットに座っていることは多くの作業を必要とせず、大量のトラフィックを処理するのに問題はありません。これはIMOの問題ではないと思います。

于 2011-09-03T15:56:23.717 に答える