PowerJob官方将它定位为开源的分布式计算与任务调度框架,核心能力包括定时调度、分布式执行、Map/MapReduce、DAG 工作流、失败重试、节点水平扩展等。
1. 整体架构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| ┌──────────────────────┐ │ PowerJob UI │ │ 任务 / 调度 / 日志 │ └──────────┬───────────┘ │ HTTP ▼ ┌──────────────┐ ┌──────────────────────┐ │ 业务系统 │ ──API──► │ PowerJob Server │ │ Spring Boot │ │ │ └──────────────┘ │ 调度中心 / Master │ │ 任务管理 / 工作流 │ │ Worker管理 / 监控 │ └───────┬───────┬──────┘ │ │ ┌─────────────┘ └─────────────┐ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ PowerJob Worker │ │ PowerJob Worker │ │ App A │ │ App A │ │ │ │ │ │ TaskProcessor │ │ TaskProcessor │ └─────────────────┘ └─────────────────┘ │ │ ▼ ▼ 业务数据库/Redis 业务数据库/Redis
|
2. 最核心的两个角色:Server + Worker
Server
Server 是调度控制面。
主要负责:
- 任务定义
- CRON / 固定频率 / 固定延迟调度
- Worker 注册与发现
- 任务分发
- 执行状态管理
- 重试
- 失败处理
- 工作流DAG
- 任务日志
- UI/API
- 集群管理
Worker
Worker是真正执行任务的地方。
例如你的业务系统:
1 2 3
| @SpringBootApplication public class OrderApplication { }
|
引入 PowerJob Worker 后:
1 2 3 4 5 6 7 8 9 10 11
| OrderApplication │ ├── OrderService ├── PaymentService ├── UserService │ └── PowerJob Worker │ ├── Processor A ├── Processor B └── Processor C
|
Worker 启动后注册到 PowerJob Server。
Server 决定:
1 2 3 4 5 6 7 8 9
| 这个任务 ↓ 应该由哪个Worker执行 ↓ Worker接收 ↓ 调用Processor ↓ 业务代码真正执行
|
Worker 作为任务实际执行节点,并支持通过增加 Server 和 Worker节点实现水平扩展和高可用。
支持四种执行模式
| 模式 |
含义 |
| Standalone |
单节点执行 |
| Broadcast |
所有 Worker 都执行 |
| Map |
把任务拆分到多个 Worker |
| MapReduce |
Map → Reduce 分布式计算 |
3.PowerJob应用场景
3.1定时任务
例如:
官方支持CRON、固定频率、固定延迟以及OpenAPI 触发。
3.2延迟任务
或者:
3.3分布式批处理
1 2 3 4 5 6 7
| 10 亿用户 ↓ 拆分 ↓ 100 个 Worker ↓ 并行计算
|
这是 PowerJob 比单纯 Scheduler 更重要的能力。
3.4工作流
1 2 3 4 5 6 7 8 9 10 11
| 数据采集 ↓ 数据清洗 ↓ 数据计算 ↓ 数据聚合 ↓ 报表 ↓ 通知
|
3.5OpenAPI 动态触发
也可以:
1 2 3 4 5 6 7 8
| 业务系统 │ │ HTTP/OpenAPI ▼ PowerJob │ ▼ 立即执行任务
|
官方将 OpenAPI 作为一种调度策略,用于自定义触发。
4.Quartz vs XXL-JOB
| 能力 |
Quartz |
XXL-JOB |
PowerJob |
| 定时调度 |
✓ |
✓ |
✓ |
| Web 管理 |
△ |
✓ |
✓ |
| 集群调度 |
✓ |
✓ |
✓ |
| Worker 模型 |
△ |
✓ |
✓ |
| 广播 |
△ |
✓ |
✓ |
| Map |
✗ |
△ |
✓ |
| MapReduce |
✗ |
✗ |
✓ |
| DAG |
△ |
✓ |
✓ |
| 分布式计算 |
弱 |
中 |
强 |
| 延迟任务 |
△ |
✓ |
✓ |
| OpenAPI |
△ |
✓ |
✓ |
PowerJob 的定位不是单纯“任务调度中心”,而是“分布式任务调度 + 分布式计算”。
5.调度过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| ┌───────────────┐ │ Schedule │ │ 调度 │ └───────┬───────┘ │ ▼ ┌───────────────┐ │ Dispatch │ │ 分发 │ └───────┬───────┘ │ ┌──────────┼──────────┐ ▼ ▼ ▼ Worker Worker Worker │ │ │ └──────────┼──────────┘ ▼ ┌───────────────┐ │ Execution │ │ 执行 │ └───────┬───────┘ │ ▼ ┌───────────────┐ │ Result/State │ │ 状态/结果回传 │ └───────────────┘
|