本文主要是介绍Jeff Dean,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Google 公司的 Jeff Dean在Stanford大学做了一个非常精彩的演讲(视频未墙)。我们每一个人都应该去看一看这个视频,没有字幕,需要不错的听力。下面是一些相关的Notes,供你参夸,并欢迎牛人指证。● 比较了从1999年到2010年十年来的搜索量的变化。搜索量增加了 1000 倍,而搜索速度快了5 倍。1999年,一个网页的更新最多需要一个月到两个月,而今天,只需要几秒钟,足足加快了5w倍。
● 一开始,这些大量的查询产生了大约30GB的I/O量。2004年,他们考虑过全部重写infrastructure。
● 讨论了一些关于变量长度字节对齐的东西。
● 今天的MapReduce 有400万个作业,处理将近1000PB的数据,130PB的中间数据,还有45PB的输出数据。(1PB =1024TB)关于 MapReduce (Google云计算的精髓)的一些统计,见下图:
● 现在Jeff正在做一个叫Spanner的项目,这是一个跨多个数据中心的项目。在后来的Q&A中,Jeff解释了现在的数据基本上都在各个数据中心中,数据在不同数据中心间的交换几乎不可能。所以,他们需要提供一些手动的方式或是一些工作或任务来达到数据共享。这其中还需要有一些策略配置,共同的namespace,事务处理,数据一致性等等工作。
● 最后一个段落应该是最精彩的,Jeff讲了很多很有意思的东西,绝对让你受用一生:
○ 一个大型的系统需要分解成N多的小services.(这和Amazon的很相似,一个页面的调用可能要经过几百个后台的services)
○ 代码的性能将会是相当的重要。Jeff给了一张叫“Numbers Everyone Should Know” 的slide,如下所示,太经典了,其中的东西,可以看看这篇“给老婆普及计算机知识”。(注:1 ns = 十亿分之一秒)
○ 把相同的东西抽出来去建立一个系统,而不是把所有的事情交给所有的人。他说: “最后的那个功能可能会导致你怎么个系统超出了原有的复杂度”。
○ 不要无限制地设计可扩展性。5倍到50倍的扩展性设计足够了。如果你要达到100倍的,那应该是re-arch了。
○ Jeff很喜欢有中心主结点的架构体系,他并不喜欢分布式系统。当然,中心主结点主要是用来做控制的,而不是做数据或是计算服务的。
○ Jeff在一些小机器上运行多个小服务,而不在一个大机器上运行一个mongo作业。越小的单元就越容易处理,修复,负载均衡和扩展。(化繁为简)
…… ……
这是一个非常不错的演讲,很让人开阔眼界。
相关英文链接:
http://ae97013.wordpress.com/2010/11/25/jeffrey-dean-building-software-systems-at-google-and-lessons-learned-stanford-ee-computer-systems-colloquium-2010/
相关英文Slide链接:
http://www.stanford.edu/class/ee380/Abstracts/101110-slides.pdf
中文原文链接:
http://coolshell.cn/articles/3301.html
这篇关于Jeff Dean的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!