{"id":19678389,"url":"https://github.com/v-mars/jobor","last_synced_at":"2026-01-28T04:25:51.302Z","repository":{"id":44749912,"uuid":"353556763","full_name":"v-mars/jobor","owner":"v-mars","description":"支持秒级分布式定时任务系统, A high performance distributed task scheduling system, Support multi protocol scheduling tasks","archived":false,"fork":false,"pushed_at":"2024-09-12T05:50:37.000Z","size":17596,"stargazers_count":124,"open_issues_count":0,"forks_count":28,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-11-11T17:47:57.052Z","etag":null,"topics":["cron","cronjob","dispatcher","go","golang","grpc","high-availability","jobs","quartz","raft","scheduer","task"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/v-mars.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-01T03:04:56.000Z","updated_at":"2024-11-06T20:44:19.000Z","dependencies_parsed_at":"2023-11-07T05:04:15.724Z","dependency_job_id":"c4b0cdc5-11fd-43c7-9316-a9da41087b26","html_url":"https://github.com/v-mars/jobor","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v-mars%2Fjobor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v-mars%2Fjobor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v-mars%2Fjobor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/v-mars%2Fjobor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/v-mars","download_url":"https://codeload.github.com/v-mars/jobor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251432574,"owners_count":21588606,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cron","cronjob","dispatcher","go","golang","grpc","high-availability","jobs","quartz","raft","scheduer","task"],"created_at":"2024-11-11T17:37:01.497Z","updated_at":"2026-01-28T04:25:51.275Z","avatar_url":"https://github.com/v-mars.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Jobor分布式定时任务\n## ✨ 功能特性v3.0.4\n- 为简化使用和理解成本，之前v2版本的Master Raft模式已经移除，目前Master节点只支持单节点，如有需要请联系作者购买企业版\n- worker高可用，并且通过路由标识，worker可以部署在不同环境，实现不同环境worker的权限控制，worker的系统环境依赖（Python,Golang,执行依赖的文件）\n- 调度server与worker通过grpc通信\n- 支持LDAP（openldap,AD）协议用户认证\n- 支持SSO/OIDC/Oauth协议用户认证\n- 支持多种任务脚本 [ api/restful请求, shell, python3 ] e.g\n- 基于Casbin实现的权限认证\n- 任务日志自动清理功能\n## 提示\nJobor V3已经修复已知所有Bug，并且新增功能：父子任务执行、执行节点组、worker节点支持agent、ssh两种模式、任务归属负责人、支持国产[**HTTP,RPC框架CloudWeGo（字节跳动）**](https://github.com/cloudwego/)、支持golang任务类型执行。\n\n## 架构图\n![avatar](./img/structv3.png)\n\n## 部署(推荐使用docker模式运行)\n```text\n第一步，准备好Master/Server和Worker服务启动配置：\nserver: conf/config.yaml\nworker: conf/worker.yaml\n\n第二步，拉取依赖镜像：\ndocker pull iocean/jobor:server-v3.0.5\ndocker pull iocean/jobor:worker-v3.0.4\ndocker pull iocean/jobor:worker-go-v3.0.4\ndocker pull iocean/jobor:worker-py-v3.0.4\n\n第三步，启动Master/Server和Worker服务：\nServer/Master:\ndocker run -itd --name jobor-server --restart=always --net=host -v /etc/localtime:/etc/localtime -v ${HOST_DIR}/conf:/data/conf -v ${HOST_DIR}/log:/data/log --net=host iocean/jobor:server-v3.0.5\n通用 Worker:\ndocker run -itd --name jobor-worker --restart=always --net=host -v /etc/localtime:/etc/localtime -v ${HOST_DIR}/conf:/data/conf -v ${HOST_DIR}/log:/data/log --net=host iocean/jobor:worker-v3.0.4\n执行 Python Worker:\ndocker run -itd --name jobor-worker-py --restart=always --net=host -v /etc/localtime:/etc/localtime -v ${HOST_DIR}/conf:/data/conf -v ${HOST_DIR}/log:/data/log --net=host iocean/jobor:worker-py-v3.0.4\n执行 Golang Worker:\ndocker run -itd --name jobor-worker-go --restart=always --net=host -v /etc/localtime:/etc/localtime -v ${HOST_DIR}/conf:/data/conf -v ${HOST_DIR}/log:/data/log --net=host iocean/jobor:worker-go-v3.0.4\n```\n\n## 构建\n```\ngo build -o ./app ./main.go\ngo build -o ./app ./cmd/worker/main.go\n```\n\n## 启动Server(推荐使用docker模式运行)\n```\ngo build -o ./app ./main.go\n\n./app -c ./conf/config.yaml\n```\n\n\n## 启动Worker(推荐使用docker模式运行)\n```\ngo build -o ./app ./cmd/worker/main.go\n./app -c ./conf/worker.yaml\n```\n\n## 默认\nusername: admin\npassword: admin\n\n## DB\n```\n数据库推荐使用：MySQL8.0\n字符集：utf8mb4\n在配置文件最后一行粘贴以下语句\n/etc/mysql/conf.d/mysql.cnf\n\n[mysqld]\nsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\n\n```\n\n\n## Jobor预览\n![avatar](./img/dash3.png)\n![avatar](./img/task-list3.png)\n![avatar](./img/log3.png)\n![avatar](./img/log-detail3.png)\n![avatar](./img/worker3.png)\n\n## TODO \n### task\n- [x] 支持server/controller/master(通过raft一致性算法)的高可用，一个Raft集群通常包含2*N+1个服务器，允许系统有N个故障服务器（企业版）。\n- [x] ldap(支持openldap,AD 认证)\n- [x] SSO/OIDC/Oauth(支持SSO/OIDC/Oauth认证)\n- [x] server \u003c-- gRPC --\u003e worker\n- [x] task abort\n- [x] task timeout\n- [x] api/restful [GET, POST, PUT, DELETE] task\n- [x] shell task\n- [x] python3 task\n- [x] golang task\n- [x] father task\n- [x] children task\n- [x] worker 预执行（如：执行python 前先执行 pip install xx）\n- [x] worker 节点支持：agent和ssh两种模式\n- [x] 路由标识多选\n- [ ] 任务缓存执行\n\n## 🤝 特别感谢\n- golang 1.20\n- [**hertz （字节http框架）**](https://github.com/cloudwego/)\n- hertz-swagger\n- [**kitex （字节rpc框架）**](https://github.com/cloudwego/)\n- gorm\n- casbin\n- mysql 8.0\n- redis 5\n- 等\n\n## 支持\n1、希望大家多多支持，给项目一个star\n\n2、该项目花费了作者大量时间，如果你觉的该项目对你有用，希望可以友情赞助一下\n\n\u003cimg src=\"./img/wechat.jpeg\" width=200 height=200\u003e\n\n## 开源、企业版区别\n| 功能         | 开源 | 企业 |\n|------------| - | - |\n| 前端源码       | 静态产物 | 支持 |\n| Master高可用  | - | 支持 |\n| Worker高可用  | 支持 | 支持 |\n| LDAP认证     | 支持 | 支持 |\n| OIDC认证     | 支持 | 支持 |\n| Shell任务    | 支持 | 支持 |\n| API/HTTP任务 | 支持 | 支持 |\n| Python任务   | 支持 | 支持 |\n| Golang任务   | 支持 | 支持 |\n| 父子任务       | 支持 | 支持 |\n| 定制功能       | Issues | 立刻 |\n| 服务支持       | Issues | 微信群 |\n\n\n## 交流/商务联系\n```\n如果您只是使用本项目的话，您可以在提出您使用中需要改进的地方，我会尽快修改。\n如果您是想基于此项目二次开发的话，您可以提出您在开发过程中的任何疑问，我会尽快答复并讲解。\n```\n\u003cimg src=\"./img/Wechatid.jpeg\" width=200 height=200\u003e\n\n## 还可提供关联其他常用系统服务\n* 还可提供SSO（OIDC）统一认证服务\n* 运维CMDB系统服务\n* 运维工单服务系统\n* 持续集成发布系统，支持k8s、docker、虚拟机、静态资源发布，支持当下流程的染色发布、灰度发布、迭代流水线发布等，代码打包支持原生命令行、Dockerfile、Hook提交等构建方式\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv-mars%2Fjobor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fv-mars%2Fjobor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fv-mars%2Fjobor/lists"}