ファーム内で定期的なタスクを共有するための最良の戦略
-
19-09-2019 - |
質問
ここで問題があります。たとえば、毎月の残高を生成するなど、ビジネス上の定期的なタスクがあるとします。このタスクはファーム内で実行される可能性があるため、定期タスクを実行しているコンピューターが失敗した場合は、そのタスクを別のコンピューターに渡す必要があります。
では、定期的なタスクを継続してファーム内で安全にするにはどうすればよいでしょうか?永続的な共有キューで考えましたが、かなり行き詰まっています。
何か案は?
前もって感謝します。
解決
あなたの質問に不足している多くの要因があります。どのようにタスクにアクセスしていますか?それは、ウェブサービスですか?リモートプロシージャコール?それは自分自身で実行し、共有フォルダに結果を格納していますか?
それだけでウェブサービスだ場合、そのソリューションは、1が使用できない場合、次のに進んで、ちょうど順序でそれらを照会することができ...おそらくRPCはちょうど同じ手順で処理することができます。もちろん、これはとてもうまくスケールしないと、それは少し広告ホックですが、あなたが何かのための時間を持っていない場合はそれだけでトリックを行う可能性があります。
あなたは時間とお金を持っている場合は、それはあなたが本当にそれを必要とする場合にのみ、それだけの価値はあります。とても大胆にクールであるという理由だけでそれをしない時間とお金の両方に大きな投資です。
他のヒント
1 から >1 への移行は常に大きな一歩です。
オプション1
(特に) 次のものが必要です。
- スーパーバイザマシン
- ハートビートプロトコル/障害検出
- ジョブスケジューラの選択プロトコル
- ジョブスケジューラ
- ジョブレポート
等
オプション 2
複数のマシンにタスクを実行させ、そのうちの 1 つから成功した出力を選択するだけです (または、必要があると思われる場合は多数決を使用します)。
あなたの技術スタックは何ですが、クォーツする(または Quartz.net には、.NETスタックを使用している場合)。クォーツは、堅牢なフェイルオーバー/ HA機能を持つ企業のジョブスケジューラです。