最近做一个定时任务的功能,但用户量比较小,但做的时候一般都会想一下最优解决方案,但如果是大规模的方式我现在的方案明显很大的问题,想问下各位达人如果做的话会如何设计。
下面说下具体的需求,有点类似小爱音响,每个用户都可以自定义自己的任务,比如有的要XX天后提醒,有的要XX分钟后提醒,XX要求XX秒后提醒,而这些提醒甚至会有循环性质的提醒,比如每个月提醒一次,每周提醒一次,每30分钟提醒一次,等等。每个用户可以定义的提醒差不多会有10多个,假设像小爱这种的差不多100W人设置了任务,那这种定时任务的调度要如何设计最好?
先说下我自己的思路,我感觉首先肯定会用到时间轮,根据XXL-job的思路,每10秒执行一次,将最近的10分钟的任务加载到时间轮,但这里面有涉及到循环调度的任务,中间还要计算,如果这么大的量级,感觉这个方案也不靠谱。对了这里要先声明下,可能有哥们会提出,这种直接做成分片,然后分布式处理,每个节点处理2000个任务,问题解决,当然这种也算是一个解决方案,但这里更想讨论的是通过算法或者表设计这种形式,来达到目的。
回答
如果按照小爱印象的模式看,可以把定时任务部署在每个小爱音响个体中,而不是由服务器统一调度,负责再怎么分片,分服务都不好搞
发表评论