我的问题描述如下:我有 n 个基于状态的数据库无限爬虫:目前它是如何发生的:
- 我们使用单机爬行。
- 我们有三层优先级队列。高、中和低。
- 在启动时,所有数据库作业都被放入较低级别的队列中。
- Worker 从队列中读取作业并执行操作。
- 完成工作后,它会延迟 5 分钟重新安排它。
我找到的解决方案
对于优先队列,我可以使用:
- http://zookeeper.apache.org/doc/r3.2.2/recipes.html#sc_recipes_priorityQueues
我仍在寻找的问题解决方案是:
- 如何使用未来的计划时间重新安排队列中的作业。有没有办法在 zookeeper 中做到这一点?
- 取消已开始的作业。假设用户更改了他的数据库身份验证详细信息。我想停止已经为该数据库运行的作业并使用新的详细信息重新启动。我的想法是在启动工作人员时它会订阅它的 znode 更改,如果发生某些事情,它将停止该工作并重新安排它。
- 无限队列 我认为完成后它将从队列中删除并在未来的调度时间内读取它。(它的实现取决于第 1 点)
这是执行此任务无限任务的正确方法吗?