关闭

Elastic-Job何为分布式作业

标签: Elastic-Job分布式作业
2377人阅读 评论(0) 收藏 举报
分类:

原文地址:http://dangdangdotcom.github.io/elastic-job/post/1.x/distribution/

何为分布式作业?

分片概念

任务的分布式执行,需要将一个任务拆分为n个独立的任务项,然后由分布式的服务器分别执行某一个或几个分片项。

例如:有一个遍历数据库某张表的作业,现有2台服务器。为了快速的执行作业,那么每台服务器应执行作业的50%。 为满足此需求,可将作业分成2片,每台服务器执行1片。作业遍历数据的逻辑应为:服务器A遍历ID以奇数结尾的数据;服务器B遍历ID以偶数结尾的数据。 如果分成10片,则作业遍历数据的逻辑应为:每片分到的分片项应为ID%10,而服务器A被分配到分片项0,1,2,3,4;服务器B被分配到分片项5,6,7,8,9,直接的结果就是服务器A遍历ID0-4结尾的数据;服务器B遍历ID5-9结尾的数据。

分片项与业务处理解耦

Elastic-job并不直接提供数据处理的功能,框架只会将分片项分配至各个运行中的作业服务器,开发者需要自行处理分片项与真实数据的对应关系。

分布式作业的执行

Elastic-job并无作业调度中心节点,而是基于部署作业框架的程序在到达相应时间点时各自触发调度。

注册中心仅用于作业注册和监控信息存储。而主作业节点仅用于处理分片和清理等功能。

个性化参数的适用场景

个性化参数即shardingItemParameters,可以和分片项匹配对应关系,用于将分片项的数字转换为更加可读的业务代码。

例如:按照地区水平拆分数据库,数据库A是北京的数据;数据库B是上海的数据;数据库C是广州的数据。 如果仅按照分片项配置,开发者需要了解0表示北京;1表示上海;2表示广州。 合理使用个性化参数可以让代码更可读,如果配置为0=北京,1=上海,2=广州,那么代码中直接使用北京,上海,广州的枚举值即可完成分片项和业务逻辑的对应关系。

作业高可用

Elastic-job提供最安全的方式执行作业。将分片项设置为1,并使用多于1台的服务器执行作业,作业将会以1n从的方式执行。

一旦执行作业的服务器崩溃,等待执行的服务器将会在下次作业启动时替补执行。 开启失效转移功能效果更好,可以保证在本次作业执行时崩溃,备机立即启动替补执行。

最大限度利用资源

Elastic-job也提供最灵活的方式,最大限度的提高执行作业的吞吐量。将分片项设置为大于服务器的数量,最好是大于服务器倍数的数量,作业将会合理的利用分布式资源,动态的分配分片项。

例如:3台服务器,分成10片,则分片项分配结果为服务器A=0,1,2;服务器B=3,4,5;服务器C=6,7,8,9。 如果服务器C崩溃,则分片项分配结果为服务器A=0,1,2,3,4;服务器B=5,6,7,8,9。在不丢失分片项的情况下,最大限度的利用现有资源提高吞吐量。


==============================================================================================================

1
0
查看评论

elasticJob分片跑批

业务迅速发展带来了跑批数据量的急剧增加。单机处理跑批数据已不能满足需要,另考虑到企业处理数据的扩展能力,多机跑批势在必行。多机跑批是指将跑批任务分发到多台服务器上执行,多机跑批的前提是”数据分片”。elasticJob通过JobShardingStrategy支持分片跑批。跑批配置需要做如下修改: ...
  • peerless_hero
  • peerless_hero
  • 2017-08-04 16:06
  • 2195

Elastic-Job作业分片策略

原文地址:http://dangdangdotcom.github.io/elastic-job/post/1.x/job_strategy/ 作业分片策略 框架提供的分片策略 AverageAllocationJobShardingStrategy 全路径: com.dangdang.d...
  • tanga842428
  • tanga842428
  • 2016-09-28 12:57
  • 4526

Elastic-Job中常见问题

原文地址:http://dangdangdotcom.github.io/elastic-job/post/faq/ 1. 阅读源码时为什么会出现编译错误? 回答: Elastic-Job使用lombok实现极简代码。关于更多使用和安装细节,请参考lombok官网。 2. 使用Spring...
  • tanga842428
  • tanga842428
  • 2016-09-26 12:07
  • 7313

Elastic-Job开发指南

原文地址:http://dangdangdotcom.github.io/elastic-job/post/1.x/user_guide/ 开发指南 代码开发 作业类型 目前提供3种作业类型,分别是Simple, DataFlow和Script。 DataFlow类型用于处理数据...
  • tanga842428
  • tanga842428
  • 2016-10-22 09:33
  • 11354

quartz系列(四):elastic-job的实践

在造完轮子之后,回到开源,本文主要记录对当当网的elastic-job进行试用的过程。简要介绍:elastic-job 是基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行二次开发的分布式弹性作业框架。linux环境: Ubuntu 14.04 LTS 1.安装zook...
  • ahmuAMu
  • ahmuAMu
  • 2016-03-14 03:48
  • 14547

elastic-job的原理简介和使用

elastic-job是当当开源的一款非常好用的作业框架,在这之前,我们开发定时任务一般都是使用quartz或者spring-task(ScheduledExecutorService),无论是使用quartz还是spring-task,我们都会至少遇到两个痛点: 1.不敢轻易跟着应用服务多节点部署...
  • fanfan_v5
  • fanfan_v5
  • 2017-03-11 02:14
  • 9936

elastic-job详解(一):数据分片

数据分片的目的在于把一个任务分散到不同的机器上运行,既可以解决单机计算能力上限的问题,也能降低部分任务失败对整体系统的影响。elastic-job并不直接提供数据处理的功能,框架只会将分片项分配至各个运行中的作业服务器(其实是Job实例,部署在一台机器上的多个Job实例也能分片),开发者需要自行处理...
  • yu757371316
  • yu757371316
  • 2017-07-24 20:47
  • 726

Elastic Job 入门详解

Elastic job是当当网架构师张亮,曹昊和江树建基于Zookepper、Quartz开发并开源的一个Java分布式定时任务,解决了Quartz不支持分布式的弊端。Elastic job主要的功能有支持弹性扩容,通过Zookepper集中管理和监控job,支持失效转移等,这些都是Quartz等其...
  • zhglance
  • zhglance
  • 2017-02-15 18:16
  • 13437

elastic-job:分布式作业调度框架

elastic-job是当当内部应用框架ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架。去掉了dd-job中监控和ddframe接入规范部分。ddframe其他模块也有可独立开源的部分,之前当当曾开源过dd-soa的基石模块DubboX elastic-job和ddframe...
  • HarderXin
  • HarderXin
  • 2016-12-02 17:22
  • 2678

【实战Elastic-Job】--详解当当网分布式作业框架

在做电商项目的时候,有很多地方需要作业来完成,通过对比在scheduler的地方用了当当网的分布式作业框架Elastic-Job而没有选择spring自带的scheduler,下面小编带领你详细的了解一下Elastic-Job是什么,怎么用,以及用的好处.
  • u013086062
  • u013086062
  • 2017-01-07 21:48
  • 4359
    个人资料
    • 访问:1358468次
    • 积分:17694
    • 等级:
    • 排名:第648名
    • 原创:257篇
    • 转载:1344篇
    • 译文:92篇
    • 评论:84条