database 包含MySQL数据库结构。chronos 是cron-job.org的定时任务执行守护进程,负责获取任务。protocol 包含系统节点之间交互的接口定义。frontend 包含Web界面。statuspage 包含状态页面UI。api 包含Web界面和状态页面UI使用的服务器API。chronos每分钟检查MySQL数据库以收集所有要执行的任务。每分钟会生成一个线程来处理所有任务。实际的HTTP获取是使用出色的curl multi库完成的,libev库用于提供事件循环。结合c-ares解析器,这允许同时进行数千个并行HTTP请求。
cron-job.org支持为用户方便起见存储任务结果。在MySQL数据库中存储结果数据很快会导致I/O瓶颈。(这也有清理旧条目极其昂贵的缺点。)为解决这个问题,chronos将结果存储在每个用户每天的SQLite数据库中。清理旧条目就像删除相应日期的数据库一样简单。
整个软件的优化侧重于性能而不是数据完整性,即当服务器崩溃或发生断电/硬件故障时,任务历史很可能会丢失。由于这本来就是易失性数据,因此不被认为是一个大问题。
chronos现在可以在多个节点上运行。每个节点需要自己的MySQL服务器/数据库并存储自己的任务。运行Web界面的主机 还管理用户数据库和任务与节点之间的关联。Web界面可以通过protocol文件夹中定义的基于Thrift的协议从特定节点创建、删除、更新和获取任务以及任务日志。
为了构建chronos,你需要以下开发文件:
要构建,你需要C++14编译器和cmake。
mkdir build && cd buildcmake -DCMAKE_BUILD_TYPE=Release ..makedatabase文件夹导入DB模式chronos.cfg(特别是添加你的MySQL登录信息)./chronos /path/to/chronos.cfgAPI使用PHP编写,需要在Web服务器上托管(cron-job.org使用nginx和php-fpm)。它由控制台和状态页面UI使用。
api/文件夹复制到你的Web服务器config/config.inc.default.php的副本为lib/config.inc.php,并根据你的环境进行自定义lib/protocol/。提交时,包括更新后的PHP代码。目前,这是一个手动步骤。前端使用JavaScript编写,使用React和material-ui。你需要npm来构建它。
frontend/文件夹npm install安装所有必需的依赖项src/utils/Config.default.js的副本为src/utils/Config.js,并根据你的环境进行自定义npm start运行Web界面状态页面前端使用JavaScript编写,使用React和material-ui。你需要npm来构建它。
statuspage/文件夹npm install安装所有必需的依赖项src/utils/Config.default.js的副本为src/utils/Config.js,并根据你的环境进行自定义npm start运行Web界面要快速启动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。ulimit -n 65536或类似命令。innodb_flush_log_at_trx_commit=0和innodb_flush_method=O_DIRECT以获得最佳性能。否则,更新线程(负责存储任务结果)可能很快就会落后于实际的任务执行。

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


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


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


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


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

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


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


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


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


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

微信扫一扫关注公众号