为了账号安全,请及时绑定邮箱和手机立即绑定

实现一个分布式调度系统

标签:
Java
2018年的最后一天,是结束,也是开始,2019年希望有更大的收获。大家元旦快乐!!!

前言

  • 工作中经常会用到调度功能,可以依赖现有框架简单的实现一个。之前看过一些开源的调度框架比如 xxl-job,已经非常的成熟。这里也会借鉴其思想自己来学习实现一个相对简单的调度系统。

整体流程

- 项目分为 管理节点和 工作节点
- 在管理节点可以配置任务调度信息
- 启动工作节点,成功后,会向zk进行注册节点信息(可以水平扩展)
- 管理节点选用quartz进行调度,并且通过loadbalance策略选择合适的工作节点。
- 管理节点通过代理类向选择的工作节点发送RPC请求,并且提供了Ha策略,处理失败的情况
- 工作节点接收到请求后执行真正的调度业务

基础模块搭建

  • common::提供通用的一些工具和相关类
  • core::核心实现(包括zk、transport 等功能)
  • entity::数据库和实体类相关
  • manager: 管理节点(包括ha,loadbalance等功能)
  • demo-executor:提供一个简单的工作节点DEMO

实现流程

  • 这里会一步步的来完善我们的系统,主要包括下面几个功能
(1) springboot+quartz整合
 使用quartz的集群模式
 和springboot 进行整合

(2) zk 注册中心的实现
Auto Configureation
服务端启动后创建zkClient,客户端启动后也需要创建zkClient
注册服务,发现服务,监听服务的注册

(3) 高可用 客户端负载均衡
 负载均衡策略
 ha的策略

(4) transport层的实现
- 使用Netty实现RPC的通信

(5) 业务相关的实现
- 调度流程,日志输出等

总结

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
6396
获赞与收藏
157

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消