1、GOP S 全 球 运 维 大 会 2019上 海 站GOP S 全 球 运 维 大 会 2019上 海 站让编译飞起来-基于容器技术的编译加速实践GOP S 全 球 运 维 大 会 2019上 海 站目录引言1容器与蓝鲸容器服务2编译与编译加速3基于蓝鲸容器服务的编译加速平台4GOP S 全 球 运 维 大 会 2019上 海 站利用容器技术给传统加速编译技术赋能,提升整体服务能力和效率引言p 容器和容器编排 容器:相比虚拟机更灵活高效的虚拟化技术,将应用以及应用运行依赖的环境打包发行,然后运行在沙箱中 容器编排:管理集群主机资源,调度部署容器并管理容器生命周期p 编译和编译加速 编译:从源
2、代码生成可执行程序的过程,CI/CD过程中的重要环节 编译加速:充分使用系统内存和CPU等资源以及集群能力,提升编译速度GOP S 全 球 运 维 大 会 2019上 海 站目录引言1容器与蓝鲸容器服务2编译与编译加速3基于容器的编译加速平台4GOP S 全 球 运 维 大 会 2019上 海 站p 虚拟化技术p 资源控制和隔离p 占用资源小p 启动速度快容器GOP S 全 球 运 维 大 会 2019上 海 站p Docker将容器技术标准化,真正做到一次构建随地运行p Docker架构 镜像,容器 镜像仓库 Docker Daemon Docker Client&APIDockerGOP
3、S 全 球 运 维 大 会 2019上 海 站p BCS解决大规模主机和容器的部署和管理问题,保证服务的稳定运行,方便升级和故障恢复 底层K8S和mesos双引擎 灵活的调度机制 容器和进程混合部署 运行时命令通道 扩展能力强蓝鲸容器服务BCSGOP S 全 球 运 维 大 会 2019上 海 站p 支持容器和进程混合编排 用相对统一的方式编排进程和容器,解决传统业务中不适合容器化或者容器化困难的模块编排问题,并可以和容器化模块无缝对接;进程和容器在定义上切换方便p 支持命令通道 服务运行过程中需要发送指令对服务运行状况进行管理和调整蓝鲸容器服务BCS基于mesos实现的自研服务编排引擎,能更
4、好的支持传统应用的容器化GOP S 全 球 运 维 大 会 2019上 海 站p BCS在腾讯devops各环节中发挥着重要的作用,提升了系统的易用性和运行效率 服务构建中使用BCS调度构建容器和编译加速容器服务 服务构建后快速利用镜像生成测试验证环境 编排和管理线上服务蓝鲸容器服务BCSBCS开源地址:https:/ S 全 球 运 维 大 会 2019上 海 站目录引言1容器与蓝鲸容器服务2编译与编译加速3基于蓝鲸容器服务的编译加速平台4GOP S 全 球 运 维 大 会 2019上 海 站p 从源代码到可执行程序需要进行编译,编译过程和各步骤的输入输出如右图:1.预处理2.编译3.汇编4
5、.链接从hello world来看编译过程GOP S 全 球 运 维 大 会 2019上 海 站编译加速常用手段p 充分利用本机的内存,CPU等资源,减少编译过程中的工作,加快IO效率和计算效率1.减少非必要的编译:ccache2.解决IO瓶颈,充分利用内存:tmpfs3.通过并行执行充分利用本机CPU资源:make j由于本地配置差异较大,本地编译加速的效果也存在比较大的不确定性GOP S 全 球 运 维 大 会 2019上 海 站编译加速的意义和常用手段p 分布式编译加速1.条件:并发,耗时,CPU占用2.举例:distcc fastbuildIncredibuild主要依靠集群能力,在集
6、群能力稳定的情况下,能提供相对稳定的加速效果加速平台以分布式编译加速为核心,兼顾本地加速编译手段GOP S 全 球 运 维 大 会 2019上 海 站p FastBuild分布式编译1.通过网络共享路径同步2.分发文件的同时会分发构建工具链,从机环境相对统一3.网络开销大4.需要针对项目写fbb文件,接入成本相对比较高5.目前分布式编译只支持windows平台6.无法对项目进行隔离,负载均衡不稳定传统分布式编译方案GOP S 全 球 运 维 大 会 2019上 海 站p Distcc分布式编译1.通过环境变量指定从机地址2.编译机将不同编译文件通过网络分发到从机进行编译3.所有文件编译完成后在