要するに
1 つのジョブ リクエストを1 つのスレーブだけに分散して実行する方法。他のスレーブがアイドル状態の場合、次のジョブ リクエストはキューに入れられません。
詳細
エントリーとしてJenkinsジョブを利用するサービスがあり、ユーザーは をクリックしてリクエストを送信できますBuild Job
。一度に 1 つのスレーブで実行できるジョブは 1 つだけです。
スループットを向上させるために、このジョブを実行するスレーブを追加します。ただし、次の問題が見つかりました。
マルチ構成ジョブを使用すると、同じジョブがすべてのスレーブで生成されますが、1 つのスレーブだけがジョブ (1 つの要求) を実行するようにしたいので、他のスレーブは他のジョブ (要求) を実行できます。
NodeLable プラグインを使用しますが、1 つのジョブが実行されている場合、他のスレーブがアイドル状態であっても、後続のジョブがキューに入れられます。
エントリ ジョブはダウンストリーム ジョブをトリガーするため、要求を処理するスレーブは変更されないため、以前のすべてのダウンストリーム ジョブが完了する前に、同じスレーブで別のエントリ ジョブがトリガーされる可能性があります。
エントリ ジョブがランダムなスレーブを選択してジョブを実行し、1 人のユーザーの要求を満たす方法はありますか。次に、別のスレーブ (アイドル状態の場合) を選択して別のジョブを実行し、別のユーザーの要求に応えます。すべてのスレーブがビジーの場合、来るリクエストはキューに入れられ、スレーブが再びアイドル状態になるまで待機します。
ありがとう!
私が選んだもの
この問題は、異なるジョブが相互に依存し、状態を共有している場合に発生します。したがって、将来の不満を避けるために、すべての依存ジョブを 1 つにマージします。したがって、共有状態はなくなり、問題はなくなりました。