1

かなりの量の Web トラフィックを処理するために使用されるサーバーの小さなクラスターがあります。これはかなり標準的な設定です。3 つの Web サーバー、ロード バランサー、データベース サーバー、ウェアハウス サーバー。

難点は、スケジュールに基づいて実行するさまざまなタスクが多数あり、それらのタスクの実行頻度が大幅に異なることです。項目は次のとおりです。

  1. 倉庫の仕事. 明らかに、単一の倉庫サーバーで実行されています。将来的には問題になるかもしれませんが、今のところ倉庫は 1 つしかありません。毎晩実行されます。
  2. スケジュールされたレポート。ASP.NET 環境で起動された Quartz.NET を使用します。ユーザーがスケジュールするたびに実行されます (通常は毎日)。
  3. 統計スナップショット。アプリ プールで起動されたスレッドを介して ASP.NET で実行すると、将来の分析のために全体的なシステム負荷のスナップショットが取得されます。2分ごとに実行されます。
  4. システム イベント。システムには、比較的高い頻度でステータスを変更する必要がある多くの「もの」があり (特定のチェックでは、5 ~ 10 個のアイテムでステータスの更新が必要になります)、その情報を接続された Web クライアントにブロードキャストします。現在、アプリ プール内のスレッドでも実行するように設定されています。約 2 秒ごとに実行されます。

これはすべて、単一サーバーのセットアップで完全に機能し、マルチサーバーのセットアップでも、非プライマリ Web サーバーですべてをオフにすることができます (これが私の現在のソリューションです)。

本当の問題は、システムにもう少し冗長性が組み込まれるようにこれをセットアップする最良の方法は何ですか? 別のボックス (ボックス) の Windows サービスにすべてを抽出しますか? プライマリの障害を検出してセカンダリに引き継ぐことができるように、Web サーバーは相互に通信しますか?

私はどんな考え/提案にも興味があります!

4

0 に答える 0