0

私が取り組んでいる新しいプロジェクトでは、プライマリ サーバー (マスター) と複数のワークステーション (スレーブ) を備えた集中型コンピューティング環境をセットアップする必要があります。

マスターは、さまざまな間隔と有効期限を持ついくつかのタイプのジョブオーダーを受け取ります。例:

NAME        INTERVAL        EXPIRATION        OPERATIONS
Job A       5 m             9 d               2592
Job B       15 m            30 d              2880
Job C       30 m            90 d              4320
Job D       10 m            50 d              7200
Job E       10 m            20 d              2880
Job F       10 m            10 d              1440

スレーブは、API インターフェイスを介して処理する新しいジョブを要求し、完了すると、SQLite に保存されている関連データをサーバーに送信して、新しいジョブを要求します。

スレーブの部分には何も難しいことはありませんが、マスターサーバーで小さな問題に直面しています:ジョブをスレーブに提供するための最良のオプションは何ですか? 私は次のオプションを考えました:

  1. ジョブが実行される時間を事前に計算してデータベースに追加します。
  2. ある種のロジックを使用して各ジョブを動的に処理しますか (MOD オペレーターはここで可能な解決策ですか)?
  3. ランダムにジョブを提供します。

この最後のオプションは実際にはオプションではないと言うのは良いことかもしれません。なぜなら、私は操作の数 (有効期限/間隔) で請求しているので、クライアントは他の人にお金を払ってもあまり満足しないと思うからです。 .

どうすればいいのか、皆さんの考えをお聞きしたいです。

4

1 に答える 1

1

スレーブがジョブを処理する時間があるときにジョブを要求できるようにすることで、スループットが向上します。

マスターがジョブを分散する場合、一部のスレーブは何もせずに待機し、他のスレーブは過負荷になる可能性があります。

また、スレーブが一定時間内に応答を返さない場合に、ジョブを再び利用できるようにする機能を追加する必要があります。

于 2009-09-29T20:51:59.260 に答える