2010-12-28 3 views
1

この時点では、問題が発生しています。私はC#のWindowsサービスでクラスタ化された環境をエミュレートする必要があります。C#アプリケーションのクラスタリングアプローチ

私のWindowsサービスは、同じ時間(.NET用水晶を使用して)、デューティ作品のためresposibleあるWebサービスで、毎日を呼び出します。問題は、この環境は保証された可用性を確保するために冗長ですが、自動フェールオーバーサポートがないことです。つまり、あるサイトがダウンしたときに、ユーザーは単に他のサイトに移動します(これはうまくいきませんが、私たちはこれを気にしません)。

どちら的環境は、この構成を有している:Webサーバー - アプリケーションサーバー - DBサーバ、及びDBサーバ1持っているものがある2.

が、私は保証されているだけで1つのWindowsサービスに必要なDBサーバーの上にマージレプリケーション(スケジューラ)が設定された時間に起動しますが、そのうちの1つが利用できない場合、もう1つはWebサービスを呼び出す準備ができている必要があります。

私はあなたがより良い方法でこの問題を解決するために、私を提供することができる任意の手掛かりを理解するだろう。

乾杯。

答えて

1

通常、これは、SQL Serverのクラスタリングを使用して処理されます。それは簡単ではありませんが、それがあなたの最良の選択です。これを使用する場合は、.NET 2.0以降のアプリケーションに変更を加える必要はありません。 (.NETの初期のバージョンでは、手動で接続プールをフラッシュするためにあなたを必要とする。)

はあなたの2番目のオプションは、交通警官として動作する小さなサービスを作成することです。このサービスは、2つのデータベースを監視し、任意の時点でどの接続文字列を使用するかを決定します。アプリケーションは、定期的にこのサービスをpingして、使用する接続を知る必要があります。

1

私は永続キューを使用して、同様のものを見てきました。任意

  • サービスサービス(キューから削除する)アイテムを完了
  • 記載項目を処理する場合

    1. サービスは、キュー内の最初の引き取り手のないアイテムを主張

    キューとすることができますSQL Serverのテーブルによって表されます。代わりに、Enterprise Service BusまたはMSMQのようなメッセージキューを使用することもできます。

    どちらのサービスも同時に実行することができますが、一つだけは、与えられたリクエストを処理します。

  • 関連する問題