开心在博客园发了一篇名叫《聊聊云计算》的帖子。感兴趣的人不少,我把链接和我的看法一并放在这里供大家拍砖。

原文:

聊聊云计算(1):什么是云计算

IT界是一个特别适合“创新”的地方,尤其是各种各样的术语。各大厂商为了自己的利益,不断的推出一些新的术语,而媒体们也在不断的站队,跟着一些忽悠,搞得我们这些IT界的前线战士们一阵一阵得晕。刚刚有了B/S、C/S、SaaS、SOA、 Mash Up以及S+S,现在又出来了云计算。

什么叫云计算?根据维基百科当中的定义(基于某种原因,可能无法访问维基百科):云计算cloud computing分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。

很深奥的概念,相信很多朋友可能和开心一样,有些云里雾里,真的掉到云里面去了。而且在下面的云计算示例一节当中,又给出了两个简单的云计算案例,即搜索引擎以及网络邮箱。俺就有一些搞不明白了,按照这种示例,所谓的云计算,与B/S以及C/S架构到底有什么不同呢?如果再看看各大媒体举的例子,把一些在线文档编辑器也称之为云计算,那么云计算与SaaS又有什么区别呢?这不就是经典的新瓶装旧酒吗?

其实,云计算的先驱真的不是Google(谷歌)或者微软,而是亚马逊(Amazon)。让我们来看一下所谓的B/S以及C/S架构,如果从分层上来看,其实都是Client to Server的层次(只不过B/S中把C换成了Browser而已)。而无论在Client端还是Server端,都适用于经典的软件销售,在 Client端,我们有Office、Windows Vista、Firefxo,而在Server端,则有SQL Server、Oracle、Apache。这些软件都适用于software license的销售模式(软件收费或者支持服务收费)。

而亚马逊的EC2则更改了Server端的software license模式,其最主要的含义是将软件的功能以服务的方式提供出来,然后根据类似于SLA(Service Level Agreement)的方式为其客户提供相应的服务。比如EC2当中的Simple DB,就是一个网络存储服务,类似于SQL Server/Oracle等等,你在开发的时候,不需要安装经典的数据库应用程序在服务器上,根本不用在意我的数据到底存在“哪块云里面”,而且开发的时候还可以使用原来的SQL语句进行CRUD(不知道CRUD是什么意思?赶快做一下功课去吧),任何时间,任何地点,任何设备都可以进行访问。听上去很美吧?

所以云计算其实就是C/S的一个扩展版本,简单可以描述为C to S to S (C/S/S)实质就是一个更新版本的SaaS,服务器端的Software As A Service。大小S之间进行计算以及数据的传输,最终把结果输给C,让C来展示就可以了。而云计算指的其实就是S to S这一端,所以与最终用户根本无关,甚至最终用户根本感觉不到这种改动,所改动的其实就是开发商如何采购其服务而已(是购买软件还是租用服务)。所以俺开心个人认为,传统的搜索引擎以及网络邮箱,或者在线文档编辑器(Google Docs)还称不上什么云计算(当然,你硬说里面也有S to S之类的云端交流,俺也不没有什么理由来说服你)。

ASP(Application Service Provider)其实也是云计算的一个先驱,但它是把应用构建在云端,而不是把服务构建在云端,所以造成了其上的二次开发商非常稀少,而没有建立起完整的生态链系统,最终进入到失败。而云计算由于只是把服务器端的Software更改为Service方式应用(云上的API),所以可以召募很多的二次开发商,从而快速得构建起完整的生态链。相当于IT界的一次洗牌过程,抓住了云也就抓住了未来,对于传统软件厂商来说,其危害要比Open source有过之而无不及。整个生态链可以基本上划分为云间服务提供商(相当于原来的服务器端的软件厂商:微软、甲骨文、IBM等)、应用开发商(基于服务构建应用的厂商,SI或者ISV等)以及最终用户等。

但云计算也不会一帆风顺,肯定会有乌云时期,有兴趣的话,可以去了解一下 Amazon的EC2的业绩。我们可以先抛开欧美日印市场,从国内的IT环境来看,无论是从政策、技术或者信用等来说,目前还极度不成熟。非死不可(Facebook)本周在国内的突然病亡会在很长一段时期让大家对于云计算充满怀疑(谁又能够预料哪一天App Engine突然发动不起来了?),现有的云计算的开发模式对于重视技术迁移成本的开发商也处于观望状态。

所以云计算虽然看上去很美,但实际上要走得路还是很长。

在接下来的话题当中,开心还想聊聊云端的梦(从最终用户角度会感觉到的优势)、吞云吐雾的幻术(从开发者角度选择最好的云计算平台)等话题,欢迎大家交流。

 

renmin的回复:

Wiki的解释并不是云计算,而是网格计算(Grid).目前还没听说Cloud是Grid的新名称,或升级版之类的消息.

在Grid中,你的计算可能有其他人的CPU完成,你的数据可能存在其他人的硬盘, 真正达到了“人人为我,我为人人”的境界。你永远也不用担心数据丢失,或者CPU运算压力太大,只要你的网络带宽足够,就没有不能完成的任务。典型的Grid程序有计算外星人 SETI@home,Sony计算蛋白质螺旋机构(Folder)的程序等等。但其实真正应用最广泛的要数BT,Emuler,木马DDOS攻击等等。

Grid的生事日渐衰弱。我觉得概念虽好实在没有满足用户的实际需求。类似SETI,Folder的程序完全可以用HPC来实现。目前HPC计算能力已经达到了千万亿次/秒。曙光最新的4000W+ Windows HPC Server 2008的集群也达到了百万亿次/秒的计算能力。其可靠性是在不能与Grid同日而语。

正像开心说得,IT是善于“创新”的行业,一个概念倒下去,千万个概念站起来。

我个人对Cloud理解是“S+S”,不是微软的“Software + Service”而是“Service + Software”。Service才是主体,是客户真正需要的东西。软件不过是手段,是媒介。固然软件可以做得非常绚丽,但那不过是电影中的特效,真正打动观众的是故事。

软件是上个世纪的伟大发明,而且将在这个世纪创造一个新的世界。软件将带领人类进入虚拟世界,在虚拟世界中享受现实的服务。这才是Cloud中的天堂。

 

 

 

ZhangPeng 的回复:

上次参加了谷歌开发者日大会,仍然糊里糊涂的,对云计算仍需补大量的课。现在都没有完全区分云计算、网格计算、HPC分布式计算这些概念的区别。但个人理解,他们可能不是同一层次上的概念,但也有一些相似之处:

网格计算的理想可能是没有系统边界,任何机器,任何CPU都可以参与网格计算,用户不需知道到底参与计算的是哪台机器,便可以获得预想的结果。

HPC分布式系统,无论是SMP还是MMP,都具有系统边界。使用庞大的高性能计算机体系结构来进行分布式计算,计算是封闭的,是不对外开放的。但是计算的过程可能需要用户自己去写代码编程实现。从这点上讲,计算的过程是不Transparent的(用户自己可以控制)。

云计算:云计算我理解的是Service,至于Software可有可无(当然,需要提供一个接入Service的入口)。整个云计算的过程是透明的,用户不知道也不需要关心这个服务是如何实现的。云计算的体系可以是封闭的,也可以是不封闭的。目前主要是封闭的。Google使用大量的PC机构造出计算机集群,并采用C/S方式管理这些计算机集群,有一个中央控制的服务器对这些集群进行管理,把一个大的任务分割成许多小的任务,再将任务分配到不同的计算机中。

希望斧正,谢谢!