elastic-job和xxl-job实践对比
elastic-job與xxl-job的實踐數據對比。從多個維度,數據進行更適合的選擇。
簡介
技術文檔都比較完善,學習成本低。
elastic-job
官網地址:https://shardingsphere.apache.org/elasticjob/current/cn/overview/
E-Job 關注的是數據,增長了彈性擴容和數據分片的思路,以便于更大限度的利用分布式服務器的資源。可是學習成本相對高些,推薦在“數據量龐大,且部署服務器數量較多”時使用算法
xxl-job
官網地址:https://www.xuxueli.com/xxl-job/
X-Job 側重的業務實現的簡單和管理的方便,學習成本簡單,失敗策略和路由策略豐富。推薦使用在“用戶基數相對少,服務器數量在必定范圍內”的情景下使用
對比維度
前提條件均運行在K8S中,并且程序運行內存512M,正常運行12小時。
GC情況 (XXL-job完勝)
E-job
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 43.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 6.30 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.28043.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280XXL-job
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 58.86 0.00 49.24 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.24 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.27 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.28 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.37 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.37 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.37 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 49.37 28.97 95.87 93.36 1190 26.351 3 0.380 26.73158.86 0.00 51.05 28.97 95.87 93.36 1190 26.351 3 0.380 26.731對比結論
- E:年輕代中Eden目前已使用的空間,波動率不一。
- E-job 波動幅度大,并且空間使用大
- XXL-job 波動幅度平均,并且短時間空間使用低
- YGC:年輕代中E-job,gc次數大。
CPU/MEM情況
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS e1b9efeec680 k8s_xxl-jobs_cloud-namespace_9a47d619-5a8b-4529-856b-2cbd972c726d_0 0.00% 844MiB / 15.28GiB 5.39% 0B / 0B 4.56MB / 12.3kB 353 ij7j09jiasdq k8s_e-jobs_test-namespace_154s24d2-s1s2-2355-322s-a2121da21saa_0 0.00% 719MiB / 15.28GiB 4.58% 0B / 0B 4.56MB / 12.3kB 353CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS e1b9efeec680 k8s_xxl-jobs_cloud-namespace_9a47d619-5a8b-4529-856b-2cbd972c726d_0 3.00% 844MiB / 15.28GiB 5.39% 0B / 0B 4.56MB / 12.3kB 353 ij7j09jiasdq k8s_e-jobs_test-namespace_154s24d2-s1s2-2355-322s-a2121da21saa_0 2.00% 719MiB / 15.28GiB 4.58% 0B / 0B 4.56MB / 12.3kB 353CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS e1b9efeec680 k8s_xxl-jobs_cloud-namespace_9a47d619-5a8b-4529-856b-2cbd972c726d_0 3.20% 844MiB / 15.28GiB 5.39% 0B / 0B 4.56MB / 12.3kB 353 ij7j09jiasdq k8s_e-jobs_test-namespace_154s24d2-s1s2-2355-322s-a2121da21saa_0 4.00% 719MiB / 15.28GiB 4.58% 0B / 0B 4.56MB / 12.3kB 353CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS e1b9efeec680 k8s_xxl-jobs_cloud-namespace_9a47d619-5a8b-4529-856b-2cbd972c726d_0 3.20% 844MiB / 15.28GiB 5.39% 0B / 0B 4.56MB / 12.3kB 353 ij7j09jiasdq k8s_e-jobs_test-namespace_154s24d2-s1s2-2355-322s-a2121da21saa_0 2.70% 719MiB / 15.28GiB 4.58% 0B / 0B 4.56MB / 12.3kB 353對比結論
E-job稍微遜色一點,但是相差不多,對于上述比較的GC來看,個人覺得GC的可比性更重要。
支持集群部署 (感覺不通的情況使用)
XXL-job
集群部署唯一要求為:保證每個集群節點配置(db和登陸賬號等)保持一致。調度中心通過db配置區分不同集群。
執行器支持集群部署,提升調度系統可用性,同時提升任務處理能力。集群部署唯一要求為:保證集群中每個執行器的配置項 “xxl.job.admin.addresses/調度中心地址” 保持一致,執行器根據該配置進行執行器自動注冊等操作。
E-job
重寫Quartz基于數據庫的分布式功能,改用Zookeeper實現注冊中心
作業注冊中心: 基于Zookeeper和其客戶端Curator實現的全局作業注冊控制中心。用于注冊,控制和協調分布式作業執行。
對比結論
- 最新版本X-job 基于時間輪,使用數據庫實現注冊中心
- E-Job基于quartz,改用Zookeeper實現注冊中心
監控告警,日志追溯 (XXL-job完勝)
XXL-job
提供了調度器,支持日志查詢,動態控制任務觸發條件,支持配置郵箱地址進行異常告警。
E-job
需監聽任務的處理是否成功,作業服務器是否存活,數據是否處理成功,自行編寫告警程序。
對比結論
- xxl-job對于動態任務執行,日志查詢,告警更自動化,用法更建議,對于業務處理來說更方便
- E-job這方便稍微欠缺。
大量數據處理,批量處理 (E-job完勝)
E-job
支持并行調度,采用任務分片實現,可自定義分片策略,并且通過zk實現服務注冊,控制,協調,對服務器壓力更少
XXL-job
支持任務分片,更加執行起集群實現動態分片。因為是通過數據來實現彈性擴容,如果任務服務器多了,會對服務器造成一定的壓力
總結
綜合來說,如果側重于數據則使用E-job,側重業務請使用XXL-job
總結
以上是生活随笔為你收集整理的elastic-job和xxl-job实践对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 自动装箱与拆箱
- 下一篇: [网络开发]同步与线程安全方案