Datax并发数确定
并发数的确实是datax
的jobContainer
的工作,具体入口在JobContainer#adjustChannelNumber
中.
主要限制条件有三个: byteNum
、RecordNum
以及直接的channelNum
。
总结来说:
- 是否有全局
(job) byte
限制,如果有,则必须要有channel
的byte
设置,最后计算出 需要的channelByByte
数量。 - 是否有全局
(job) record
限制,如果有,则必须要有channel
的record
设置,最后计算出 需要的channelByRecord
数量。 - 取1和2的最小值设置到
job
的channelNumber
,如果可以设置,则该方法任务完成,退出。 - 如果3 未能设置,则从cfg中判断用户是否自己设置了
channelNum
,如果用户设置了,将用户设置的给本job channel
。
private void adjustChannelNumber() {
// 通道数限制范围计算
int needChannelNumberByByte = Integer.MAX_VALUE;
int needChannelNumberByRecord = Integer.MAX_VALUE;
// 看job.json文件中是否有配置JOB_SETTING_SPEED_BYTE,如果有则返回true 没有则返回false
boolean isByteLimit = (this.configuration.getInt(
CoreConstant.DATAX_JOB_SETTING_SPEED_BYTE, 0) > 0);
if (isByteLimit) {
long globalLimitedByteSpeed = this.configuration.getInt(
CoreConstant