私の問題の説明は次のとおりです。状態ベースのデータベース無限クローラーが n 個あります。現在、どのように発生しているか:
- クロールには単一のマシンを使用しています。
- 優先キューには 3 つのレベルがあります。高、中、低。
- 開始時に、すべてのデータベース ジョブが下位レベルのキューに入れられます。
- ワーカーはキューからジョブを読み取り、操作を行います。
- ジョブが終了すると、5 分遅れて再スケジュールされます。
私が見つけた解決策
Priority Queue の場合、次を使用できます。
- http://zookeeper.apache.org/doc/r3.2.2/recipes.html#sc_recipes_priorityQueues
私がまだ探している問題の解決策は次のとおりです。
- 将来のスケジュール時間でキュー内のジョブを再スケジュールする方法。Zookeeper でそれを行う方法はありますか?
- すでに開始されているジョブのキャンセル。ユーザーがデータベース認証の詳細を変更したとします。そのデータベースに対して既に実行中のジョブを停止し、新しい詳細で再開したいと考えています。私が考えたのは、ワーカーを開始しているときに、それがznodeの変更であることをサブスクライブし、何かが発生した場合、そのジョブを停止して再スケジュールすることです。
- 無限キュー 私が考えたのは、終了後、キューから削除され、将来のスケジュール時間で再読み込みされるということです。(その実装はポイント1に依存します)
このタスクの無限のタスクを行う正しい方法はありますか?