バックグラウンド
Azure アプリケーションの最適な構造を見つけようとしています。各 worker ロールは、複数の長時間実行ジョブを起動します。時間の経過とともに、ジョブをソース インスタンスで読み取り専用モードに切り替え、ターゲット インスタンスでジョブをスピンアップし、ソース インスタンスで元のジョブをスピン ダウンすることで、あるインスタンスから別のインスタンスにジョブを転送できます。
ジョブが多すぎる場合は、Azure に追加のロール インスタンスをスピンアップし、それらを新しいジョブに使用するように指示できます。逆に、負荷が低下した場合 (夜間など) は、未処理のジョブをいくつかのマシンに統合し、Azure にインスタンスの数を減らすように指示できます。
問題は、(私が理解しているように) Azure には、どのインスタンスを停止するかを決定できるメカニズムが用意されていないことです。したがって、どのサーバーに統合すればよいかわかりません。ジョブの一部は、インスタンスが停止すると終了し、残りのインスタンスでそれらのジョブを再開する間、ユーザーに遅延が発生します。
アイデア 1 : どのインスタンスを停止するかを決定し、その Run() から戻ります。次に、インスタンス数を 1 つ減らすように Azure に指示し、壊れたインスタンスが適切な候補であると判断されることを願っています。誰もこのようなことを試しましたか?
アイデア 2 : まったく同じ内容のさまざまなワーカー ロールをあらかじめ定義します。インスタンス数を 0 から 1 に切り替えたり、元に戻したりすることで、個別に停止および開始できます。このアイデアはうまくいくと思いますが、Azure の自然なやり方に反するように思われ、追加のワーカー ロールを管理するために多くの余分な簿記が必要になるため、好きではありません。
アイデア 3 : 一緒に暮らす。
より良いアイデアはありますか?