【发布时间】:2016-09-28 13:13:36
【问题描述】:
我正在开发一个模块,该模块需要按计划从第三方系统收集数据,比如每 5 分钟一次。
开始数据收集的触发器来自多租户 UI。因此,10 个租户可以告诉这个模块同时开始收集数据。
我从使用一个简单的 redis 队列开始,所有来自 UI 的启动请求都发布到队列中,模块充当工作人员,拿起作业并运行它们。
问题是我们需要在 1 分钟内完成一个数据收集周期,如果有 100 个作业,如果我们连续进行,我们将花费一分钟以上。数据收集需要按计划进行。所以 UI 说每 5 分钟运行一次数据收集,直到我说停止!
因此,我们添加了另一个可以开始减轻负载的工作人员。
我的问题是:如何在不保持状态(调度线程执行器)的情况下实现常规调度?
我是不是想得太多了,能不能用更简单的方式来完成?
我现在的设计有一种 cron 作业,每 1 分钟从数据库读取一次数据收集请求,然后将它们放在一个队列中,工作人员从那里获取它。
【问题讨论】: