毕业生浅谈Google架构

标签: 毕业生 google 架构 | 发表时间:2011-06-16 18:43 | 作者:sxwgf sayhelen
出处:http://www.cnblogs.com/

首先声明:

1、我并非是网站架构师,我刚毕业,只是对网站架构这方面比较感兴趣,于是就把自己学习的心得和大家分享,欢迎大家拍砖,但请稍微拍轻点,毕竟刚毕业的孩子伤不起啊:-)

2、如果喜欢本文的朋友可以以任何形式转载,开心的话留个链接,不开心就算了,因为文中很多资料也是来自网络的。

 

其实不久前我在园子里也分享过一篇有关架构方面的文章各大网站架构总结笔记,感谢大家的点评和支持,让我在大家的讨论中又学到了很多东西。今天,我要和大家一起来谈谈Google的架构,鉴于Google的高不可测和本人的能力有限,所以只能浅谈,园子里牛的人可以在评论中补充哦(好东西拿出来一起分享,让我们共同进步,不要让人家嘲笑我们中国的程序员封闭)。

Google主要以GFSMapReduceBigTable这三大平台来支撑其庞大的业务系统,我称他们为Google三剑客,网上也有说是Google的三架马车

一、GFS(Google File System)

这是Google独特的一个面向大规模数据密集型应用的、可伸缩的分布式文件系统,由于这个文件系统是通过软件调度来实现的,所以Google可以把GFS部署在很多廉价的PC机上,来达到用昂贵服务器一样的效果。

下面是一张Google GFS的架构图:

google-file-system

从上图我们可看到Google的GFS主要由一个master和很多chunkserver组成,master主要是负责维护系统中的名字空间、访问控制信息、从文件到块的映射以及块的当前位置等元素据,并通过心跳信号与chunkserver通信,搜集并保存chunkserver的状态信息。chunkserver主要是用来存储数据块,google把每个数据块的大小设计成64M,至于为什么这么大后面会提到,每个chunk是由master分配的chunk-handle来标识的,为了提高系统的可靠性,每个chunk会被复制3个副本放到不同的chunkserver中。

当然这样的单master设计也会带来单点故障问题和性能瓶颈问题,Google是通过减少client与master的交互来解决的,client均是直接与chunkserver通信,master仅仅提供查询数据块所在的chunkserver以及详细位置。下面是在GFS上查询的一般流程:

1、client使用固定的块大小将应用程序指定的文件名和字节偏移转换成文件的一个块索引(chunk index)。
2、给master发送一个包含文件名和块索引的请求。
3、master回应对应的chunk handle和副本的位置(多个副本)。
4、client以文件名和块索引为键缓存这些信息。(handle和副本的位置)。
5、Client 向其中一个副本发送一个请求,很可能是最近的一个副本。请求指定了chunk handle(chunkserver以chunk handle标识chunk)和块内的一个字节区间。
6、除非缓存的信息不再有效(cache for a limited time)或文件被重新打开,否则以后对同一个块的读操作不再需要client和master间的交互。

不过我还是有疑问,google可以通过减少client与master通信来解决性能瓶颈问题,但单点问题呢,一台master挂掉岂不是完蛋了,总感觉不太放心,可能是我了解不够透彻,不知道哪位朋友能解释一下,谢谢:)

二、MapReduce,Google的分布式并行计算系统

如果上面的GFS解决了Google的海量数据的存储,那这个MapReduce则是解决了如何从这些海量数据中快速计算并获取指定数据的问题。我们知道,Google的每一次搜索都在零点零几秒,能在这么短时间里环游世界一周,这里MapReduce有很大的功劳。

Map即映射,Reduce即规约,由master服务器把map和reduce任务分发到各自worker服务器中运行计算,最后把结果规约合并后返回给用户。这个过程可以由下图来说明。

2179187226_e2e107e0cd

按照自己的理解,简单对上图加点说明:

1、首先把用户请求的数据文件切割成多份,每一份(即每一个split)被拷贝在集群中不同机器上,然后由集群启动程序中的多份拷贝。

2、master把map和reduce任务交给相对空闲的worker处理,并阻塞等待处理结果。

3、处理map任务的worker接到任务后,把以key/value形式的输入数据传递给map函数进行处理,并将处理结果也以key/value的形式输出,并保存在内存中。

4、上一步内存中的结果是要进行reduce的,于是这些map worker就把这些数据的位置返回给master,这样master知道数据位置就可以继续分配reduce任务,起到了连接map和reduce函数的作用。

5、reduce worker知道这些数据的位置后就去相应位置读取这些数据,并对这些数据按key进行排序。将排序后的数据序列放入reduce函数中进行合并和规约,最后每个reduce任务输出一个结果文件。

6、任务结束,master解除阻塞,唤醒用户。

以上是个人的一些理解,有不对的地方请指出。

三、BigTable,分布式的结构化数据存储系统?

BigTable是基于GFS和MapReduce之上的,那么google既然已经有了GFS,为何还要有BigTable呢(也是我原先的一个疑问)?后来想想这和已经有操作系统文件系统为何还要有SQL SERVER数据库一样的道理,GFS是更底层的文件系统,而BigTable建立在其上面,不仅可以存储结构化的数据,而且可以更好的管理和做出负载均衡决策。

以下是BigTable的架构图:

cb793040086d5b66

它完全是一个基于key/value的数据库,和一般的关系型数据库不同,google之所以采用BigTable,因为它在满足需求的同时简化了系统,比如去掉了事务、死锁检测等模块,让系统更高效。更重要的一点是在BigTable中数据是没有格式的,它仅仅是一个个key/value的pairs,用户可以自己去定义数据的格式,这也大大提高了BigTable的灵活性和扩展性。

四、总结

这篇随笔主要是一些总结性的内容,Google架构远远不止这些,不过对于我这个初学者来说,看到这样的架构体系确实让我很激动(可能牛的朋友对这个已经没啥感觉了),就花了差不多一个下午写了这篇文章。我也希望通过自己的努力去更深一步的学习架构方面的知识,也欢迎各位朋友一起探讨。好了,最后我还是希望得到大家的支持,但也欢迎拍砖,不过拍轻点哦,呵呵。

作者: sxwgf 发表于 2011-06-16 18:43 原文链接

评论: 10 查看评论 发表评论


最新新闻:
· 微软发布Kinect免费开发套件 鼓励玩家动手改造(2011-06-17 10:14)
· 智能电视操作系统被垄断 国产彩电商局面不利(2011-06-17 09:06)
· 财付通牌照被收回传言背后:协议控股潜规则遭否(2011-06-17 09:03)
· 谷歌加大电子书营销力度 开始邀请网站参与推广(2011-06-17 08:59)
· 苹果iTunes商店应用总数为42.5万个(2011-06-17 08:58)

编辑推荐:有关HTML5的流言与真相

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [毕业生 google 架构] 推荐:

毕业生浅谈Google架构

- sayhelen - 博客园-首页原创精华区
1、我并非是网站架构师,我刚毕业,只是对网站架构这方面比较感兴趣,于是就把自己学习的心得和大家分享,欢迎大家拍砖,但请稍微拍轻点,毕竟刚毕业的孩子伤不起啊:-). 2、如果喜欢本文的朋友可以以任何形式转载,开心的话留个链接,不开心就算了,因为文中很多资料也是来自网络的. 其实不久前我在园子里也分享过一篇有关架构方面的文章各大网站架构总结笔记,感谢大家的点评和支持,让我在大家的讨论中又学到了很多东西.

Google服务器架构图解简析

- Version - 服务器运维与网站架构|Linux运维|互联网研究
Google,无疑是互联网时代最闪亮的明星. 截止到今天为止,Google美国主站在Alexa排名已经连续3年第一,Alexa Top100中,各国的Google分站竟然霸占了超过20多个名额,不得不令人感叹Google的强大. 不论何时,不论何地,也不论你搜索多么冷门的词汇,只要你的电脑连接互联网,只要你轻轻点击“google搜索”,那么这一切相关内容google都会在1秒钟之内全部搞定,这甚至比你查询“我的文档”都要快捷.

给毕业生的建议

- - 贝小戎 读品走私
日前,奥普拉·温弗瑞在哈佛大学毕业典礼上做了演说,伯南克在普林斯顿大学毕业典礼上做了演说. 奥普拉说:“不管你升得多高,你都会跌倒. 当你掉下的时候,要记住:没有失败这回事. 失败其实是人生给我们转到另一个方向. 它们的存在是为了迫使你更加自我. ”伯南克说:“没人喜欢失败,但失败是人生和学习的核心部分.

谷奥: 前 Google Wave 工程师说 Google 的软件架构也忒过时了

- 张宪伟 - 谷奥聚合——谷奥主站+谷安 aggregator
Google Wave前工程师 Dhanji R. Prasanna(上图是他的Twitter头像) 昨天发了一篇博文,解释了自己为何要离开Google,其中谈到了Google的文化,但最有趣的部分其实是他说“Google一直自夸的具备延展性的软件架构已经过时了”. 尽管他承认Google的硬件架构依然是完美的艺术品,但其上为搜索引擎和爬虫设计的软件架构至少落后了10年.

Jeff Dean关于Google系统架构的讲座

- water - 并行实验室 | Parallel Labs
上个月Jeff Dean在Standford的Computer Systems Colloquium (EE380)这门讨论课上详细讲了讲Google的系统架构发展过程,因为这是份很新的资料,所以特意把它的Slide下下来与大家分享一下. 这门课是Standford的讲座课程,每一节课都由不同的顶级工程师/科学家/投资人前来讲授IT行业的最新动向,非常非常有料,绝对值得深挖.

Udacity分享他们在Google App Engine上的架构

- - InfoQ cn
Udacity是一个以提供个性化计算机教育免费在线课程为主的网站,虽然该网站上目前只有18种课程,但是它的流量却相当可观,目前在Alexa的排名是11926. Chris Chew是该网站的资深软件工程师. 日前,他在Google App Engine的官方博客上分享了如何使用App Engine来构建Udacity.

Google 官方推出应用开发架构指南

- - ITeye资讯频道
简评:虽然说 Android 的架构选择一直都很自由,MVP、MVC、MVVM 各有拥趸. 但 Google 最近还是推出了一份关于应用架构的实践指南,并给出了相当详尽的步骤和一些指导建议. 希望大家都能看一看,学习一下,打造更加优秀易用的 APP,也为 Android 生态的改善做一点贡献. 最近,官方推出了一份关于应用架构的最佳实践指南.

别让理科毕业生进投行

- mensch88 - Solidot
曾经,数学物理或其它科学专业的理科毕业生,蜂拥前往华尔街,义无反顾的投入到高回报投行的怀抱. 根据MIT毕业生就业数据,2003年18%的毕业生进入了金融行业,2006年这一数据提高到了25%. 2008年,金融危机爆发,理科毕业生终于再次青睐起工程行业了. 然而,数千亿美元的救济,让投行们起死回生,恢复往日的荣耀.

应届毕业生生存法则--工作篇

- Lucseeker - 博客园-首页原创精华区
  由于草草地写了一篇《应届毕业生生存法则》,园友如此强烈的反响令我受宠若惊,在此致以谢意. 博客园是一个谈论技术的好平台,在我写这样的文章的时候,必定会受到他人的鄙视与冷眼,本人诚心接受批评及指正,因为我爱这个家园,如果我的博文能帮助他人,不亦乐乎. 当然我也会努力学习园友的技术,努力写好技术博客.

李开复:给想创业的毕业生的一封信

- 秋五 - 互联网的那点事
二十年后,中国最伟大的企业,和成功走向世界舞台的企业很可能就是在下五年所创立的. 因此,很多大学生现在的跃跃欲试地想毕业后创业. 另外,创业板的推出,许多创业公司的成功,还有很多成功创业家都鼓舞着中国的大学生,让他们也希望跟随马云、马化腾、李彦宏的步伐,走向创业之路. 一方面,我赞赏大学生拥有创业理想,但是另一方面,我建议大学生:先参与创业,再主导创业.