Datax
總體流程圖
先看執行的第一個步驟:
在最上層抽象類,這個里面相當於獲取全局公共信息,java入口部分就是這個Engine的main方法直接啟動
Engine 啟動
com.alibaba.datax.core.Engine#main直接啟動
阿里這邊有提供多級JSON配置信息無損存儲
com.alibaba.datax.common.util.Configuration
但是平常的使用中很少有直接以json的格式操作,一般是轉成對象bean,然后進行操作,
他在這邊新寫這個方法的目的主要在於對封閉的json進行處理,直接從key獲取到value,但是我感覺還是可以直接轉成bean的形式去獲取比較方便.畢竟只有一個json的文件
直接main方法啟動,在datax.py腳本中設置了鎖需要的參數和json地址, 在啟動的時候通過讀取啟動參數,獲取到當前的啟動配置文件.
這邊阿里使用了
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.3.1</version>
</dependency>
這個包 ,然后使用
Options options = new Options();
options.addOption("job", true, "Job config.");
options.addOption("id", true, "Job unique id.");
options.addOption("mode", true, "Job runtime mode.");
DefaultParser parser = new DefaultParser();
CommandLine cl = parser.parse(options, args);
String job = cl.getOptionValue("job");
String id = cl.getOptionValue("id");
String mode = cl.getOptionValue("mode");
來根據參數的名字進行讀取.這個地方平常很少有用到,可以記錄下.
datax在執行的過程中打了很多的日志,有個打印vminfo的class我感覺可以在平常使用到,之前我也寫過這種類似的,但是說效果不是很好,因為我之前是使用的腳本去查詢的服務器上面的信息.
com.alibaba.datax.common.statistics.VMInfo#getVmInfo
這個類的話,在日志監控或者效率監控也可以使用到.
com.alibaba.datax.core.Engine#start 進入真正的執行方法
前面基本上都是在對性能參數的賦值,然后獲取到了一個List<Configuration> taskConfigs
,將這個list轉成了map,然后再循環中開多線程執行任務.