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.280 43.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 6.18 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 6.30 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280 43.10 0.00 13.53 35.03 97.84 96.22 11700 177.625 3 0.655 178.280
|
XXL-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.731 58.86 0.00 49.24 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.27 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.28 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.36 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.37 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.37 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.37 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.86 0.00 49.37 28.97 95.87 93.36 1190 26.351 3 0.380 26.731 58.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 353
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 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 353
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 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 353
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 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