云计算

来源:百度文库 编辑:神马文学网 时间:2024/03/29 03:37:46

我对云计算这个概念总有一直抵触心理。总觉得是炒作。背后没什么技术含量。前段时间朋友推荐给我一篇有关云计算的论文,是伯克利大学计算机系几位学生发表的,一直也没当回事。直到上周去日本出差时才静下心来看看。原以为是一篇学术性很强的文章,没想到读起来更像一篇MBA写得的文章。文章标题为“Above the Clouds: A Berkeley View of CloudComputing”。或许可以翻译成“云之上:伯克利眼中的云计算”。能站在云之上看云,不免让人有一种“一览众山小”的感觉。也许高傲了一点,不过人家伯克利这点资本还是有的。文章内容本身通俗易懂,但却引发了我不少的思考。因此我忍不住也加入了这个“炒云团”。

该文本身章节分明,层次清晰。但是为了便于把问题深入讨论(同时掩盖一下我逻辑混乱的缺点),我断章取义,列举几个我认为重要的观点,逐一讨论。如果你想看清楚整个大象,我建议还是直接阅读原文。

一. 什么是云计算?

有关“云计算到底是什么”的话题可能比天上的云还多。该文的定义是,云计算 = SaaS + UtilityComputing。SaaS提供的是服务,而UtilityComputing提供的是基础设施(硬件,OS,软件等)。这个定义看似有道理,但实际上等于没有定义。因为大家对SaaS和 UtilityComputing的定义本身就不统一。

不过该文中的比喻还是比较形象生动的。大家都知道,计算机芯片除了设计之外,离不开加工,铸造这个环节。但是,在这个行业中,能够负担得起加工工厂的公司屈指可数,例如Intel,三星等。只有这些巨无霸才能承担得起30亿美金的生产线。于是就孕育了半导体芯片代工(SemiconductorFoundry)这个行业,以台湾的台积电(TSMC)为龙头老大。这样,那些没有能力开工厂的公司仍然可以做他们擅长的事:设计芯片。因此他们被称之为无厂半导体设计公司(FablessSemiconductorCompany),例如 Qualcomm,nVidia等。于是硬件行业被细分成芯片设计和芯片代工两大领域。芯片代工行业存在的理由是规模效应。当有足够多的芯片设计公司对他们产生需求时,他们在工厂中的投资就能产生回报。反过来,由于存在了芯片代工这样的行业,中小公司也可以不必初期投入大量资金建厂,而尽可能将资源投入到芯片设计中。

以同样的思路推理,或许软件行业将来也可以同样细分。某些大公司投入大量资本建立数据中心以及相关的服务。他们就是“云计算 ”的乙方。而更多公司不需要自己去建数据中心,而是去租相关的服务。这些公司被称为无数据中心公司(“Datacenter- lessCompany”),是“云计算”的甲方。

其实说白了,就是硬件外包。如果公司可以把软件开发外包出去,硬件为什么不可以也外包出去呢?这个问题留在后面讨论。我们还是回到云计算的定义上吧。

我认为伯克利几位作者对云计算定义精髓的其实就是外包。只不过“外包”一词太不时髦了,甚至很土,没有技术含量,不好意提而已。外包最大的好处在于不消耗自己的固定成本,使用量可以随着需求增长和增长,减少而减少。你看,SaaS就是以租赁软件的方式取代采购软件。而UtilityComputing更是像用电一样来用硬件,存储等资源,而不需要事先采购它们。SaaS + UtilityComputing,不是典型的外包吗?

发表于 @ 2009年04月28日

 

伯克利论文给出一个估计:数据中心的服务器平均利用率(server utilization)在5%到20%之间。我觉得这个数据虽然听起来有点不可思议,但和实际情况非常吻合。至少我所在的公司是差不多这样的。作为一家互联网公司,服务器的采购一定不能仅限于日常的并发量或访问量,而要基于峰值。而峰值往往是日常值的好几倍。这就导致在大部分日常情况下,服务器是严重空闲的,资源严重浪费。这就好比是为了满足高峰期间的需求,铁道部决定全年365天每天都像春运一样向全国提供最多的列车,最多的乘务员。结果自然是最大的浪费。可是互联网服务有时候无法预测哪天春运会到来,无法提前准备。于是,云计算就显得特别有诱惑力。

二,云计算的“诱人之处”

该文认为从硬件的角度看,云计算有3大好处。
1. 取之不尽的技术资源。这里的取之不尽是相对而言的。这就好比对于个人用户而言,发电厂的电总是用不完的。因此,云计算的用户不必为资源而预先规划。
2. 不必事先在硬件,软件等上面投资。
3. 按使用量来收费。因此,云计算的用户与供应商直接的合同可以是短期。

其实以上3条可以总结为一句话:弹性计算能力和按照使用量收费。

各大公司利用云计算来忽悠时,也基本上着眼于这里。兜售云计算服务的对象往往是公司的CTO,CIO等人。对这些人来说,以上3点确实非常有诱惑力。我总结的原因如下。

第一点是资源规划。要知道技术规划是非常难的一件事情。原因是业务规划往往不准确。如果资源真的是有弹性的,而且没有限制的,那就不必为做详细的资源规划了。反正什么时候需要,就什么时候购买。这不是和用电一样吗?什么时候需要开灯就开呗。多方便啊!说到底,技术部门不用再为业务规划不准确而买单了。多好的一件事啊!

第二点是初期投资。如果某个项目有潜力,有可行性,但初期投资比较高。这个项目就有可能因为风险太大而夭折。现在可以不在初期进行投资,那何乐而不为呢?

第三点是后期灵活。如果初期投资不大,而且不需要签订长期合同,那么公司都可以随时改变决定,进行调整。

但是细细品味,就会发现一些问题。

首先,如果使用云计算的原因是不需要做技术规划,那将是一件很危险的事。这个道理同样可以比喻做用电。如果一个公司或家庭认为电资源是无限的,可以随便用用。不但可能会造成浪费,而且可能造成用电量过大而跳闸甚至火灾等事故。因此规划是必须的。

其次,如果每个项目初期投资都很小,那么很可能出现很多项目都被草率启动。结果是生了很多孩子,而没人养的状况。

最后,由于后期非常灵活,导致需求不停地变更,对需求变更的管理成本大大上升。

我们必须清醒地看到,云计算确实可以解决一下现存的问题。但它必将带来一些新的问题。是否选择云计算服务其实是在新老问题上做平衡。

上次从云计算的“诱惑之处”已经看到了云计算可能带来的一些问题。但其实那些问题不是云计算本身的问题。而是因为云计算提供了更为方便的服务,从而可能引发不好好规划,草率开始项目,盲目需求变更等问题。

这就好比是在10-20年前,由于计算机资源匮乏(名牌大学计算机系也不过只有几台电脑),程序编辑器阅读不方便,编译时间很长(编译的时候抽支烟肯定没问题,甚至吃顿饭都来得及)等等原因,老程序员往往会把程序写在纸上,或者打印出来,修改过N遍以后再输入到电脑中。由于深思熟虑,这样的程序往往质量很高。而现在电脑资源到处都是,编辑器越来越容易使用(容易到只需要输入开始几个字母,编辑器会自动补全函数名/方法名的程度),再加上编译的速度飞快,程序员往往还没有把问题搞清楚就开始写程序了。程序的质量自然高不到哪里去。

所以问题不在云计算,而是使用云计算的人是否和过去一样认真规划,认真执行。

不过云计算自身确实存在一些先天不足。

三,云计算的问题

伯克利论文列举了10个问题。我认为以下几个相对比较严重。

1. 数据被锁定
当我们把数据放到某个云计算平台上时,我们必须有信心未来可以把数据搬出来。如果数据迁移的成本很高,我们就会担心数据被锁定在这个云计算平台上。这就好比是把钱存到某个银行很容易,但如果提出来很麻烦,或者手续费很高,我们存钱的时候就会有顾虑。文章中提出的解决办法是将数据接口的API标准化,不同的云计算供应商都要按这个标准提供数据进进出出的接口。换句话说,就是让存钱和取钱都十分方便。我认为这是十分必要的。但还不够。还需要第三方公司来做担保。当云计算供应商自身能力不够时(例如倒闭时),第三方公司可以保证我们仍然可以把数据搬出来。这和当银行倒闭时,客户存的钱由保险公司来返还是一样的道理。

2. 数据安全
大部分公司都不希望自己的数据被云计算供应商看到。毕竟数据就是商业机密。但是这个问题比较棘手。当我们把贵重的物品或钱存到银行的保险箱里时,银行即使可以看到它们,摸到它们,也无法在不被客户发现的情况下拿走它们。拷贝实物或钱等于制造赝品或伪钞,更没有实际意义。而当我们把数据放到云计算平台中时,它们可以在我们完全不知道地情况下被简单地拷贝走,从而让原始数据失去价值。伯克利论文的解决方案是数据加密。但我觉得这不一定能解决所有问题。加密并不能100%地保证数据不被解密。更何况加密对应用程序是一个很大的改动,是一件很消耗资源的工作。也许彻底解决的办法是没有的。只能依靠对云计算供应商的信任。一来信任他们不会自己盗取数据。二来信任他们可以做好保安工作,不让其他人盗取数据。因此云计算供应商一定是要有信誉和能力的公司。

3. 数据传输
做过数据迁移的人一定有感受,当数据量大的时候,网络往往会成为迁移的一个重要因素。数据迁移项目的瓶颈很有可能卡在网络传输这个环节上。为了更形象地说明问题,伯克利论文给出了一个假想案例。假设要从伯克利大学传输10TB的数据到亚马逊公司所在的西雅图市。在带宽是20M/s的实际情况下,需要45天的时间和1000美金的带宽费用。但是如果通过快递公司的话,只需用不到1天的时间和400美金的快递费就搞定了。没想到在互联网如此发达的今天,竟然是传统物流以绝对优势取胜。于是该论文提出的3个解决方案分别是:1)通过传统物流降低数据迁移的成本;2)想方设法把数据留在“云”里面来减少数据传输的必要性;3)试图降低宽带网(WAN)的带宽成本。前两点都是要云计算用户自己来解决。而第三点则要靠网络设备的供应商来解决。看来都不是云计算供应商自己可以掌控的事情。不过这个问题虽然存在,但对于大部分用户来讲并不特别严重,因为一般的中小用户没有这么大量的数据需要经常传输。

4. 性能问题
云计算目前是建立在虚拟机(VM)技术之上的。然而众所周知,VM技术虽然日趋成熟,但依然存在性能上的问题。特别是当多个VM之间相互竞争时,磁盘IO会成为严重瓶颈。该论文提出的解决方案是从硬件架构和操作系统上进行提升,以及引入闪存技术。我认为这个思路非常可取。计算机在过去几十年的发展虽然很大,但其核心设计一直没有大的改变。基本思路始终都是一台计算机上运行一个操作系统。VM是大势所趋。硬件和操作系统的设计也必须符合这个趋势。同时,基于高速闪存技术的存储技术也已经产品化。我在“苹果公司创始人沃兹尼艾克加入创业公司”一文中提到过。性能问题是以上几个问题中最有技术挑战性的问题,但也是最有可能被彻底解决的问题之一。

伯克利论文还提出其它几个诸如可用性,可扩展性,大型分布式系统中的测试等问题。纵观云计算的一些先天不足以后,我的观点是虽然这些问题不容忽略,但解决方案还是比较乐观的。目前已经有一些云计算的成功案例。我认为在未来几年之内,云计算服务将成为大部分IT公司考虑的方案之一。当软件外包的一个高潮过去以后,计算外包的高潮也许很快就要来到了。 这篇论文的第一作者名为“Michael Armbrust”。他应该是该论文的主要贡献者。去Google上搜这个人名时,搜索条上居然会自动把这个名字补齐,并显示有31万条结果。可见这哥们的人气是相当的旺盛。(当然和小沈阳比差得远去了。小沈阳在谷歌显示的结果有1千7百多万条。)一个学术界的小毛孩,相当不容易了。这哥们还有一个过人之处,就是通过对Google排序算法的实验,当你搜索他的名字时,让Google搜索结果的第一页全部返回有关他的网页。让与他重名的人完全在第一页上露不了脸。真绝!找他做SEO,效果肯定不错。


Michael Armbrust,加州大学伯克利分校RAD(Reliable Adaptive Distributed systems)实验室的博士生。

这篇论文的署名还真多,竟然有11位。学术界的人都知道,除非你是第一作者,否则无非是搭个顺风车而已。不过这些人中却有2位是鼎鼎大名。文章的份量因此而陡然增加。他们是David Patterson和Randy Katz。这二人在1987年发明了RAID技术,在存储行业无人不知,无人不晓。David Patterson写的2本书“Computer Architecture: A Quantitative Approach”和“Computer Organization and Design: the Hardware/Software Interface”,以及Randy Katz写的“Contemporary Logic Design”一书都是美国大学和研究生院计算机系必读的教科书。因此,他们在计算机这个行业里基本上是家喻户晓了。


David Patterson,加州大学伯克利分校教授,RAD实验室主任


Randy Katz,加州大学伯克利分校教授

说了这么一大堆,无非是想说明这篇论文的重要性,从而间接地说明我的观点是有依据的:一个计算外包的高潮也许就要到来了。那么我们这些未来的云计算使用者应该做哪些准备呢?

四,为云计算做准备

1. 应用程序要有可伸缩性。注意我这里用的是“伸缩性”,而不是“扩展性”。我们平时往往强调应用程序需要有好的扩展性,但很少强调收缩能力。大丈夫能伸能屈。大丈夫写的应用程序应该也是一样的。如果未来我们的应用程序是按照计算量(例如CPU使用率,I/O使用率等等)来付费,那么当用户访问量下降的时候,我们一定要释放这些资源,从而降低费用。这就和不在家的时候,把电灯都关灯是一个道理。不然多浪费啊。看看我们现在的很多设计中,资源池(例如数据库的连接池)这个概念已经十分普及了。但是真正能够做到伸缩自如的是凤毛麟角。

2. 未来的客户端程序需要更加“聪明”。当客户端不能上网时,或者不能连接到服务器上时,仍然可以允许客户做部分工作。而现在的客户端要么完全基于浏览器(例如绝大部分网页),要么过于依赖网络(比如MSN,雅虎通等IM工具),一旦断网,就几乎没用了。理想中的IM能够让你不联网的情况下,仍然轻松地查看网友的联系信息,历史消息等。

3. 由于操作系统将逐渐被VM化,相应的系统管理技能和流程也需要改进。未来的系统管理员也许根本无法物理接触到他们管理的设备,所有工作都要通过远程管理。那时候的系统优化也许是完全不同的事情。

4. 公司里的个人电脑使用者将不再物理拥有自己的电脑。你的桌子上或桌子下面将不再有那个又笨又大的主机箱。你有的无非是一个显示器,一个键盘和一个鼠标。你的电脑资料被存在了某个VM上面,你不用再为备份而头疼了。世界或许将要轮回到70,80年代的X window时期。大家都是通过终端登录到某台主机上工作。

写到这里,我自己也不禁有些吃惊。难道未来PC会消失吗?但是看看现在上网本这么流行,或许PC的末日真的不远了。PC的发展孕育了互联网。而互联网的发展或许会消灭PC。这“云”后面到底是什么?我真的很好奇。

如果云计算真的发展到了那个不需要PC,技术资源和电一样方便的时候,我们恐怕早已经完全适应了。现在的问题是当云计算还不成熟的时候,我们该不该去吃这个螃蟹?答案肯定是没有的。希望那些吃过螃蟹的人分享经验。我也将尽可能地分享我的经验。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zrtang/archive/2009/04/29/4138029.aspx

 

 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zrtang/archive/2009/04/28/4132495.aspx

 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zrtang/archive/2009/04/28/4132467.aspx

 


本文来自CSDN博客,转载请标明出处:http://blog