nono-task-dispatcher - 基于zookeeper的分布式定时任务调度系统

jopen 9年前

nono-task-dispatcher

基于zookeeper的分布式定时任务调度系统

# 设计背景 在分布式环境下,为做到负载均衡,应用常常会部署到多台机器上,但是有些程序只需要在同一时刻,只在其中的某一台执行一次就可以了(例如大量的定时任务),这些会影响机器水平扩展,为了更好的面向SOA,解决定时任务的分布式调度问题,提高系统的可维护性,可扩展性,我们需要面临解耦任务调度和具体的任务执行。大多数定时任务都是使用quartz框架的,方便,但是面临框架的整合和依赖,无法做到解耦,通过分布式调度系统,我们可以实现定时任务的热更改(不停机改变定时任务的周期等),任务的均衡分布到各调度机器上,很好的做到分布式调度和软件解耦,而且能够对定时任务执行情况、调度机器进行简单监控。

#功能对象

User:负责可视化展示

admin:处理前台任务管理请求

zookeeper:存放具体任务计划,新增、删除、修改任务均对应为zookeeper节点变化,任务分配和具体调度

scheduler:解析任务计划,调用具体任务执行服务,更新任务状态、持久化任务状态信息

worker:具体任务执行逻辑,暴露restful服务的url给scheduler,(具体的业务实现)

#核心数据结构

SchedulerTask(entity):zookeeper数据节点维护的对象

项目地址: https://github.com/nonobank-architect/nono-task-dispatcher