批量框架调研对比

2020-11-01  本文已影响0人  MrWho0

批量框架调研总结

之前公司用的一套自研的批量框架,每个Job都作为独立的Jvm进程执行,目前存在以下问题:

业务功能越来越多,现有框架的问题也越来越明显。于是近期对一些批量框架进行了调研,看下新的批量框架的改造方向。先上一张思维导图:


批量框架思维导图

批量处理

SpringBatch

SpringBatch是一款轻量的、全面的批处理框架,用于开发强大的日常运营的企业级批处理应用程序。SpringBatch是一个大数据量的并行处理框架。

任务调度

Crontab

crontab 命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令

Spring Task

Spring Task是Spring框架自带的任务调度器。

Quartz

Quartz是Java领域最著名的开源任务调度工具。Quartz提供了极为广泛的特性如持久化任务,集群和分布式任务等,其特点如下:

Quartz应用与集群原理分析这篇文章里有比较详细的介绍

Elastic Job

Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。elastic job学习

Elastic Job Lite

Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。

Elastic Job Cloud

Elastic-Job-Cloud使用Mesos + Docker的解决方案,额外提供资源治理、应用分发以及进程隔离等服务。

关于Spring Task、Quartz和Elastic-Job的区别

  • spring task用于单机,定时任务的表达式固定(因为注释的方便,但因此代码也写死了,不能在线修改表达式),定时任务执行的准时度要求不高(里面用的等待队列,有可能会到点推迟执行)。
  • quartz一般适用于表达式不固定需要在线修改等等等等。task有的quartz都有。非业务类型定时任务可以使用task,业务类型请考虑使用quartz
  • Elastic Job对比quartz改用Zookeeper实现集群功能,并且支持任务的弹性分片。都提供弹性分片。

xxl-job

xxl-job和elastic-job-lite对比

分布式定时任务调度系统技术选型
xxl-job 提供任务依赖、日志查看,可查看每个job id的日志、grule方式添加任务。分布式基于quartz,同样基于数据库。管理界面功能丰富
elastic-job-lite 分布式基于zookeeper,管理界面功能简单。有弹性扩容和数据分片的概念。

TBSchedule

定时任务的分布式调度
任务和调度:理解批量处理的关键设计

Spring Cloud Task

Spring Cloud Task 主要解决短命微服务的任务管理,任务调度的工作,比如说某些定时任务晚上就跑一次,或者某项数据分析临时就跑几次。

Spring Cloud Data Flow

参考文档

上一篇 下一篇

猜你喜欢

热点阅读