All Projects → v-mars → jobor

v-mars / jobor

Licence: AGPL-3.0 license
支持秒级分布式定时任务系统, A high performance distributed task scheduling system, Support multi protocol scheduling tasks

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to jobor

job-plus
Job Plus项目是基于SpringBoot+Vue的轻量级定时任务管理系统
Stars: ✭ 17 (-67.31%)
Mutual labels:  task, cron, quartz
linda
Linda is a simple dispatcher library.
Stars: ✭ 12 (-76.92%)
Mutual labels:  task, cron, dispatcher
josk
🏃🤖 Scheduler and manager for jobs and tasks in node.js on multi-server and clusters setup
Stars: ✭ 27 (-48.08%)
Mutual labels:  task, cron, jobs
Ppgo job
PPGo_Job是一款可视化的、多人多权限的、一任务多机执行的定时任务管理系统,采用golang开发,安装方便,资源消耗少,支持大并发,可同时管理多台服务器上的定时任务。
Stars: ✭ 1,152 (+2115.38%)
Mutual labels:  task, cron
Xxl Job
A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
Stars: ✭ 20,197 (+38740.38%)
Mutual labels:  task, quartz
Kob
中心化的作业调度系统,定义了任务调度模型,实现了任务调度的统一管理和监控。
Stars: ✭ 393 (+655.77%)
Mutual labels:  task, quartz
Kommander Ios
A lightweight, pure-Swift library for manage the task execution in different threads. Through the definition a simple but powerful concept, Kommand.
Stars: ✭ 167 (+221.15%)
Mutual labels:  task, dispatcher
Dottask
Simple and easy go task framework, support loop & cron & queue
Stars: ✭ 124 (+138.46%)
Mutual labels:  task, cron
Scheduler
Task scheduler for Golang
Stars: ✭ 171 (+228.85%)
Mutual labels:  task, cron
SilkierQuartz
SilkierQuartz can host jobs using HostService and Provide a web management tools for Quartz !
Stars: ✭ 263 (+405.77%)
Mutual labels:  cron, quartz
EasyCronJob
This repository provides easy cron job to your application on IHostedService.
Stars: ✭ 66 (+26.92%)
Mutual labels:  cron, cronjob
croner
Trigger functions and/or evaluate cron expressions in JavaScript. No dependencies. Most features. All environments.
Stars: ✭ 169 (+225%)
Mutual labels:  task, cron
Springboot Learn
🌹springboot常用框架整合示例,涉及多种网站监控,数据缓存,网络通信,持久层,权限管理,常用工具等
Stars: ✭ 270 (+419.23%)
Mutual labels:  task, quartz
Fennel
A task queue library for Python and Redis
Stars: ✭ 24 (-53.85%)
Mutual labels:  task, jobs
kube-job-cleaner
DEPRECATED: Delete complete/failed Kubernetes jobs after one hour
Stars: ✭ 99 (+90.38%)
Mutual labels:  jobs, cronjob
Chronus
Chronus是360金融技术团队基于阿里开源项目TBSchedule重写的分布式调度。
Stars: ✭ 166 (+219.23%)
Mutual labels:  task, jobs
Sundial
A Light-weight Job Scheduling Framework
Stars: ✭ 230 (+342.31%)
Mutual labels:  cron, quartz
schedule-rs
An in-process scheduler for periodic jobs. Schedule lets you run Rust functions on a cron-like schedule.
Stars: ✭ 93 (+78.85%)
Mutual labels:  task, cron
qless-php
PHP Bindings for qless
Stars: ✭ 25 (-51.92%)
Mutual labels:  task, jobs
time.clj
time util for Clojure(Script)
Stars: ✭ 45 (-13.46%)
Mutual labels:  cron, cronjob

Jobor分布式定时任务

功能特性

  • 通过raft一致性算法,实现多server/controller/master的高可用,不同于传统的分布式只实现worker端的高可用,调度端只能是单点来避免同一任务同一时间被重复调度执行,从而达到了整个服务(Server,Worker)的高可用,保证了系统的健壮稳定性。
  • worker高可用,并且通过路由标识,worker可以部署在不同环境,实现不同环境worker的权限控制,worker的系统环境依赖(Python,Golang,执行依赖的文件)。
  • 调度server与worker通过grpc通信。
  • 支持LDAP(openldap,AD)协议用户认证。
  • 支持多种任务脚本 [ api/restful请求, shell, python3 ] e.g
  • 基于Casbin实现的权限认证

架构图

avatar

构建

make Makefile build
make Makefile build-linux
make Makefile build-mac
or
go build

二进制部署

下载链接:https://github.com/v-mars/jobor/releases
tar -zxvf jobor-2.0.2.tar.gz
cd jobor-2.0.1
server:
./bin/jobor server -c configs/config.toml
worker:
./bin/jobor worker -c configs/worker.toml

命令

./app -h
Usage:
   [command]

Available Commands:
  worker      Start Run jobor worker
  help        Help about any command
  server      Start Run Jobor Server
  version     Print the version of Jobor

Flags:
  -h, --help   help for this command

Use " [command] --help" for more information about a command.

启动Server

 
./app server -h
Welcome User Jobor Server

Usage:
   server [flags]

Examples:
## 启动命令 ./app server -p 5000 -c ./configs/config.toml -f ./logs

Flags:
  -c, --config string   config file, example: ./configs/config.toml
  -h, --help            help for server
  -i, --ip string       服务IP (default "0.0.0.0")
  -l, --level string    日志级别(DEBUG, INFO, WARNING e.g)
  -f, --log string      日志目录(/data/logs e.g) (default "./logs")
  -m, --mode string     启动模式(release, debug, test e.g)
  -p, --port string     服务启动的端口: 5000 (default "5000")

./app server -p 5000 -c ./configs/config.toml -f ./logs

Server端raft配置

# 一个Raft集群通常包含2*N+1个服务器,允许系统有N个故障服务器。
[Raft]
bootstrap = true    # 如果是第一台设置为true,否则为:false
httpAddress = "127.0.0.1:2869"
tcpAddress = "127.0.0.1:2889"   # 不能设置成: 0.0.0.0:2869, 必须是ip:port.
dataDir = "./raft_data"
joinAddress = ""    # 如果是第一台设置为空,否则设置第一台的httpAddress

raft 相关管理API

curl "http://localhost:2869/set?key=ping&value=pong"
curl "http://localhost:2869/get?key=ping"
curl "http://localhost:2869/delete?key=ping"
curl "http://localhost:2869/join"
curl "http://localhost:2869/remove"
curl "http://localhost:2869/stats"
curl "http://localhost:2869/member"
[{"serverID":"127.0.0.1:2869","serverAddress":"127.0.0.1:2889","isLeader":true}]%  

启动Worker

./app worker -c ./configs/worker.toml

默认

username: admin password: admin

DB

字符集:utf8mb4
在配置文件最后一行粘贴以下语句
/etc/mysql/conf.d/mysql.cnf

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Jobor预览

avatar avatar avatar avatar avatar

TODO

task

  • 支持server/controller/master(通过raft一致性算法)的高可用,一个Raft集群通常包含2*N+1个服务器,允许系统有N个故障服务器。
  • ldap(支持openldap,AD 认证)
  • server <-- gRPC --> worker
  • task abort
  • task timeout
  • api/restful [GET, POST, PUT, DELETE] task
  • shell task
  • python3 task
  • golang task
  • server task
  • father task
  • children task
  • 任务缓存执行

🤝 特别感谢

  • golang 1.16.4
  • gin
  • gin-swagger
  • jwt
  • gorm
  • raft
  • casbin
  • mysql 5.7
  • redis 5

支持

1、希望大家多多支持,给项目一个star

2、该项目花费了作者大量时间,如果你觉的该项目对你有用,希望可以友情赞助一下

交流/商务联系

如果您只是使用本项目的话,您可以在提出您使用中需要改进的地方,我会尽快修改。
如果您是想基于此项目二次开发的话,您可以提出您在开发过程中的任何疑问,我会尽快答复并讲解。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].