我在做的一个实时性不是非常敏感但计算/ IO 密集型的功能,我们就说它是一个根据查询条件分析和导出报告的功能好了。
用户发出请求后,我会将其打包成一个作业提交给作业调度框架,我希望这种比较占用资源的作业可以在系统空闲时执行,而其他常规作业则不受影响。目前使用的调度框架是 JobRunr OSS ,思路是将高资源占用的作业打上特殊的标记,执行器在系统负载较高的情况下不要获取这些任务(先假设有一个通用的系统负载指标好了)。
看了下 JobRunr OSS 的源码,实现 org.jobrunr.server.strategy.WorkDistributionStrategy 接口可以影响执行器请求新作业的行为,然而用于取回新作业的 org.jobrunr.storage.navigation.AmountRequest 只能使用 order 和 limit 参数,不能按照标签等属性区分作业。
我认为这里需要一个作业池 / 优先级队列的概念,常规池使用默认的调度策略,而高资源占用作业池则使用定制的调度策略(等到系统空闲时),不过 JobQueue 似乎是 JobRunrPro 的功能,有办法在 JobRunr OSS 中实现这个需求吗?
因为没有搜到很多关于 Resource aware scheduler 的资料,我也有些怀疑这是否是一个值得研究的问题,或者实际上是个 X-Y 问题?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.