Radish 任务抢占系统

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

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

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

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

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

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

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

Radish 任务抢占系统,根据做者的介绍,该系统适用于中小项目,可贵的是竟然还实现了任务依赖和监控。spa

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

相关文章
相关标签/搜索