当前位置: 首页 > 后端技术 > Java

DataX-通道数是如何决定的

时间:2023-04-01 17:11:29 Java

DataXML中的通道数可以通过三种方式设置:bps限速、tps限速、直接设置。计算步骤在split中,影响jobReader和jobWriter的划分。bps速度限制总bps速度限制由job.json中的job.setting.speed.byte设置。单个通道的bps值由core.transport.channel.speed.byte设置,在core.json中,默认为-1。如果设置了总bps速率限制,则单个通道的bps值不能为空或非正数。通道数=总bps速率限制/单个通道的bps值。例如总bps限速为100,单通道bps为10,则通道数为100/10=10。tps速度限制总的tps速度限制由job.json中的job.setting.speed.record设置。单个通道的tps值由core.transport.channel.speed.record设置,在core.json中,默认为-1。如果设置了总tps速率限制,则单个通道的tps值不能为空或非正数。通道数=总tps限速/单通道tps值。比如总tps限速为200,单通道tps为40,则通道数为200/40=5。直接设置就是通过job.setting.speed.channel直接设置。比如这个值设置为5,那么通道数就是5。如果设置了上面三个的优先级,应该优先哪个?如果不设置bps限速和tps限速,通道数默认为Integer.MAX_VALUE。如果同时设置bpsspeedlimit和tpsspeedlimit,以小者为主。比如上面的例子,如果tps通道数比bps通道数10少了5,那么通道数最终还是5。如果只设置了bpsspeedlimit和tpsspeedlimit其中之一,以设置的为准,因为没有设置的默认Integer.MAX_VALUE肯定大于设置的,所以小的就是设置的。如果bpsspeedlimit和tpsspeedlimit都没有设置,那么会读取直接设置的值,也就是说直接设置的优先级最低。如果都没有设置,则直接抛出异常,也就是说必须设置Job的运行速度。taskNumberchannels的个数除了要和上面计算的结果进行比较,还要和taskNumber比较取最小值。比如taskNumber的值为2,上面最后的结果为5,那么通道数就会重新设置为2。这一步是在任务调度之前完成的。