Radish 任务抢占系统

推荐一款开源任务抢占系统

文章来源 : Radish 任务抢占系统

项目开源地址 gitee: https://gitee.com/shensuoyao/radish

项目开源地址 github:https://github.com/shensuoyao/radish

项目开发过程中不可避免需要用到定时任务,开发定时任务有时候是个头疼的事情。尤其是对中小项目来说,任务往往被嵌入在项目中。然而定时任务通常是难以测试的,这样就导致了定时任务的开发困难,测试困难。伴随着项目的迭代更新,任务也跟着每次重新部署。产生的不可控导致bug常出。

聪明的开发者往往会把任务和项目分开,为了达到解耦的目的,最简单粗暴的方法就是使用脚本语言编写定时任务,然后配置到系统调度器crontab中,这样业务项目就跟定时任务解耦了。虽然这样做对于中小项目的定时任务可以达到一定的效果,但同样也存在一些问题,最简单比如任务的日志,你需要知道任务的执行成功与失败,有时候还需要查看任务的日志数据是否满足要求等等,对于这种情况就显得很不方便了。

这里推荐一款开源的任务抢占系统,适用于中小项目的任务管理。部署简单,依赖少。

Radish 任务抢占系统,根据作者的介绍,该系统适用于中小项目,难得的是居然还实现了任务依赖和监控。

Radish区别与传统的任务调度系统点在于其理念新颖,传统的任务调度系统是通过主控调度器生成任务,并选择执行机执行。任务调度不够灵活,对于复杂的任务依赖问题难于解决,当任务并发量增大时,主调度器就显得有些吃力了。而任务的调度器和执行机之间通过RPC双向依赖执行,在专有网络或私有集群中一般无法实现双向依赖部署(出于安全的考虑,一般是专有网络能访问外网,而外网无法直接访问专有网络中的机器)。Radish则将任务解释为“配置”,而具体的任务执行解释为“事件”。 调度器通过任务“配置”,每次调度生成一个可执行“事件”。客户机通过单项RPC向主控服务请求触发可执行“事件”,执行机之间通过抢占的方式获取可执行事件到本地执行,最后将执行结果反馈给主控服务。这种模式解决了由主控来统一调度任务的复杂度。并且通过任务的“配置”,可以很方便的定义任务之间的依赖关系。当生成可执行事件的时候,如果某一事件的执行必须在另一事件完成后的条件下才能执行,那么该事件就会一直等待,直到其依赖的事件被执行后才能被执行。通过这种方式很好的解决了任务链的场景(举个简单的例子,工作流中的各节点事件,就可以定义为一个独立的任务链来执行)。

转载于:https://my.oschina.net/u/244775/blog/2052322

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值