任务调度Schedulerx2.0分布式模型——广播模型

1. 简介

广播执行表示一个任务实例会广播到该分组所有worker上执行,当所有机器都执行完成,该实例才算完成。

任意一台worker执行失败,都算该实例失败。

所有worker执行成功,才算该实例成功。

有子任务列表,可以看每台机器的执行详情。

2. 执行方式

执行方式选择广播

3. 任务类型

任务类型可以选择多种,比如脚本,或者java任务。如果选择java,还支持preProcess和postProcess高级特性。

使用java任务需要继承JavaProcessor(1.0.8+版本),接口如下:

public ProcessResult process(JobContext context) throws Exception; (必选)
public void preProcess(JobContext context); (可选)
public ProcessResult postProcess(JobContext context); (可选)
  • preProcess会在所有机器执行process之前执行,只会执行一次。
  • postProcess会在所有机器执行process之后且都成功执行,之后执行一次,可以返回结果,作为工作流数据传输。

4. 应用场景

4.1 批量运维

  • 定时广播所有机器运行某个脚本。
  • 定时广播所有机器清理缓存。

4.2 数据聚合

1)使用BroadcastJavaProcessor,preProcess的时候重置数据库count=0;
2)每台机器执行process的时候,根据自己机器内存或者日志的值,往数据库count叠加;
3)postProcess的时候,读取数据库count值,传给下游;

5. Demo

@Component
public class TestBroadcastJobProcessor extends JavaProcessor {

    @Override
    public ProcessResult process(JobContext context) throws Exception {
        System.out.println("this is process");
        return new ProcessResult(true);
    }

    @Override
    public void preProcess(JobContext context) {
        System.out.println("this is preProcess");
    }

    @Override
    public ProcessResult postProcess(JobContext context) {
        System.out.println("this is postProcess");
        return new ProcessResult(true, "hello broadcast");
    }
}

如上代码所示,起三台机器,执行结果如下:
worker1:

this is preProcess
this is process
this is postProcess

worker2:

this is process

worker3:

this is process

原文链接:Schedulerx2.0分布式执行之——广播执行-阿里云开发者社区 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值