cron-job.org

cron-job.org

高性能分布式定时任务管理平台

cron-job.org是一个开源的分布式定时任务管理平台。该系统采用高性能架构,支持大规模并发HTTP请求处理,提供灵活的任务结果存储和自动清理机制。核心组件包括后端执行引擎、API接口、Web控制台和状态监控页面,便于部署和横向扩展。适用于各种需要可靠定时任务调度和监控的应用场景。

cron-job.orgchronos定时任务执行API前端界面Github开源项目

cron-job.org

构建状态 构建状态 构建状态 构建状态

结构

  • database 包含MySQL数据库结构。
  • chronos 是cron-job.org的定时任务执行守护进程,负责获取任务。
  • protocol 包含系统节点之间交互的接口定义。
  • frontend 包含Web界面。
  • statuspage 包含状态页面UI。
  • api 包含Web界面和状态页面UI使用的服务器API。

chronos

概念

chronos每分钟检查MySQL数据库以收集所有要执行的任务。每分钟会生成一个线程来处理所有任务。实际的HTTP获取是使用出色的curl multi库完成的,libev库用于提供事件循环。结合c-ares解析器,这允许同时进行数千个并行HTTP请求。

cron-job.org支持为用户方便起见存储任务结果。在MySQL数据库中存储结果数据很快会导致I/O瓶颈。(这也有清理旧条目极其昂贵的缺点。)为解决这个问题,chronos将结果存储在每个用户每天的SQLite数据库中。清理旧条目就像删除相应日期的数据库一样简单。

整个软件的优化侧重于性能而不是数据完整性,即当服务器崩溃或发生断电/硬件故障时,任务历史很可能会丢失。由于这本来就是易失性数据,因此不被认为是一个大问题。

chronos现在可以在多个节点上运行。每个节点需要自己的MySQL服务器/数据库并存储自己的任务。运行Web界面的主机还管理用户数据库和任务与节点之间的关联。Web界面可以通过protocol文件夹中定义的基于Thrift的协议从特定节点创建、删除、更新和获取任务以及任务日志。

先决条件

为了构建chronos,你需要以下开发文件:

  • curl(最好使用c-ares作为解析器,并使用libidn2支持IDN)
  • libev
  • mysqlclient
  • sqlite3
  • thrift(编译器和libthrift)

要构建,你需要C++14编译器和cmake。

构建

  1. 创建并进入构建文件夹:mkdir build && cd build
  2. 运行cmake:cmake -DCMAKE_BUILD_TYPE=Release ..
  3. 构建项目:make

运行

  1. 确保你已从database文件夹导入DB模式
  2. 根据你的系统自定义chronos.cfg(特别是添加你的MySQL登录信息)
  3. 执行 ./chronos /path/to/chronos.cfg

API

API使用PHP编写,需要在Web服务器上托管(cron-job.org使用nginx和php-fpm)。它由控制台和状态页面UI使用。

先决条件

  • nginx和php-fpm(PHP 7)
  • 可选,一个redis实例以支持API调用速率限制

入门

  • api/文件夹复制到你的Web服务器
  • 创建config/config.inc.default.php的副本为lib/config.inc.php,并根据你的环境进行自定义

注意

  • 更改thrift协议时,别忘了重新编译PHP粘合代码并将其复制到lib/protocol/。提交时,包括更新后的PHP代码。目前,这是一个手动步骤。

前端

前端使用JavaScript编写,使用React和material-ui。你需要npm来构建它。

先决条件

  • Node.js

入门

  • 进入frontend/文件夹
  • 通过运行npm install安装所有必需的依赖项
  • 创建src/utils/Config.default.js的副本为src/utils/Config.js,并根据你的环境进行自定义
  • 通过npm start运行Web界面

状态页面前端

状态页面前端使用JavaScript编写,使用React和material-ui。你需要npm来构建它。

先决条件

  • Node.js

入门

  • 进入statuspage/文件夹
  • 通过运行npm install安装所有必需的依赖项
  • 创建src/utils/Config.default.js的副本为src/utils/Config.js,并根据你的环境进行自定义
  • 通过npm start运行Web界面

示例环境(使用Docker Compose)

要快速启动cron-job.org系统的大部分示例环境,你可以使用docker-compose

  • 初始化/更新子模块:git submodule init && git submodule update
  • .env.example复制到.env并在文本编辑器中打开
  • 根据需要更改.env中的变量。至少,用随机生成的密钥填充*_SECRET变量,并在SMTP_SERVER中指定SMTP服务器。SMTP会话不使用身份验证,因此请确保SMTP服务器允许你机器的IP地址进行中继。
  • 通过docker compose up启动,并等待所有容器构建完成并启动所有服务。这可能需要一段时间,尤其是在首次运行时。
  • 在浏览器中打开http://localhost:8010/(假设你保留了默认端口和主机名设置)。

*重要提示:*此存储库中包含的Docker环境旨在作为示例/开发环境,不适合生产使用,尤其是在安全性方面。

将启动以下容器:

  • mysql-master用于主服务数据库,也存储用户、组、任务->节点关联等。
  • mysql-node用于节点服务数据库。用于存储每个执行器的信息,如任务详情及其计划等。
  • redis用作某些功能(如速率限制)的缓存。
  • api用于前端使用的基于PHP的API后端。使用php-fpm。
  • frontend托管构建的前端代码。
  • wwww作为前端nginx驱动的HTTP服务器,连接到frontend(HTTP反向代理)和api(FastCGI)。
  • chronos以组合的主服务和节点服务模式运行chronos。

一般注意事项

  • 我们强烈建议使用c-ares解析器构建curl。否则,每个请求可能会为DNS解析生成自己的线程,你的机器很快就会耗尽资源。
  • 在运行chronos之前,确保打开文件/套接字的限制设置不要太低。你可能需要先运行ulimit -n 65536或类似命令。
  • 如果数据完整性对你来说不重要,我们强烈建议在MySQL配置中设置innodb_flush_log_at_trx_commit=0innodb_flush_method=O_DIRECT以获得最佳性能。否则,更新线程(负责存储任务结果)可能很快就会落后于实际的任务执行。
  • 部分源代码相当旧,来自项目的早期阶段,可能需要早晚进行重构。

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成热门AI工具AI图像AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具使用教程AI营销产品酷表ChatExcelAI智能客服
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

数据安全AI助手热门AI工具AI辅助写作AI论文工具论文写作智能生成大纲
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多