2016-12-19 3 views
0

私はC#Web Appを持っています。私はデータが同じである複数のデータベースを持っているので、ラウンドロビンメソッドを使ってデータベース呼び出しを分散することができます。C#REST Web APP - データベースへのラウンドロビン呼び出し

私は各接続文字列を読み込み、各DBを繰り返し処理し、最初に通った呼び出しのデータを返します。

私が使用した最後のデータベースを記録したいと思いますので、私が入る次の呼び出しのためにリスト内の次のデータベースを試すことができます。

データベースは、このためにやり過ぎと思われるので、私は使用することができます静的リストこれを追跡し、リストの読み取りと更新をロックする?

答えて

0

ラウンドロビン方式では、確実にロック付きのリストを使用できますが、以下の一般的なコメントを参考にしてください。

ここでは、ネットワーク負荷分散装置を実装しようとしています。あなたはいくつかの問題に直面します。 IISは、最初のリクエストが完了する前に複数のリクエストを受信すると、ウェブサイトへのコールの複数のスレッドをうまく起動します。第2に、あなたのWebサイトがWebGarden(同じコンピュータ上のIISの複数インスタンス)またはWebFarm(複数のOSインスタンス)として稼働している場合、またはAzureまたは他のクラウドプラットフォーム上にある場合、Web呼び出しの複数の不在は、同じマシン(またはVM)上にあるため、適切にスケーラブルなWebサイト上に真のラウンドロビンのデータベースヒットシリーズを生成することはほとんど不可能であることを明確にする必要があります。

スケーラビリティのために、すべてのWebスレッド間に新しい同期ポイントを作成するかどうかはわかりません。ラウンドロビンもリソースを最大限に活用するものではありません。できるだけ少ないリソースでWebサイトをできるだけ早く実行したい場合(一般的にNLBシステムが導入されている理由)、プールベースのアプローチを使用してオープンデータベースをリースしますオープンなデータベース接続の回りを反復するのではなく、接続する必要があります。呼び出しコードはプールに戻されていない次の接続を受け取ります。

関連する問題