分布式任务调度框架 micro-job

Apache
Java
跨平台
2019-02-25
恒宇少年

快速开始

micro-job是一款分布式任务调度执行框架,内部通过各个组件的Jersey共享出的Rest路径进行数据访问。

名词解释:

consumer -> 任务消费节点

schedule -> 任务调度器

provider -> 任务生产者

registry -> 任务注册中心

任务注册中心(registry)

registry是任务注册中心,在整个生态圈内担任着各个组件注册节点的任务,任务注册中心实现方式是多样化的,目前包含:memoryzookeeperredisconsul等。

通过idea、eclipse工具创建SpringBoot项目并添加如下依赖到pom.xml文件内。

<dependency>
    <groupId>com.github.hengboy</groupId>
  <artifactId>spring-boot-starter-registry-memory</artifactId>
  <version>{lastVersion}</version>
</dependency>

resources资源目录下添加application.yml配置文件,配置内容如下所示:

server:
   port: 9000
hengboy:
  job:
    registry:
      # 任务注册中心节点注册方式
      away: memory

任务调度器(schedule)

schedule是任务调度器,每一个任务的创建都是通过调度器进行分配执行,分配过程中根据消费节点的负载均衡策略配置进行不同消费者节点任务消费。

在生产任务时,也会根据调度器的负载均衡策略来进行筛选执行任务调度的调度器节点

通过idea、eclipse工具创建SpringBoot项目并添加如下依赖到pom.xml文件内。

<dependency>
    <groupId>com.github.hengboy</groupId>
    <artifactId>spring-boot-starter-schedule</artifactId>
    <version>{lastVersion}</version>
</dependency>

resources资源目录下添加application.yml配置文件,配置内容如下所示:

server:
   port: 8081
hengboy:
  job:
    registry:
      # 保持与任务注册中心节点注册方式一致即可
      away: memory
    schedule:
      # 内存方式调度器处理任务队列以及任务日志的存储
      job-store-type: memory  

任务消费节点(consumer)

consumer是任务消费者执行节点,任务由consumer进行定义以及上报,当schedule调用消费者执行任务请求时,会自动根据jobKey来执行对应的任务逻辑方法。

通过idea、eclipse工具创建SpringBoot项目并添加如下依赖到pom.xml文件内。

<dependency>
  <groupId>com.github.hengboy</groupId>
  <artifactId>spring-boot-starter-consumer</artifactId>
  <version>{lastVersion}</version>
</dependency>

resources资源目录下添加application.yml配置文件,配置内容如下所示:

server:
   port: 8082
hengboy:
  job:
    registry:
      # 保持与任务注册中心节点注册方式一致即可
      away: memory

任务定义示例

我们来定义一个简单的Job,示例如下所示:

@Job(jobExecuteAway = JobExecuteAwayEnum.ONCE)
public class TestJob implements MicroJob {
    /**
     * logger instance
     */
    static Logger logger = LoggerFactory.getLogger(TestJob.class);

    @Override
    public JobExecuteResult execute(JobExecuteParam jobExecuteParam) throws JobException {
        logger.info("执行Key:{},执行参数:{}", jobExecuteParam.getJobKey(), jobExecuteParam.getJsonParam());
        return JobExecuteResult.JOB_EXECUTE_SUCCESS;
    }
}

在上面定义的Job对应的JobKeytestJob.

任务生产节点(provider)

provider是任务生产节点,由业务方进行添加依赖并执行MicroJobProvider.newXxxJob调用创建任务,如:创建订单后执行发送邮件通知操作。

通过idea、eclipse工具创建SpringBoot项目并添加如下依赖到pom.xml文件内。

<dependency>
  <groupId>com.github.hengboy</groupId>
  <artifactId>spring-boot-starter-provider</artifactId>
  <version>{lastVersion}</version>
</dependency>

resources资源目录下添加application.yml配置文件,配置内容如下所示:

server:
  port: 8083
hengboy:
  job:
    registry:
      # 保持与任务注册中心节点注册方式一致即可
      away: memory

任务执行示例

@RunWith(SpringRunner.class)
@SpringBootTest
public class ProviderTester {
    /**
     * 注册任务提供者
     */
    @Autowired
    private MicroJobProvider microJobProvider;

    @Test
    public void newJob() {
        // 创建的任务仅执行一次
        microJobProvider.newOnceJob(OnceJobWrapper.Context()
                // 对应consumer内定义任务的jobKey,默认为类名首字母小写
                .jobKey("testJob")
                // 自定义的任务队列key,可以准确定位任务并操作暂停、删除等操作
                .jobQueueKey(UUID.randomUUID().toString())
                // 参数,任意类型参数,consumer消费时会转换为json字符串
                .param(new HashMap() {
                    {
                        put("name", "admin");
                    }
                })
                .wrapper());
    }
}

测试流程

  1. 启动任务注册中心
  2. 启动任务调度中心
  3. 启动任务消费者节点
  4. 执行ProviderTester#newJob单元测试方法
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

MicroJob 任务注册中心添加 Nacos 支持,升级 0.0.3 版本

点击查看MicroJob官方文档:http://job.yuqiyu.com Nacos方式 Nacos是阿里巴巴提供的一款微服务一系列解决方案,其中服务注册可以作为micro-job的registry实现方式的一种。 添加依赖 <dep...

02/28 15:19

micro-job 0.0.2 发布,分布式任务调度框架

micro-job 0.0.2 发布了,更新记录 v.0.0.2.RELEASE(2019-2-21) 任务消费者定义JobKey上报注册中心 调度器拉取所有的JobKey 调度器添加memory方式 详细使用文档请访问官网:http://job.yu...

02/25 11:40

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

gomicor微服务系列之一

这是在新公司接触微服务框架(micro框架)后的总结,在未来,我将会较深入的研究go和微服务,之后也会陆陆续续的发布一些文章,如果想直接查阅源码或者通过demo学习的,可以访问[ricoder_de...

2017/10/25 20:17
17
0
Plastic Surgery

Plastic Surgery include Cosmetic Surgery and Reconstructive Surgery. Usually , The Cosmetic Surgery is took by the person who want to be more beautiful , but The Reconstructive ...

2016/07/14 18:25
4
0
异步 JavaScript - 事件循环

简评:如果你对 JavaScript 异步的原理感兴趣,这里有一篇不错的介绍。 JavaScript 同步代码是如果工作的 在介绍 JavaScript 异步执行之前先来了解一下, JavaScript 同步代码是如何执行的。...

2018/12/05 22:40
10
0
Spark学习脑图

自己学习Spark的一些笔记,纯理论,无实践……

2016/01/15 20:00
181
1
各网络服务端口一览——默认端口速查表(查询默认端口)

各网络服务端口一览——默认端口速查表(查询默认端口)

2015/06/02 10:19
56
0
微信小程序倒计时组件

适用于电商应用的限时团购、商品秒杀等

2016/10/06 19:04
1K
0
Ubuntu12.04 Skype4.2 提示Skype can't connect,安装Skype4.3

最近几天Skype突然不能登录啦,以为是自己密码记错啦,重置啦一下密码,发现仍然提示”Skype can't connect“,我的版本是Ubuntu12.04 Skype4.2 尝试啦很多办法仍然不能解决,后面在论坛上看...

2015/04/02 16:24
18
0
go-micro中文资料

[一、Micro - 微服务生态系统](http://btfak.com/%E5%BE%AE%E6%9C%8D%E5%8A%A1/2016/03/17/introduction/) [二、Micro - 微服务工具箱](http://btfak.com/%E5%BE%AE%E6%9C%8D%E5%8A%A1/2016...

2018/06/04 11:16
96
0
.Net Micro Framework 快速入门

Microsoft .NET Micro Framework 将 .NET 的可靠性和效率与 Visual Studio的高生产率结合起来,以针对价格较低、资源受限的小型设备开发应用程序,可帮助人们使用熟悉的 Visual Studio 工具来...

2014/05/27 10:29
132
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部