为了账号安全,请及时绑定邮箱和手机立即绑定

Datax3.0中配置解读(4)

标签:
Java

针对几个参数的配置,之前根据阅读源码做了一些解读,这里做一下总结.

core.json

1-core.container.taskGroup.channel

   1.1 将拆分成的Task重新组合后 组装成的TaskGroup(任务组),默认启动的线程数量去执行这些Task

   1.2 和job配置中的channel配合使用,可以提高taskGroup的并发个数(前提是没有配置byte和record)

每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。

2-core.transport.channel.speed.byte

   2.1 首先作为单个channel的byte大小限速参数

   2.2 和job中配置的job.setting.speed.byte配合使用,可以提高taskGroup的并发个数

3-core.transport.channel.speed.record

   3.1 首先作为单个channel的record数量限速参数

   3.2 和job中配置的job.setting.speed.record配合使用,可以提高taskGroup的并发个数

job.json

1-job.setting.speed.channel

  1.1 job.setting.speed.channel/core.container.taskGroup.channel  获取taskGroup并发的个数

2-job.setting.speed.byte

 1.1  job.setting.speed.byte/core.transport.channel.speed.byte)/core.container.taskGroup.channel 获取taskGroup并发的个数

3-job.setting.speed.record

 1.1job.setting.speed.record/core.transport.channel.speed.record)/core.container.taskGroup.channel 获取taskGroup并发的个数

  

实例:

全局限速:

job.setting.speed.byte  1000  可以理解为整个任务所有任务的速度总和

core.transport.channel.speed.byte 100 单个channel限速

core.container.taskGroup.channel 5

此时如果切分后task的个数大于通过byte计算出的needChannelNumber,

可以获取到taskGroup的个数为10/5=2

每个taskGroup提交到固定大小为2的线程池执行任务,并且执行任务的并发数是5

主要阅读的代码路径:

com.alibaba.datax.core.job.JobContainer
com.alibaba.datax.core.transport.channel.Channel
com.alibaba.datax.core.taskgroup.TaskGroupContainer


限速的逻辑:
* 1- 获取到core.transport.channel.speed.byte和core.transport.channel.speed.record两个配置的参数值
* 2-判断是否大于0,如果两个都没有配置,则直接返回
* 3-根据byte计算出当前的速度,和配置的byte做比较,计算出需要休眠的时间
* 4-根据record计算出当前的速度,和配置的record做比较,计算出需要休眠的时间
* 5-获取休眠时间较大的值进行sleep.

调整channelNumber的逻辑在之前的文章已经总结可以去查看。

后续发现问题,会更新文章。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
6396
获赞与收藏
157

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消