关于分布式定时任务的设计思想,希望能指点一下。

web_xml 发布于 2019/06/21 09:43
阅读 96
收藏 0

华为云11月刊推送:DIY微信问答机器人,高性能计算代码的20个技巧!>>>

目前在自己做一个基于zookeeper的分布式定时任务。有一个问题没想出有什么好的解决方案。

目前的逻辑是首先选出leader,然后leader会轮询获取zookeeper中的worker节点,得到当前的worker数量后,再根据当前的定时任务数量来平均分配,通过任务ID传输到worker上,worker会通过Id查找定时任务并注册,然后leader就只需要监控节点就行,不会再次分发。

这个地方就碰到一个问题就是:

1.我在分配的时候是轮询扫,我的处理逻辑是,我只要扫描到了就会执行分发的方法,如果我的worker一个一个的起起来的话,只有第一个的能被分配到定时任务。如果把分发的策略改为定时任务注册在leader上,定时发送中间件去执行的话,leader服务的主机性能不够的话,cpu可能会比较吃紧,这样就需要不止一个leader,那如何才能使不同的leader只需要知道自己处理哪些任务就行。

2.除了将定时任务注册在leader的方式,还能有什么方式,能够使我的定时任务能分配到后来的worker上。

加载中
返回顶部
顶部