分布式任务调度 @ Lin | 0001-01-01T00:00:00Z | 2 分钟阅读 | 更新于 0001-01-01T00:00:00Z

任务调度场景

  • 报表,ex:电商系统的每周每月的订单量
  • 日/月结单,ex:支付金融领域的系统
  • 爬虫
  • 数据归档,ex:将三个月前数据归档

非分布式任务调度框架

  • @Scheduled
  • image-20210820144052640

分布式任务调度框架

  • QuartZ
  • ElasticJob , 会使用到mesos中间件,后续有问题可能不好解决。
  • XXL-JOB
  • SchedulerX
  • PowerJob
image-20210819215927961

XXL-JOB

设计思想

将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。

将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。

因此,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性;

系统组成

  • 调度模块(调度中心): 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块; 支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。
  • 执行模块(执行器): 负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效; 接收“调度中心”的执行请求、终止请求和日志请求等。

架构设计

image-20210820145144454

© 2019 - 2024 Lin 的博客

Powered by Hugo with theme Dream.

avatar
关于我

Lin 的 ❤️ 博客

记录一些 🌈 生活上,技术上的事

职业是JAVA全栈工程师