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

