DataXML的channel数量,由bps限速、tps限速、直接设置三种方式。计算的步骤在split中,影响到jobReader和jobWriter的认为切分。
bps限速
总bps限速通过job.setting.speed.byte设置,在job.json中。
单个channel的bps值通过core.transport.channel.speed.byte设置,在core.json中,默认为-1。
如果设置了总bps限速,那单个channel的bps值不能为空,也不能为非正数。
channel的数量=总bps限速/单个channel的bps值。
比如总bps限速为100,单个channel的bps为10,那channel的数量就是100/10=10个。
tps限速
总tps限速通过job.setting.speed.record设置,在job.json中。
单个channel的tps值通过core.transport.channel.speed.record设置,在core.json中,默认为-1。
如果设置了总tps限速,那单个channel的tps值不能为空,也不能为非正数。
channel的数量=总tps限速/单个channel的tps值。
比如总tps限速为200,单个channel的tps为40,那channel的数量就是200/40=5个。
直接设置
通过job.setting.speed.channel直接设置。
比如这个值设置为5,那channel的数量就是5个。
优先级
如果以上三个都设置了,那以哪个为主呢?
如果bps限速和tps限速没有设置,那channel的数量默认都是Integer.MAX_VALUE。
如果bps限速和tps限速都设置了,那谁比较小,以哪个为主。
比如上面的例子,tps的channel个数5小于bps的channel个数10,那channel的个数最终为5。
如果bps限速和tps限速只设置了一个,那以设置的那个为准,因为没设置的那个默认Integer.MAX_VALUE,肯定大于设置的那个,所以取小的数就是设置的那个。
如果bps限速和tps限速都没有设置,那才读取直接设置的值,也就是说,直接设置的优先级最低。
如果都没有设置,那直接抛异常,也就是说,必须设置Job运行速度。
taskNumber
channel数量,除了通过上面计算的结果外,还需要再和taskNumber进行对比,取最小值。
比如taskNumber的值是2,上面最后的结果是5,那channel的数量就是会重置为2,这个步骤是在任务调度之前做的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。