google的十个核心技术

google的十个核心技术

ID:16253306

大小:193.50 KB

页数:8页

时间:2018-08-08

google的十个核心技术_第1页
google的十个核心技术_第2页
google的十个核心技术_第3页
google的十个核心技术_第4页
google的十个核心技术_第5页
资源描述:

《google的十个核心技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Google的十个核心技术任职于IBM中国研究院,从事与云计算相关研究的CSDN博客专家吴朱华曾写过一篇文章《探索GoogleAppEngine背后的奥秘(1)--Google的核心技术》,对Google的核心技术和其整体架构进行详细的分析,现转载于此,供大家学习。本篇将主要介绍Google的十个核心技术,而且可以分为四大类:1.分布式基础设施:GFS,Chubby和ProtocolBuffer。2.分布式大规模数据处理:MapReduce和Sawzall。3.分布式数据库技术:BigTable和数据库Sharding。4.数据中心优

2、化技术:数据中心高温化,12V电池和服务器整合。分布式基础设施GFS由于搜索引擎需要处理海量的数据,所以Google的两位创始人LarryPage和SergeyBrin在创业初期设计一套名为“BigFiles”的文件系统,而GFS(全称为“GoogleFileSystem”)这套分布式文件系统则是“BigFiles”的延续。首先,介绍它的架构,GFS主要分为两类节点:1.Master节点:主要存储与数据文件相关的元数据,而不是Chunk(数据块)。元数据包括一个能将64位标签映射到数据块的位置及其组成文件的表格,数据块副本位置和哪个进

3、程正在读写特定的数据块等。还有Master节点会周期性地接收从每个Chunk节点来的更新(”Heart-beat”)来让元数据保持最新状态。2.Chunk节点:顾名思义,肯定用来存储Chunk,数据文件通过被分割为每个默认大小为64MB的Chunk的方式存储,而且每个Chunk有唯一一个64位标签,并且每个Chunk都会在整个分布式系统被复制多次,默认为3次。下图就是GFS的架构图:图1.GFS的架构图接着,在设计上,GFS主要有八个特点:1.大文件和大数据块:数据文件的大小普遍在GB级别,而且其每个数据块默认大小为64MB,这样做的

4、好处是减少了元数据的大小,能使Master节点能够非常方便地将元数据放置在内存中以提升访问效率。2.操作以添加为主:因为文件很少被删减或者覆盖,通常只是进行添加或者读取操作,这样能充分考虑到硬盘线性吞吐量大和随机读写慢的特点。3.支持容错:首先,虽然当时为了设计方便,采用了单Master的方案,但是整个系统会保证每个Master都会有其相对应的复制品,以便于在Master节点出现问题时进行切换。其次,在Chunk层,GFS已经在设计上将节点失败视为常态,所以能非常好地处理Chunk节点失效的问题。4.高吞吐量:虽然其单个节点的性能无论

5、是从吞吐量还是延迟都很普通,但因为其支持上千的节点,所以总的数据吞吐量是非常惊人的。5.保护数据:首先,文件被分割成固定尺寸的数据块以便于保存,而且每个数据块都会被系统复制三份。6.扩展能力强:因为元数据偏小,使得一个Master节点能控制上千个存数据的Chunk节点。7.支持压缩:对于那些稍旧的文件,可以通过对它进行压缩,来节省硬盘空间,并且压缩率非常惊人,有时甚至接近90%。8.用户空间:虽然在用户空间运行在运行效率方面稍差,但是更便于开发和测试,还有能更好利用Linux的自带的一些POSIXAPI。现在Google内部至少运行着

6、200多个GFS集群,最大的集群有几千台服务器,并且服务于多个Google服务,比如Google搜索。但由于GFS主要为搜索而设计,所以不是很适合新的一些Google产品,比YouTube、Gmail和更强调大规模索引和实时性的Caffeine搜索引擎等,所以Google已经在开发下一代GFS,代号为“Colossus”,并且在设计方面有许多不同,比如:支持分布式Master节点来提升高可用性并能支撑更多文件,chunk节点能支持1MB大小的chunk以支撑低延迟应用的需要。Chubby简单的来说,Chubby属于分布式锁服务,通过C

7、hubby,一个分布式系统中的上千个client都能够对于某项资源进行“加锁”或者“解锁”,常用于BigTable的协作工作,在实现方面是通过对文件的创建操作来实现“加锁”,并基于著名科学家LeslieLamport的Paxos算法。ProtocolBufferProtocolBuffer,是Google内部使用一种语言中立,平台中立和可扩展的序列化结构化数据的方式,并提供java、c++和python这三种语言的实现,每一种实现都包含了相应语言的编译器以及库文件,而且它是一种二进制的格式,所以其速度是使用xml进行数据交换的10倍左

8、右。它主要用于两个方面:其一是RPC通信,它可用于分布式应用之间或者异构环境下的通信。其二是数据存储方面,因为它自描述,而且压缩很方便,所以可用于对数据进行持久化,比如存储日志信息,并可被MapReduce程序处理。与P

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。