Blaze Bazel概述-Google的分布式构建系统.pptVIP

Blaze Bazel概述-Google的分布式构建系统.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Blazeamp;Bazel概述-Google的分布式构建系统.ppt

Blaze Bazel概述 Google的分布式构建系统 什么是分布式构建系统 Google的开发模式 Goolge的构建工具Blaze Blaze概述 Bazel概述 5.1 什么是Bazel 5.2 Bazel的特点 5.3 Bazel 其他 1. 什么是分布式构建系统 构建系统(build system) 从源代码生成用户可以使用的目标程序的自动化工具。 目标可以包括库、可执行文件、或者生成的脚本等等。 常用的构建系统包括GNU Make、GNU autotools、CMake、Apache Ant(主要用于JAVA)。此外,所有的集成开发环境(IDE)都对他们支持的语言添加了自己的构建系统配置工具。 分布式构建系统 分布式构建系统则是有多用户各自承担同一工作任务的不同部分,并在分布式构建工具的帮助下,完成整个开发系统的构建。 2. Google的开发模式 ●所有的服务器端代码库都在一个巨大的版本控制系统里 ●每个人都用Blaze构建软件 ●不同的组负责源码树的不同部分,所有的组件都是作为BUILD目标来用 ●分支主要是用来管理发布,所以每个人都在最新版本上开发软件 3. Google的构建工具Blaze Google使用一个称为Blaze的分布式构建系统,该平台负责编译和链接软件以及运行测试。 它提供了用于构建和测试在整个存储库中工作的软件的标准命令。这些标准命令和高度优化的实现意味着,对于任何Google工程师来说,构建和测试存储库中的任何软件通常非常简单和快捷。 这种一致性是一个关键的推动因素,有助于使工程师能够跨项目边界进行更改。 构建系统的实现使用Google的分布式计算基础设施。每个构建的工作通常分布在数百甚至数千个机器上。这使得可以快速构建极大的程序或并行运行数千个测试。 3. Google的构建工具Blaze 那么具体什么是构建工具? MAVEN Webpack 4. Blaze概述 程序员编写“BUILD”文件,Blaze用它来确定如何构建他们的软件。使用相当高级别的声明式构建规范声明库,程序和测试等构建实体,为每个实体指定其名称,源文件以及它所依赖的库或其他构建实体。这些构建规范包括称为“构建规则”的声明,每个都指定高级概念,如“这里是一个C ++库,这些源文件取决于这些其他库”,并且由构建系统将每个构建规则映射到一组构建步骤,例如编译每个源文件的步骤和用于链接的步骤,以及用于确定使用哪个编译器和编译标志。 ●各个构建步骤必须是“气密的”:它们仅取决于他们所声明的输入,强制所有依赖关系的正确声明。 ●单独构建步骤是确定性的。 ●构建系统是可靠的 ●构建结果被缓存在“云中”。 ●增量重新构建速度快:使用增量分析。 ●预提交检查:提供了一系列测试工具。 5. Bazel 概述 Bazel 一个Blaze的开源项目 是Blaze的一个子集,但是基本功能完全一致。 5.1 什么是Bazel Bazel是一个构建工具,即一个可以运行编译和测试来组装软件的工具,跟Make、Ant、Gradle、Buck、Pants和Maven一样。 Bazel生成代码快速可靠。它被用来建立大多数谷歌的软件,因此它被设计来处理在谷歌的开发环境中存在的构建问题 5.1 什么是Bazel Bazel包含的内容: 一个庞大的共享代码库,所有软件都是从源代码中建立的。Bazel已建成的速度,使用缓存和并行实现。 注重自动化测试和发布。Bazel已经建立的正确性和可重复性,即建立一个连续的建机或释放管道会产生相同的输出进行按位与开发商的机器生成。 语言与平台多样性。Bazel的建筑是一般足以支持许多不同的编程语言在谷歌内部,可用于构建客户端和服务器软件针对多个架构相同的底层代码库。 5.2 Bazel 的特点 多语言支持:Bazel支持Java,Objective-C和C++,可以扩展来支持任意的编程语言 高级别的构建语言:工程是通过BUILD语言来描述的。BUILD语言以简洁的文本格式,描述了由多个小的互相关联的库、二进制程序和测试程序来组成的一个项目。而与之相比,Make这类的工具需要描述各个单独的文件和编译的命令 多平台支持:同一套工具和同样的BUILD文件可以用来构建不同架构和不同平台的软件。 重现性:在BUILD文件中,每个库,测试程序,二进制文件必须明确完整地指定直接依赖。当修改源代码文件后,Bazel使用这个依赖信息就可以知道哪些必须重新构建,哪些任务可以并行执行。 伸缩性:Bazel可以处理巨大的构建;在Google,一个服务器端程序超过100k的源码是常有的事情,如果没有文件被改动,构建过程需要大约200ms

文档评论(0)

jackzjh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档