xxlJob

889 阅读2分钟

背景

这篇文章主要讲分布式任务调度,说白了,就是分布式job。

因为以前的,都是单机job。

单机job,有个缺点,就是集群部署的时候,同一个数据会处理多次。即多个机器,从数据库读同样的数据,然后处理的也是同样的数据。这个就有问题。

分布式job,集群,避免多个机器处理同一个数据。

单机

Timer定时器

定时任务 + 线程池

spring 定时器

分布式

quartz

xxljob

elasticjob


为什么要多机/集群/分布式?

本质作用是提高处理速度。

因为一个线程太慢,就线程池/多线程。

但是,多线程是单机,不能集群/分布式处理任务,而且不冲突,即同一个数据不会被不同机器的线程处理多次。

最佳实践

现在用的最多的是xxljob,github star都1万多了。早期xxljob和elasticjob差不多,elasticjob现在都不怎么更新了。

而且xxljob满足绝大部分场景,简单易用。

quartz是早期的框架,elasticjob适合海量数据和特别复杂的情况。

核心

架构图

从这个架构图,可以看到,集群/分布式/水平扩展。通过调度中心的分片来分发不同的数据给不同的机器处理。

调度中心集群

作用 分片的集群。可用单机也可以集群——作用是调度器/注册中心的高可用。

执行器集群

作用 具体执行任务的机器。集群。可以单机也可以集群。

注册中心

分片

负载均衡

总结

一个分配,一个执行。

部署

Nginx——调度中心集群——执行器集群

参考

fdx321.github.io/2017/07/29/…