maa*_*nus 5 java scheduler job-scheduling
我有一堆重复的任务要安排.他们查询数据库以找出要执行的操作,然后执行某些操作,如统计信息更新,发送电子邮件,获取文件和导入文件.目前,可能有十个,这个数字预计会增长很多.我没有给出任何时间限制,实际上,选择算法是我的工作,以便没有人抱怨.:d
目前,我正在使用线程的临时组合和周期性安排的任务
它目前似乎运作良好,但它不是面向未来的,并且由于以下原因而感觉不对:
(*)它主要是一个Web服务器,服务请求实际上是最高优先级.获得单独的服务器无济于事,因为瓶颈通常是数据库.目前,它工作正常,但我正在寻找一个更好的解决方案,因为我们希望负载在一两年内增长100倍.
我的想法是提高工作的优先级,当它被推迟太多时.例如,有统计数据每小时运行一次并将它们延迟几个小时并不是什么大不了的事,但它不应该是一整天而且不应该是整整一周.
我很乐意通过以下工作替换我AbstractExecutionThreadService的所有s和AbstractScheduledServices:
这肯定听起来很模糊,让它更精确是我要问的一部分.我的竞争目标是
没有硬性截止日期,也没有必要尽量减少使用的线程数.我并不坚持完全按照我的描述做出解决方案,我不是在寻找一个库(我也没有坚持重新发明轮子).我不认为类似cron的调度程序是正确的解决方案.
我认为你已经非常接近你想要的了,也许只需要一点鼓励/认可/同意就足够了
我的想法是“如果我知道可以运行的最大并发线程数,那么我将如何针对 3 个线程队列共享这些线程”。
一旦我知道了这一点,我就可以设置 3 个队列,每个队列都有不同的可用线程份额。- 优先级 1(最高)获得 50% 的工作 - 优先级 2 获得 35% 的工作 - 优先级 3(最低)获得 15% 的工作
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |