wed-job

分布式调度框架 TBSchedule 3.2.18重置版
授权协议 Apache-2.0
开发语言 Java
所属分类 程序开发、 作业/任务调度
软件类型 开源软件
地区 国产
投 递 者 李明贤
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

wed-job

tbschedule-wed 正式更名为 wed-job 并发布第一个正式版

Gitter 

基于 TBSchedule 官方 3.2.18 的重置版。TBSchedule 具有框架轻、零入侵、效率高(高过 elastic-job 和 xxl-job)等诸多特点,无奈官方于 3.3.3.2 版本后停止了升级与 BUG 修复。如此好的分布式任务调度框架弃之可惜,所以就让作者来捡个便宜吧。

重置版主要在官方原版的基础上优化了以下几点:

  1. 任务项状态管理全部改为顺序操作,牺牲一定的并发效能提升稳定性
  2. 解决在以往的实践使用中(大量 job 共用一个调度中心切 job 执行频繁场景)官方版偶尔出现任务不能正确停止与注销,造成任务项死循环执行,CPU 满负载且产生大量脏日志的问题;
  3. 优化在 ZooKeeper 集群不稳定时,策略与任务的注册与反注册

用户手册

基础用法与官方版一致,新手可以参考:https://my.oschina.net/wednesday/

构建

git clone https://github.com/hungki/wed-job
mvn clean package

RELEASE NOTE

Jul 17 2019-1.0.1_RELEASE

  1. maven坐标变更
<dependency>
    <groupId>com.wednesday</groupId>
    <artifactId>wed-job</artifactId>
    <version>1.0.1</version>
</dependency>
  1. 修复因使用 Timer 类自身误差 BUG 在高频 SLEEP 模式下调用任务,当误差时间累积超过 SLEEP 时间时任务变成无限执行的问题(使用的 ScheduledThreadPoolExecutord 代替);
  2. 将原生 ZooKeeper api 替换为 CuratorFramework 以修复因官方最后版本 zk 重连机制不健全引起的任务执行 server 假死无任何日志输出的问题;

Feb 28 2019-1.0.1_GA:

  1. 修复 Sleep 时间短(ex:500ms)下,使用 Timer 类 BUG 导致 Task 停摆的问题
  2. 使用 CuratorFramework 代替官方 ZooKeeper API 已获得更好的链接稳定性已经重连机制
  3. 更新 Java 支持到[1.7,1.8)
  4. 整理项目结构

Nov 5 2018-1.0.0:

  1. job 实现器追加 pageNum 参数(根据 eachFetchDataNum 和 FetchCount 计算得出)
  2. 修订文档
  3. 变更软件名及版本号

TODO

  1. add:新版 Console
  2. fix:彻底修复高频词运行下任务假死的问题
  3. feature:提供数据库注册中心的并行版本,可视化更强,效率会比目前版本低一些但是能避免ZooKeeper对网络的高依赖,性能与稳定的平衡交给用户选择。
  4. feature:提供便捷的子任务功能,目前版本子任务需要大量代码实现且不具备可视化能力,但是没有任务编排怎么又好意思成为一个完整的任务调度中心呢?
  • 一、Quartz中设置cron时间表达式 Quartz中设置cron时间表达式的格式为: <!-- s m h d m w(?) y(?) -->,   分别对应: 秒、分、小时、日、月、周、年。 1.每天什么时候执行   每天23:59:00开始执行,cron表达式为:0 59 23 * * ?   每天11:01,11:02,11:03; 12:01,12:02,12:03分执行任务,cron

  • cron表达式是由6个或者7个域通过空格组合成的字符串。 示例: 每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 在26分、29分、33分执行一次:0 26,29,33 * * * ? 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ? 这7个域按顺序分别为:  

  • xxl-job的表达式由7个部分组成,例如: 注:/与5算是一个整体 秒数 分钟 小时 日期 月份 星期 年份(可为空)} */5 * * * * ? 各个位置的取值范围 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 可以用0-11 或用字符串 “JA

  • #1.cron:cron表达式,用于配置作业触发时间 #2.shardingTotalCount:作业分片总数 #3.shardingItemParameters:分片序列号和参数用等号分隔,多个键值对用逗号分隔分片序列号从0开始,不可大于或等于作业分片总数如:0=a,1=b,2=c #4.maxTimeDiffSeconds:最大允许的本机与注册中心的时间误差秒数如果时间误差超过配置秒数则作业启

  • 原文:gcdd1993.github.io/分布式任务调度XXL-… 简介 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 官方文档很完善,不多赘述。本文主要是搭建XXL-JOB和简单使用的记录。 搭建xxl-job-admin管理端 运行环境 Ubuntu 16.04 64位 Mysql 5.7

  • 步骤 1. 授权 SQL> grant create job to zxin_jzfp; 授权成功。 SQL> grant manage scheduler to zxin_jzfp; 授权成功。 SQL> grant update any table to zxin_jzfp; 授权成功。 SQL> grant select any table to zxin_jzfp; 授权成

  • 7个部分组成 秒数 分钟 小时 日期 月份 星期 年份(可为空)} */5 * * * * ? 每部分范围 及 符号解释 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 可以用0-11 或用字符串 “JAN, FEB, MAR, APR, MAY, JU

  • Kubernetes集群提供了Job和CronJob两种资源对象 Job负责处理任务,即仅执行一次的任务,它保障批处理任务的一个或多个Pod成功结束 CronJob就是在Job是哪个加上了时间调度。 一、Job演示 这里使用job资源对象创建一个任务,用于倒计时: [root@k8s-01 ~]# cat job.yaml apiVersion: batch/v1 kind: Job metad

  • 1.需求背景:微信小程序秒杀模块有个订阅功能,当用户点击完订阅后,要在活动开始的前10分钟调用微信接口发送订阅消息给用户 2.思路:本地创建秒杀订阅表,当用户添加或者取消时对应表中数据的增删,添加数据时动态创建一条xxljob的定时任务,取消时删除它 xxl-job有两种创建任务的方式,第一种就是我们使用xxl-job的图形化页面,第二种直接调用xxl-job的接口(其实图形化页面也是使用了调用接

  • 问题: 页面点击执行一次,去日志里看到是调度失败,调度日志为null 调度任务到了执行时间,没有自动执行 找原因: 查看任务组查看服务是否注册上 自己直接在数据库新增的调度任务,是否有字段漏填的,比如glue_updatetime字段 检查cron是否正确,如果不正确,启动任务的时候会提示Cron不合法 附:cron表达式(原文地址:http://t.zoukankan.com/xiaomaoma

  • xxl-job的表达式由7个部分组成,例如: 注:/与5算是一个整体 秒数 分钟 小时 日期 月份 星期 年份(可为空)} */5 * * * * ? 各个位置的取值范围 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 可以用0-11

  • 案例  job 一次性任务 apiVersion: batch/v1 kind: Job metadata: name: pi #做个圆周率 spec: template: spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bp

 相关资料
  • 一、MapReduce概述 Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。 MapReduce 作业通过将输入的数据集拆分为独立的块,这些块由 map 以并行的方式处理,框架对 map 的输出进行排序,然后输入到 reduce 中。MapReduce 框架专门用于 <key,value> 键值

  • Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团队已经解散(参见http://www.oschina.net/news/55059/druid-1-0-9 中的评论),反到是

  • 类型 实现框架 应用场景 批处理 MapReduce 微批处理 Spark Streaming 实时流计算 Storm

  • 其于职业介绍所、工头、工人、工作模型的分布式计算框架。 职业介绍所有两种,一种是本地职业介绍所,一种是远程职业介绍所。顾名思义,本地职业介绍所就是在当前计算机上的,远程职业介绍所用于连接到远程职业介绍所的。 工人、工头都可以加入到职业介绍所,所以加到本地或远程种业介绍所都是可以的。 在同一个职业介绍所中,具有同样类型的工人、工头和工作都存在的时候,工作就可以被安排下去执行。当然,有两种安排方式,一

  • 本文向大家介绍Quartz.Net调度框架配置解析,包括了Quartz.Net调度框架配置解析的使用技巧和注意事项,需要的朋友参考一下 在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知等等。大家通过windows计划任务,windows服务等都实现过此类任务,甚至实现过自己的配置定制化的框架。那今天就来介绍个开源的调度框架Quartz.Net(主要介绍配置的实现

  • 主要内容:1.RPC流水线工程,2.RPC 技术选型,3.如何设计 RPC1.RPC流水线工程 ① Client以本地调用的方式调用服务 ② Client Stub接收到调用后,把服务调用相关信息组装成需要网络传输的消息体,并找到服务地址(host:port),对消息进行编码后交给Connector进行发送 ③ Connector通过网络通道发送消息给Acceptor ④ Acceptor接收到消息后交给Server Stub ⑤ Server Stub对消息进行解码,