# 分布式定时任务程序 **Repository Path**: MrL112/scheduleServer ## Basic Information - **Project Name**: 分布式定时任务程序 - **Description**: 基于zookeeper实现的分布式定时任务程序。 - **Primary Language**: Java - **License**: BSD-2-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2019-05-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 分布式定时任务程序 #### 介绍 基于zookeeper实现的分布式定时任务程序。 #### 软件架构 包含: 1.zookeeper 2.quartz 3.curator 4.rabbitmq 5.springboot 6.redisson #### 描述 1.是通过curator内置的选举类来操作选举master。 2.master注册定时任务 3.当有接入worker时,会开始将任务发送给mq。 #### 使用 1.配置zookeeper的连接地址(目前写死在AbstractInitParam类中),在resources/properties中配置redis和rabbitmq。 2.编写定时任务,需要使用注解@Schedule标注类,@ScheduleGetBeanFromMethod标注Bean方法,具体请查看com.l.scheduleserver.exampleScheduleBean包下的例子。 3.只会有一个leader,其他新接入的都为worker,worker动态接入。 #### 使用说明 当前程序只完成了分布的分配与注册定时任务的获取,定时任务只能写在Java类中继承Job接口。 #### 剩余需要完成项: 1.zookeeper的连接配置后续支持:properties格式解析。 2.增加告警提醒:邮件提醒。 3.新增elasticsearch,用于对打印日志搜索,降低维护成本。 4.新增脚本执行(优先级最高)。 #### 目前的问题 1.目前master只能为1个,所以当注册的任务过多时,会成为瓶颈。 2.目前无法想到如何才能使得mq中的请求同步,在执行任务会重复调用。 3.目前只能写成代码的定时任务,局限性太大。当前的模式传输模式应该是对于sql脚本、shell脚本等才行。(目前这块还需要学习,无法实现) #### V1.0 已初步完成主要逻辑。 #### V1.1 改变传输的逻辑,将原来的http调用注册,改为将任务发送至mq中,worker监听执行。