Hydra-IoJava 分布式作業(yè)流調(diào)度框架
Java 分布式作業(yè)流調(diào)度框架 Hydra-Io
Hydra 是由 Java 實現(xiàn)的作業(yè)流調(diào)度框架,它可以支持復(fù)雜作業(yè)流的調(diào)度。
主要有以下特點:
1. 支持分布式作業(yè)分片
2. 支持本地并發(fā)執(zhí)行
3. 支持復(fù)雜作業(yè)樹(作業(yè)流)
4. 實現(xiàn)業(yè)務(wù)代碼和框架代碼的解耦
5. 內(nèi)部實現(xiàn)分布式調(diào)度,無需zookeeper等第三方分布式組件
6. 拋棄傳統(tǒng)的cron表達,采用簡單易懂的作業(yè)配置
note: 目前Hydra-Io 處于測試版本,暫沒有在生產(chǎn)環(huán)境下運行的先例
計劃:
在1.0 版本中 將支持一下特性
1. 同步支持zookeeper 、Redis 作為分布式組件
2. 實現(xiàn)基于XML的作業(yè)配置
3. 支持spring
測試版體驗:
1.定義作業(yè) testInvokeTask
@Task("testInvokeTask")
public class TestInvokeTask {
@Executor("executorA")
@Expression(strategy = ExpressionStrategyEnum.TIMING, measure = ExpressionMeasureEnum.MINUTE,factor = "15")
@Distributed(strategy = DistributedStrategyEnum.SHARDING,number = 2)
public String executorA(EnvironmentParams context){
String jobName = context.getJobName();
int invokeIndex = context.getInvokeIndex();
String str = jobName + " - " + invokeIndex + " running at " + new Date();
System.out.println(str);
return str;
}
@Join("testInvokeTask@executorA")
@Executor("executorB")
public String executorB(EnvironmentParams context, String values){
String jobName = context.getJobName();
int invokeIndex = context.getInvokeIndex();
String str = jobName + " - " + invokeIndex + " running at " + new Date() + " param is:[" + values + " ]" ;
System.out.println(str);
return jobName;
}
@Join("testInvokeTask@executorB")
@Executor("executorC")
public String executorC(EnvironmentParams context, String values){
String jobName = context.getJobName();
int invokeIndex = context.getInvokeIndex();
String str = jobName + " - " + invokeIndex + " running at " + new Date() + " param is:[" + values + " ]" ;
System.out.println(str);
return jobName;
}
}
注解說明:

執(zhí)行作業(yè):
public class Main {
public static void main(String[] strings){
BatchSystem system = AnnotationBatchSystem.getInstance().setScanPackage("com.xxxx.xxxx.test");
system.start();
}
}評論
圖片
表情
