云里雾里的云计算 【6】-转载自邓侃博士的博客
【7】天上究竟会有几朵云?
上一章长篇大论地讨论,云计算是否能够提供有效的加密措施,保障客户的内容以及程序,不被云计算平台的拥有者偷窥。
我们的结论是悲观的。
既然云计算平台无法提供有效的加密措施,那么云计算平台只能吸引那些对于自己的内容和程序的保密不那么敏感的企业。
但是大型企业,包括银行和电信,它们对云计算能够提供的超大规模存储能力,以及超大规模并行数据处理的能力,有天然的需求。
怎么办?
现实的解决办法是帮助大型企业建设属于它们自己的云计算平台。
换而言之,未来的天空中,将漂浮着Google和Microsoft几朵云,这是几朵大云。在大云的周围,散落着一些小云。
如何构建云计算平台?
说来也不很神秘。云计算平台的基本思想,可以简单概括为,设计一套操作系统,同时管理多台电脑,尤其是把多台电脑结合起来,当一台超级电脑使用。
想深入了解云计算技术,以下论文是不能不看的。
1. Google File System: http://research.google.com/archive/gfs-sosp2003.pdf
把多个电脑的硬盘组合起来,形成一个超大规模的硬盘,用来存储海量数据,同时保障万一有某些硬盘崩溃了,不至于遗祸整个系统。
2. MapReduce: http://labs.google.com/papers/mapreduce-osdi04.pdf
如何实现并行计算。道理很简单,但是用好却不容易。下面两篇论文,可以作为范例,指导如何正确使用MapReduce。
3. Chubby lock service: http://research.google.com/archive/chubby-osdi06.pdf
电脑操作经常要用到锁机制,譬如用锁防止两个进程同时向同一个文件写数据。这篇论文谈的是,在由多台电脑组成的分布式系统中,集中管理锁的机制。
4. BigTable: http://research.google.com/archive/bigtable-osdi06.pdf
这篇文章既是讲如何实现分布式数据库,同时也可以把它看成范例,如何正确使用Chubby锁机制,和GFS文件系统。
5. The Google cluster architecture: http://www.computer.org/micro/mi2003/m2022.pdf
各个组成部分完成以后,如何组建一个计算中心。这是这篇文章的主题。
Google式云计算平台有两大特色,
1. 便宜。即使用几台穷人买得起的烂PC,也能构建一个麻雀虽小但是五脏俱全的Google式云计算平台。其实,Google自己就是这么起家的。
2. 稳定。便宜的机器经常死机。Google式云计算平台,能保证一部份机器死机不会造成整个系统的崩溃。
A cluster consisting of many cheap PCs Courtesy http://www.inria.fr/actualites/inedit/images/inedit29_parta.fr.jpg
以前CMU有个教授,说过这么一段话,大意是:遇到一篇以前没有读过的论文,最好先蹲在厕所里翻翻。很多论文无病呻吟,或者装神弄鬼。对待这样的论文,处理的办法是立刻冲掉。不幸的是,大多数论文都可以这样处理。
后来,这段话被记者捅了出去。系主任不得以,不仅公开道歉,而且内部通报批评该教授,不该说这种politically incorrect的话。但是暗地里,很多师生都非常认同教授的看法。
前面几篇文章,不仅不能被冲掉,而且值得反复读,再三读。读完这些论文,你一定会对这两个人感到亲切,Jeffrey Dean和Sanjay Ghemawat。
如 果说Google的两位创始人Larry Page和Sergey Brin确定了Google搜索引擎的算法和数据结构,那么奠定了Google后台的集群系统,也就是我们今天耳熟能详的Google云计算平台,就是 Jeffrey Dean 和Sanjay Ghemawat这两位。
Jeffrey Dean, Ph.D Courtesy http://research.google.com/people/jeff/jeff.jpg
Sanjay Ghemawat, Ph.D Courtesy http://research.google.com/people/sanjay/sanjay.jpg
但是,只读这么几篇论文是不是就足够了呢?
No!
对比一下传统的单机的操作系统,如果把GFS理解为云计算版的文件系统,把MapReduce理解为云计算版的进程管理,把Chubby理解为云计算版的synchronization。
缺了什么?
1. Memory management。2. Scheduling。
为什么不列举这两个方面的论文,方便大家阅读?
因为Google没有发表。或许是Google把这两个方面的技术,视为Google云计算的核心机密,所以才没有发表论文公开介绍。
读完论文后,想构建一个云计算平台,是不是必须写程序,从头实现?
No!
Hadoop是一个开源项目,把前面提到的几个Google式云计算技术,用Java实现了。
我们不妨站在Hadoop台阶上,把未尽的事业推向前进。前进方向,
1. Memory management。2. Scheduling。
抱歉,暂停评论。