任务调度系统那些事

原文链接: https://my.oschina.net/u/141281/blog/801789

      说到任务调度,系统运维的同学首先想到的就是cron,确实,一个cron表达式就解决了任务定时、周期性调度。但是一旦任务被调失败了,如何重试?如何通知相关人?后续依赖此任务的任务怎么处理?java程序员最常用的调度工具肯定就是quartz了,quartz解决了通知api的方式来定义任务,并且spring已集成了它。但是,一旦任务个数增加到超过线程个数之后,超过的任务就必须等待。

     在大数据领域,常用的调度系统有oozie,azkaban。oozie天生支持hadoop,它采用xml来描述任务,通过DAG来描述任务之间的依赖关系,并且HUE集成了oozie,提供更为更大的coodinator,bundle,同时还为用户提供了自定义Action的接口,用户可以根据自己的业务扩展。azkaban通过keyvalue的配置文件方式来描述任务,并且也支持DAG,用户可以通过插件方式来扩展。

     但是这些调度工具或系统,都只是解决某一领域的调度需求,都不通常。任务调度领域最强大的工具应属control-m,它是BMC公司出品的商业化工具。一般中小型企业不会把钱花在这上边。

       

转载于:https://my.oschina.net/u/141281/blog/801789

你可能感兴趣的:(任务调度系统那些事)