ここに問題があります。たとえば、毎月残高を生成するなど、ビジネスの定期的なタスクがあるとします。そのタスクはファームで実行される可能性があるため、定期的なタスクを実行しているコンピューターが失敗した場合は、別のコンピューターに渡す必要があります。
では、どうすれば定期的なタスクを継続し、農場で安全にすることができますか?私は永続的で共有されたキューで考えてきましたが、私はかなり立ち往生しています。
何か案は?
前もって感謝します。
ここに問題があります。たとえば、毎月残高を生成するなど、ビジネスの定期的なタスクがあるとします。そのタスクはファームで実行される可能性があるため、定期的なタスクを実行しているコンピューターが失敗した場合は、別のコンピューターに渡す必要があります。
では、どうすれば定期的なタスクを継続し、農場で安全にすることができますか?私は永続的で共有されたキューで考えてきましたが、私はかなり立ち往生しています。
何か案は?
前もって感謝します。
1から>1に移行することは、常に大きな一歩です。
あなたは(とりわけ)必要になるでしょう:
等
複数のマシンにタスクを実行させ、そのうちの1つから成功した出力を選択するだけです(または、必要と思われる場合は多数決を使用します)。
あなたの質問には多くの要素が欠けています。どのようにタスクにアクセスしていますか?Webサービスですか?リモートプロシージャコール?単独で実行し、結果を共有フォルダーに保存しますか?
Webサービスだけの場合、解決策はそれらを順番にクエリすることです。1つが利用できない場合は、次のサービスに進みます...おそらくrpcは同じ手順で処理できます。もちろん、これはあまり拡張性がなく、少しアドホックですが、他に何もする時間がない場合は、うまくいくかもしれません。
実際に拡張するために必要な時間と費用がある場合は、求めている種類のフォールトトレランスの基礎となる再構成を制御することを検討する必要があります。もちろん、これはコントローラー(@jldupontが呼び出す監視マシン)と、すべてをまとめるための多くのメカニズムと努力を意味します。
本当に必要な場合にのみ価値があります。時間とお金の両方に大きな投資をしているので、かっこいいからといって大胆にやらないでください。
テクノロジースタックが何であるかはわかりませんが、Quartz(または.NETスタックを使用している場合はQuartz.net )を確認してください。Quartzは、堅牢なフェイルオーバー/HA機能を備えたエンタープライズジョブスケジューラです。