前端工程师-GoogleAppEngine前端技术架构解析12467.docx
《前端工程师-GoogleAppEngine前端技术架构解析12467.docx》由会员分享,可在线阅读,更多相关《前端工程师-GoogleAppEngine前端技术架构解析12467.docx(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、GooggleAAppEEngiine前前端技术术架构解解析今天看到到几篇有有关Goooglle AApp Engginee的技术术架构文文章,一一起分享享给大家家,没看看到过的的同学赶赶紧惊喜喜一下吧吧,看到到过了的的同学也也假装惊惊喜一下下嘛,呵呵呵。全部文章章有点长长,请耐耐心看下下去,相相信程序序员都是是有耐心心的,除除了我.一、Goooglle的核核心技术术在切入GGooggle Appp Ennginne之前前,首先先会对GGooggle的的核心技技术和其其整体架架构进行行分析,以以帮助大大家之后后更好地地理解GGooggle Appp Ennginne的实实现。本篇将主主要介绍绍
2、Goooglee的十个个核心技技术,而而且可以以分为四四大类: 分布布式基础础设施:GFSS、Chhubbby 和和 Prrotoocoll Buuffeer。 分布布式大规规模数据据处理:MappRedducee 和 Sawwzalll。 分布布式数据据库技术术:BiigTaablee 和数数据库 Shaardiing。 数据据中心优优化技术术:数据据中心高高温化、112V电电池和服服务器整整合。分布式基基础设施施GFS由于搜索索引擎需需要处理理海量的的数据,所所以Goooglle的两两位创始始人Laarryy Paage和和Serrgeyy Brrin在在创业初初期设计计一套名名为BBig
3、FFilees的的文件系系统,而而GFSS(全称称为GGooggle Fille SSysttem)这套套分布式式文件系系统则是是BiigFiiless的延延续。首先,介介绍它的的架构,GGFS主主要分为为两类节节点: Maasteer节点点:主要要存储与与数据文文件相关关的元数数据,而而不是CChunnk(数数据块)。元数数据包括括一个能能将644位标签签映射到到数据块块的位置置及其组组成文件件 的表表格,数数据块副副本位置置和哪个个进程正正在读写写特定的的数据块块等。还还有Maasteer节点点会周期期性地接接收从每每个Chhunkk节点来来的更新新(HHearrt- beaat)来让元元
4、数据保保持最新新状态。 Chhunkk节点:顾名思思义,肯肯定用来来存储CChunnk,数数据文件件通过被被分割为为每个默默认大小小为644MB的的Chuunk的的方式存存储,而而且每个个Chuunk有有唯一一一个644位标签签,并且且每个CChunnk都会会在整个个分布式式系统被被复制多多次,默默认为33次。下图就是是GFSS的架构构图:图1. GFSS的架构构图(参参片115)接着,在在设计上上,GFFS主要要有八个个特点: 大文文件和大大数据块块:数据据文件的的大小普普遍在GGB级别别,而且且其每个个数据块块默认大大小为664MBB,这样样做的好好处是减减少了元元数据的的大小,能能使Ma
5、asteer节点点能够非非常方便便地将元元数据放放置在内内存中以以提升访访问效率率。 操作作以添加加为主:因为文文件很少少被删减减或者覆覆盖,通通常只是是进行添添加或者者读取操操作,这这样能充充分考虑虑到硬盘盘线性吞吞吐量大大和随机机读写慢慢的特点点。 支持持容错:首先,虽虽然当时时为了设设计方便便,采用用了单MMastter的的方案,但但是整个个系统会会保证每每个Maasteer都会会有其相相对应的的复制品品,以便便于在 Massterr节点出出现问题题时进行行切换。其其次,在在Chuunk层层,GFFS已经经在设计计上将节节点失败败视为常常态,所所以能非非常好地地处理CChunnk节点点失
6、效的的问题。 高吞吞吐量:虽然其其单个节节点的性性能无论论是从吞吞吐量还还是延迟迟都很普普通,但但因为其其支持上上千的节节点,所所以总的的数据吞吞吐量是是非常惊惊人的。 保护护数据:首先,文文件被分分割成固固定尺寸寸的数据据块以便便于保存存,而且且每个数数据块都都会被系系统复制制三份。 扩展展能力强强:因为为元数据据偏小,使使得一个个Massterr节点能能控制上上千个存存数据的的Chuunk节节点。 支持持压缩:对于那那些稍旧旧的文件件,可以以通过对对它进行行压缩,来来节省硬硬盘空间间,并且且压缩率率非常惊惊人,有有时甚至至接近990%。 用户户空间:虽然在在用户空空间运行行在运行行效率方方
7、面稍差差,但是是更便于于开发和和测试,还还有能更更好利用用Linnux的的自带的的一些PPOSIIX AAPI。现在Goooglle内部部至少运运行着2200多多个GFFS集群群,最大大的集群群有几千千台服务务器,并并且服务务于多个个Goooglee服务,比比如Goooglle搜索索。但由由于 GGFS主主要为搜搜索而设设计,所所以不是是很适合合新的一一些Goooglle产品品,比YYouTTubee、Gmmaill和更强强调大规规模索引引和实时时性的CCafffeinne搜索索引擎 等,所所以Goooglle已经经在开发发下一代代GFSS,代号号为CColoossuus,并并且在设设计方面面
8、有许多多不同,比比如:支支持分布布式Maasteer节点点来提升升高可用用性 并并能支撑撑更多文文件,CChunnk节点点能支持持1MBB大小的的chuunk以以支撑低低延迟应应用的需需要。Chubbby简单的来来说,CChubbby 属于分分布式锁锁服务,通通过 CChubbby,一一个分布布式系统统中的上上千个cclieent都都能够对对于某项项资源进进行加加锁或或者解解锁,常常用于BBigTTablle的协协作工作作,在实实现方面面是通过过 对文文件的创创建操作作来实现现加锁锁,并并基于著著名科学学家Leesliie LLampportt的Paaxoss算法。Prottocool BBu
9、ffferProttocool BBufffer,是是Goooglee内部使使用一种种语言中中立、平平台中立立和可扩扩展的序序列化结结构化数数据的方方式,并并提供 Javva、CC+ 和 PPythhon 这三种种语言的的实现,每每一种实实现都包包含了相相应语言言的编译译器以及及库文件件,而且且它是一一种二进进制的格格式,所所以其速速度是使使用 XXML 进行数数据交换换的100倍左右右。它主主要用于于两个方方面:其其一是RRPC通通信,它它可用于于分布式式应用之之间或者者异构环环境下的的通信。其其二是数数据存储储方面,因因为它自自描述,而而 且压压缩很方方便,所所以可用用于对数数据进行行持久
10、化化,比如如存储日日志信息息,并可可被Maap RReduuce程程序处理理。与PProttocool BBufffer比比较类似似的产品品还有FFaceeboook的 Thrriftt ,而而且 FFaceeboook 号号称Thhrifft在速速度上还还有一定定的优势势。分布式大大规模数数据处理理MapRReduuce首先,在在Goooglee数据中中心会有有大规模模数据需需要处理理,比如如被网络络爬虫(Webb Crrawller)抓取的的大量网网页等。由由于这些些数据很很多都是是PB级级别,导导致处理理工作不不得不尽尽可能的的并行化化,而GGooggle为为了解决决这个问问题,引引入了
11、 MappRedducee这个编编程模型型,MaapReeducce是源源自函数数式语言言,主要要通过Mapp(映射射)和和Reeducce(化化简)这两个个步骤来来并行处处理大规规 模的的数据集集。Maap会先先对由很很多独立立元素组组成的逻逻辑列表表中的每每一个元元素进行行指定的的操作,且且原始列列表不会会被更改改,会创创建多个个新的列列表来保保存Maap的处处理结 果。也也就意味味着,MMap操操作是高高度并行行的。当当Mapp工作完完成之后后,系统统会先对对新生成成的多个个列表进进行清理理(Shhufffle)和排序序,之后后会这些些新创建建的列表表 进行行Redducee操作,也也就
12、是对对一个列列表中的的元素根根据Keey值进进行适当当的合并并。下图为MMapRReduuce的的运行机机制:图2. MappRedducee的运行行机制(参119)接下来,将将根据上上图来举举一个MMapRReduuce的的例子:比如,通通过搜索索Spiiderr将海量量的Weeb页面面抓取到到本地的的GFSS集群中中,然后后Inddex系系 统将将会对这这个GFFS集群群中多个个数据CChunnk进行行平行的的Mapp处理,生生成多个个Keyy为URRL,vvaluue为hhtmll页面的的键值对对(Keey-VValuue MMap),接着着系统会会对这些些刚生成成的键值值对进行行Shu
13、ufflle(清清理),之之后系统统会通过过Redducee操作来来根据相相同的kkey值值(也就就是URRL)合合并这些些键 值值对。最后,通通过MaapReeducce这么么简单的的编程模模型,不不仅能用用于处理理大规模模数据,而而且能将将很多繁繁琐的细细节隐藏藏起来,比比如自动动并行化化,负载载均衡和和机器宕宕 机处处理等,这这样将极极大地简简化程序序员的开开发工作作。MaapReeducce可用用于包括括分布布greep,分分布排序序,weeb访问问日志分分析,反反向索引引构建,文文档聚类类,机 器学习习,基于于统计的的机器翻翻译,生生成Goooglle的整整个搜索索的索引引等大大规模
14、数数据处理理工作。YYahooo也推推出MaapReeducce的开开源版本本Haddoopp,而 且Haadooop在业业界也已已经被大大规模使使用。SawzzalllSawzzalll可以被被认为是是构建在在MappRedducee之上的的采用类类似Jaava语语法的DDSL(Dommainn-Sppeciificc Laanguuagee),也也可以认认为它是是分布式式的AWWK。它它主要用用于对大大规模分分布式数数据进行行筛选和和聚合等等高级数数据处理理操作,在在实现方方面,是是通过解解释器将将其转化化 为相相对应的的MappRedducee任务。除除了Goooglle的SSawzza
15、lll之外,yyahooo推出出了相似似的Piig语言言,但其其语法类类似于SSQL。分布式数数据库技技术BigTTablle由于在GGooggle的的数据中中心存储储PB级级以上的的非关系系型数据据时候,比比如网页页和地理理数据等等,为了了更好地地存储和和利用这这些数据据,Goooglle开发发了一套套数 据据库系统统,名为为BiigTaablee。BBigTTablle不是是一个关关系型的的数据库库,它也也不支持持关联(Joiin)等等高级SSQL操操作,取取而代之之的是多多级映射射的数 据结构构,并是是一种面面向大规规模处理理、容错错性强的的自我管管理系统统,拥有有TB级级的内存存和PB
16、B级的存存储能力力,使用用结构化化的文件件来存储储数据,并并每秒可可以处理理数百万万的读 写操作作。什么是多多级映射射的数据据结构呢呢?就是是一个稀稀疏的,多多维的,排排序的MMap,每每个Ceell由由行关键键字,列列关键字字和时间间戳三维维定位.Celll的内内容是一一个不 解释的的字符串串,比如如下表存存储每个个网站的的内容与与被其他他网站的的反向连连接的文文本。 反向的的URLL coom.ccnn.wwww是这行行的关键键字;cconttentts列存存储网页页内容,每每个内容容有一个个时间戳戳,因为为有两个个反向连连接,所所以arrchoor的CColuumn Fammilyy有两
17、列列:annchoor: m和annchhhor:my.loook.cca。CColuumn Fammilyy这个概概念,使使得表可可以轻松松地横向向扩展。下下面是它它具体的的数据模模型图:图3. BiggTabble数数据模型型图(参参4)在结构上上,首先先,BiigTaablee基于GGFS分分布式文文件系统统和Chhubbby分布布式锁服服务。其其次BiigTaablee也分为为两部分分:其一一是Maasteer节 点,用用来处理理元数据据相关的的操作并并支持负负载均衡衡。其二二是taableet节点点,主要要用于存存储数据据库的分分片taableet,并并提供相相应的数数据访问问,同时
18、时Tabblett 是基基于名为为SSTTablle的格格式,对对压缩有有很好的的支持。图4. BiggTabble架架构图(参115)BigTTablle正在在为Goooglle六十十多种产产品和项项目提供供存储和和获取结结构化数数据的支支撑平台台,其中中包括有有Goooglee Prrintt、 OOrkuut、GGooggle Mapps、GGooggle Earrth和和Blooggeer等,而而且Goooglle至少少运行着着5000个BiigTaablee集群。随着Goooglle内部部服务对对需求的的不断提提高和技技术的不不断地发发展,导导致原先先的BiigTaablee已经无无
19、法满足足用户的的需求,而而Goooglee也正在在开发下下一代BBigTTablle,名名为SSpannnerr(扳手手),它它主要有有下面这这些BiigTaablee所无法法支持的的特性: 支持持多种数数据结构构,比如如tabble,ffamiiliee,grroupp和cooproocesssorr等。 基于于分层目目录和行行的细粒粒度的复复制和权权限管理理。 支持持跨数据据中心的的强一致致性和弱弱一致性性控制。 基于于Paxxos算算法的强强一致性性副本同同步,并并支持分分布式事事务。 提供供许多自自动化操操作。 强大大的扩展展能力,能能支持百百万台服服务器级级别的集集群。 用户户可以自
20、自定义诸诸如延迟迟和复制制次数等等重要参参数以适适应不同同的需求求。数据库SSharrdinngSharrdinng就是是分片的的意思,虽虽然非关关系型数数据库比比如BiigTaablee在Goooglle的世世界中占占有非常常重要的的地位,但但是面对对传统OOLTPP应用, 比如广广告系统统,Goooglle还是是采用传传统的关关系型数数据库技技术,也也就是MMySQQL,同同时由于于Goooglee所需要要面对流流量非常常巨大,所所以Goooglle在数数据库 层采用用了分片片(Shharddingg)的水水平扩展展(Sccalee Ouut)解解决方案案,分片片是在传传统垂直直扩展(Sc
21、aale Up)的分区区模式上上的一种种提升,主主要通过过时间,范范围和面面向服务务等方式式来将一一个大型型的数据据库分成成多片,并并且这些些数据片片可以跨跨越多个个数据库库和服务务器来实实现水平平 扩展展。Googgle整整套数据据库分片片技术主主要有下下面这些些优点: 扩展展性强:在Goooglle生产产环境中中,已经经有支持持上千台台服务器器的MyySQLL分片集集群。 吞吐吐量惊人人:通过过巨大的的MySSQL分分片集群群能满足足巨量的的查询请请求。 全球球备份:不仅在在一个数数据中心心还是在在全球的的范围,GGooggle都都会对MMySQQL的分分片数据据进行备备份,这这样不仅仅能
22、保护护数据,而而且方便便扩展。在实现方方面,主主要可分分为两块块:其一一是在MMySQQL IInnooDB基基础上添添加了数数据库分分片的技技术。其其二是在在ORMM层的HHibeernaate的的基础上上也添加加了相关关的分片片技术,并并支持虚虚拟分片片(Viirtuual Shaard)来便于于开发和和管理。同同时Goooglle也已已经将这这两方面面的代码码提交给给相关组组织。数据中心心优化技技术数据中心心高温化化大中型数数据中心心的PUUE(PPoweer UUsagge EEffeectiivennesss)普遍遍在2左左右,也也就是在在服务器器等计算算设备上上耗1度度电,在在空调
23、等等辅助设设备上也也要消耗耗一度电电。对一一些非常常出色的的数据中中心,最最多也 就能达达到1.7,但但是Goooglle通过过一些有有效的设设计使部部分数据据中心到到达了业业界领先先的1.2,在在这些设设计当中中,其中中最有特特色的莫莫过于数数据中心心高温化化,也就就 是让让数据中中心内的的计算设设备运行行在偏高高的温度度下,GGooggle的的能源方方面的总总监Errik Teeetzeel在谈谈到这点点的时候候说:普通的的数据中中心在770华氏氏度(221摄氏氏度)下下面工作作,而我我们则推推荐800华氏度度(277摄氏度度)。但但是在提提高数据据中心 的温度度方面会会有两个个常见的的限
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 前端 工程师 GoogleAppEngine 技术 架构 解析 12467
限制150内