Files
docs-test/docs/cloudbuild/index.md

28 lines
1.8 KiB
Markdown
Raw Normal View History

2025-09-08 21:23:43 +08:00
# 分布式编译系统CloudBuild
## 为什么需要分布式编译技术
- 大型项目过长的编译耗时将会给开发、测试和调试都带来延迟,所以缩短大型项目的编译时间的分布式编译系统有重要意义
- 使用分布式编译系统编译项目可以利用计算机集群提高编译效率,缩短项目编译时间
- 在实际开发时同一个团队大量的编译任务时相同的。CloudBuild提供的编译缓存可以避免重复上传和重复编译从而进一步加快编译效率
## 总体架构
### 系统总体架构
![alt text](/public/cloudbuild/architecture.png)
- Ninja客户端该机器上需要保存有完整的待编译项目源代码。
- Action Cache服务端缓存主要保存编译任务的执行结果。
- CAS Cache服务端缓存主要保存客户端上传的依赖文件编译结果文件。
- Scheduler任务调度器将编译任务id分发到各个编译节点。
- Redis主要存储具体的编译任务供编译节点领取执行也可存储Action Cache和 CAS Cache中的内容加速编译。
- MySQL主要存储编译过程中的任务统计信息。
- Executor各个编译节点
### 部署示意图
![alt text](/public/cloudbuild/system-diagram.png)
CloudBuild主程序分为三个部分Client、Server、Executor。
- Client运行在客户端和用户对接用于生成待执行的远程编译任务 同时也作为本地编译节点执行本地任务。
- Server运行在主服务器主要用于连接各个编译节点以及 将客户端上传的编译任务调度到与其连接的各个编译节点上。
- Executor运行在编译节点负责接收并执行编译任务是编译任务真正执行的地方。
### 系统分层结构
![alt text](/public/cloudbuild/layered-system-architecture.png)