正文

     ​近来一位朋友向我请教,什么是云计算?这个问题说难不难,说简单不简单。难是因为没有统一的认同的概念。容易回答,也是因为没统一定义,可以按自己的理解说,如果真有切身实践经验或想法的话。

    首先,你得看你的对象是谁。

    1)如果面对的是一位中国的专家级人物,也许你可以讲一下中国云计算网的定义:

“云计算是并行计算、分布式计算和网格计算的发展,或者说是这些科学概念的商业实现。

    这类定义很中国特色,即“拿一个复杂的概念去解释一个更复杂的概念”(导师如是说),反正到最后一般人还是不懂。做这个定义的人,也许也未必真的能讲清楚并行计算、分布式计算和网格计算。

    ​2)如果面对的是一位计算机专业或IT从业的人,但只是听过云计算,但没涉猎过。为了省事,给他看维基百科的云计算​的定义吧,个人觉得讲得挺清楚的。

“云计算英语Cloud Computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。整个运行方式很像电网。

云计算是继1980年代大型计算机客户端-服务器的大转变之后的又一种巨变。用户不再需要了解“云”中基础设施的细节,不必具有相应的专业知识,也无需直接进行控制。[1] 云计算描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。[2][3] 云其实是网络、互联网的一种比喻说法。因为过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。典型的云计算提供商往往提供通用的网络业务应用,可以通过浏览器等软件或者其他Web服务来访问,而软件和数据都存储在服务器上。云计算关键的要素,还包括个性化的用户体验。”

    

    ​3)如果你自己都看不懂,或者别人看了还是不懂。那么我尝试给一种更浅白的解释:

    ​云计算,就是“云态的网络设备” 向外提供的“按需动态变化的”一系列计算服务

  • 云态的网络端,指的是云计算服务提供者是一群协同工作的网络设备。云一方面说明了其规模化,另一方面云的特性(云碰到云变大云)说明这群协作的网络设备的规模是易于扩展的(从整一片云的角度看,虽说要求易于scale out,但并不关注scale in),再者对于观云者我们是看不到云里面的内容,这也说明云的内部对用户而言是不可见的

  • ​按需动态变化的,表示提供的服务能力是动态变化的,还是按需提供的,同时云本身也是动态可变的。但目前而言,从自己了解的,觉得这个服务的动态调整的粒度并不细。一开始还以为Amazon提供的CPU、存储等服务的粒度都是很很很细粒度的(比如具体用了多少就是多少),结果发现是我太天真了。

  • ​计算服务,在此是广义的计算服务,包括存储、CPU计算能力、网络能力等。

(​嗯,上面的内容,一般看过云计算内容的人都会明白的,甚至觉得讲得没什么信息了。嗯,其实我只想用自己的语言解释一遍而已。)

 

    ​首先看对象,其次看你想往抓哪个点去讲。

    其实这个跟对象也有关系,毕竟根据对象熟悉的点去讲,对方更容易接受。在此,自己谈谈本人对云计算更抽象化的认识——泛化的中间层理论。

    ​正如某句著名的话(突然忘了出处了)——“一切问题都可以通过增加一个中间层去解决”所述,我觉得云计算解决问题的方式也是如此的,加了一层,屏蔽了底下那层,向上提供更傻瓜化的服务,然后更多人能使用了。

    当年多了一层操作系统,尤其是图形化操作系统的出现,普通人能玩计算机了。Java在OS上加了层虚拟机,Java应用能跨平台了。现在多了云计算,理想来说,我们不用买神马CPU,主板,存储等硬件了,只要联网就成了。但单纯这样还不够,似乎跟网络虚拟桌面区分不开呢!

“这个网络虚拟桌面是什么呢?这个概念我也没研究过,只是上回说去某实验室交流云平台时,听那边一老师说,华为现在有些部门的人工作时前面就一个显示屏,一根网线,打开屏幕见登录界面,一登录就进入相应自己工作的操作系统环境了。”

    ​如果只是登录一下,然后服务端读取用户信息,返回用户内容,个人觉得还不够云呢!要够云,就得体现按需动态提供的能力,比如默认配置了很拙的计算能力(比如配了一个不给力的CPU),现在突然要进行一个高密度的计算任务,比如科学计算任务,那云应该按我的需求提供更强力的计算能力,可不能让我按之前的CPU能力等上几月半年才算出来。呃,当然,这样最后结算也是得多给些money的。似乎我又说了些理想化的事情,目前而言,CPU类的计算能力以及存储能力还是很难算流量那般结算的,相对而言,目前带宽还是有可能做到的。

    ​所以,云计算就是增加了一个中间层然后解决相应了问题。I云(IaaS)多了设备虚拟层,用户在其上不用care硬件设备了;在P云上的用户不用care平台以下的东西;在S云上面的,用不着安装相应软件就能使了哦(呃,现在还是得装个浏览器的。)

 

    嗯嗯,似乎有些太抽象了。那试试讲云计算产品的特征,即如何去识别云计算。

    ​从云计算概念的发展历程,个人觉得云计算的服务也好,产品也好,一般都有以下两大特征:

  1. 内容在网络端。很多云产品给用户的感觉就是从本地端迁移到网络端,比如I和S,其中一般会拿S做说明。比如一般会讲Salesforce的故事,从基于CRM客户端提供服务到基于web CRM提供服务。内容在网络端,一般还会延伸出云计算许多卖点,如异地设备同步啊,多种终端访问啊。

  2. 可按需调度计算资源。按需调度,即以合理分配的策略进行资源的动态调度。动态调度是云计算最主要的技术特征之一,云计算大多的技术点和学术研究点都基于此,比如多副本协作、虚拟机动态迁移等等。

    ​这两个特征,应该是要并存的,不能只有1而没2(没有1只有2,呃,这就是本地设备了吧~)。比如电子邮件服务,能称作云服务的,我直接想到的是Gmail,在我的认识中,G的服务都是S。而以前的电子邮箱服务称不上云,主要是因为没有动态性。    

    现在很多打着云的旗号的产品,我们很难知道它们是不是真的云产品,因为一般我们只能知道内容是放在网络端了,但云内是否有一套体现动态性的系统,我们不知道。所以有了以下问题:

    ——​云是要给用户感知的?!

    ​本人不以为然。云给用户的体验应该是一直保持良好的可用性,所以云就应该让用户无法感知到它。比如一个基于云的服务,在低访问量和高访问量的情况下,给用户的体验应该是一致的,但对于访问的用户而言,他并不知道服务端是否因访问量上升而增多服务的计算资源。如果让用户感知到差异,只能表示这云做得不够好。所以云的提出是为了提供服务质量的,其本身便不是让用户体验的。因此面对这么多“云产品”,用户并不知道它是不是真的云,尤其对于SaaS。只要用户觉得体验好,其实就足够了。

    ​呃,绕了一圈,得出用户无法感知云,表示也难以识别云,似乎有些坑人了。其实,我只想说明,不要轻易相信“云”,因为我们很难知道;同时,只要有“云”的良好体验,其实我们用户也用不着理会它是不是真的有一套复杂的动态调度机制去支撑的云。

 

    ​说了这么多,除了是为了总结自己的思考之外,还想说明的是,在理解云计算的时候,别人云亦云。在理解别人的说法的同时,要有自己的理解,同时更新自己的理解。导师曾经说过,他认为的云计算的两大特征是动态化和服务化。咋一想,挺有道理的,导师再一讲,觉得更有道理了。要理解云计算,要找个适当的点。

   
 
    ​最后想谈谈自己对维基百科上云计算特征的意见:

“互联网上的云计算服务特征和自然界的水循环具有一定的相似性,因此,云是一个相当贴切的比喻。通常云计算服务应该具备以下几条特征:

  • 基于虚拟化技术快速部署资源或获得服务

  • 实现动态的、可伸缩的扩展

  • ……”

    ​说云计算服务特征与自然的云或水有相似性,这难以厚非,毕竟用云这个概念就是想用自然云去形容其特征。但特征里的第一条,“基于虚拟化技术”,个人表示很不解。

    ​云计算的实现,一定要用虚拟化吗?个人认为,虚拟化技术只是推进云计算的发展,因为虚拟化技术使实现云的规模性变得简单了。如果没有虚拟化,以真机去实现云的规模是很吃力的,尤其当一般情况下,由于真机资源利用率低下,实现云浪费的资源是巨大。而虚拟化便是能充分利用真机的资源,同时解决了大规模联机的问题。当物理主机本身资源利用率便很高的情况下,虚拟化的意义也不大。

    ​再发散一下,如果有一台NB得不行的主机,同时能保证其资源的高利用率,那还需要做云吗?其实,云计算的网络端抽象成一个巨型主机的话,why not不直接用这样一个主机呢? 问题就是无法做到,才有的Google起初用各种廉价设备协同为世界提供强力搜索服务的美好故事,也有了现在云计算的需求。

 

写在最后

    ​写此文,最初只是自己想理清自己对云计算的思考。毕竟研一时自己看过些书,课程有相关内容,之后参与了实验室的云平台项目而且一直跟进着,自己觉得有必要总结总结,虽说比最初想写的多了许多内容,也显得零散许多。

   写得较杂,较乱,较浅,若有说的不是之处,望交流。







后更新:

从评论中,感觉自己说的还是很泛。不过,自己写这篇文章的初衷就是想“泛化地介绍云计算”,因为我只想介绍我对云计算这个概念,这种服务形态,甚至这种愿景的理解。

我不想太纠结于,说实现云计算就必须基于哪些具体的技术,或说用了什么具体技术就是云计算,如Hadoop,虚拟化,mongoDB等具体NoSQL技术,以及一些国外云计算的开源系统如Eucalyptus,等等。自己实验室团队实现的云应用平台,也不是一个东凑西凑用各种“云”称号的具体技术集成的一个“云”,而是按照对云应用平台的需求和对云计算的理解,而自主去设计和实现的一个云应用平台。上述大部分常见的云计算涉及的技术我们都没有采用,因为不觉得我们必须就得用它们。

写此文,按标题而言,就是说一下 ”如何向别人解释云计算“。

文中说了,这要一看对象,二看你要讲的点。过程中,自己是从不同的层面去讲自己对云计算的理解,比如它的概念定义,对其形式或作用的抽象理解,说说它简单的特征,等等。然后最后还闲谈了其他点的内容,如云计算是不是一定要虚拟化。除了表达自己对云计算的理解之外,我更想说明的是,一个内容,不仅要有自己的理解,还得明白可以从多个方面多个角度去阐释。

一看对象二看要讲的点,其实这两点都为另一个更关键的点服务——看你的目的。比如微软重视“云的端”,我想这是因为他主要是靠端的;IBM则主打“虚拟化”,还写了本书,我觉得因为它是为了间接地卖它的服务器的。有个叫Platform的云计算公司,从这个名称,就知道它怎么对云计算做定义的,因为它要卖的就是P云。(有时去了解一个定义,关键之一是去了解做这个定义的组织或个人的动机!)嗯,我就想谈谈自己对云计算的“泛化理解”,所以我选择了从”如何解释云计算“这个主题进行,因为解释这词,一般就是讲讲概念,讲讲理解,而不是用什么”深入剖析云计算“之类的主题。

本人也非什么大牛,只是有些想法便想总结说说,为了自我提高也好,为了交流分享也好,为了增加关注也好,总之,都是好事。

欢迎更多交流~

编辑更新于:2011.11.24 18:25


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐