您现在的位置是:首页 > 文章详情

Schedulerx2.0支持多语言版本的分片模型

日期:2019-12-16点击:703

1. 简介

任务调度系统可以对多种任务进行调度(定时、编排、重刷历史数据等),有些任务调度系统还提供了分布式任务,帮助用户解决大数据处理的难题。分布式任务主要分为静态分片和动态分片。

1.1 静态分片

主要场景是处理固定的分片数,比如分库分表固定1024张表,需要若干台机器分布式去处理。
主流的框架,开源有elastic-job。

1.2 动态分片

主要场景是分布式处理未知数据量的数据,比如一张大表不停在变更,想要分布式跑批。
主流的框架是schedulerx2.0提供的MapReduce模型,暂时还没有对外开源。

2. 多语言版本的分片模型

Schedulerx2.0当前支持多语言版本的分片模型,还具有高可用、流控、失败重试等特性,需要客户端版本1.1.0以上。

2.1 Java版本

  1. 控制台创建任务的时候,执行方式选择"分片运行",分片参数格式如下
    image
  2. 后端代码继承JavaProcessor即可,通过JobContext.getShardingId()可以拿到分片号,通过JobContext.getShardingParameter()可以拿到分片参数,比如
@Component public class HelloWorldProcessor extends JavaProcessor { @Override public ProcessResult process(JobContext context) throws Exception { System.out.println("分片id=" + context.getShardingId() + ", 分片参数=" + context.getShardingParameter()); return new ProcessResult(true); } }
  1. 执行列表可以查看分片详情
    image

2.2 python版本

python用户想使用分布式跑批的福音来了,只需要安装一个agent,脚本都可以由schedulerx2.0维护:

  1. 下载schedulerx-agent包接入。
  2. 直接在控制台写python脚本和分片参数即可,脚本里sys.argv[1]是分片号,sys.argv[2]是分片参数
    image
  3. 执行列表可以查看分片详情
    image

2.3 其他脚本语言

shell和go脚本语言,和python类似,第一个系统参数是分片号,第二个是分片参数,就不一一demo了。

2.4 高可用

分片模型基于Map模型开发,可以继承Map模型高可用的特性,即某台worker执行过程中挂了,master worker会把分片failover到其他slave节点执行。

2.5 流控

分片模型基于Map模型开发,可以继承Map模型流控的特性,即可以控制单机子任务并发度。比如有1000个分片,一共10台机器,可以控制最多5个分片并发跑,其他在队列等待
image

2.6 分片自动失败重试

分片模型基于Map模型开发,可以继承Map模型子任务失败自动重试的特性
image

原文链接:https://yq.aliyun.com/articles/739601
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章