在写这篇文章之前,曾经有很多人问过笔者类似的问题,比如说,"云计算跟网格计算到底什么关系"、"他们两个的区别到底在哪里"、"能不能简单地讲一下其中的区别"?
其实,一下子很难讲清楚其中的具体区别。笔者此前曾经在首次接触云计算概念时,将云计算看成"网格2.0,这一点得到了一些业内人士的认可;后来笔者也曾经翻译了美国《Network World》的一篇文章,澄清了有关云计算的一些定义。
不过,笔者认为这些都似乎还比较空泛。在采访过网格计算相关的技术专家和云计算方面的技术专家之后,笔者尝试着给出一些自己的看法。
当然,从定义上来说,二者都试图将各种IT资源看成一个虚拟的资源池,然后向外提供相应的服务。云计算试图让"用户透明地使用资源",而网格计算当初的口号就是让"使用IT资源像使用水电一样简单"。
根据维基百科所提供的定义,云计算是一种宽泛的概念,它允许用户通过互联网访问各种基于IT资源的服务,这种服务允许用户无需了解底层IT基础设施架构就能够享受到作为服务的"IT相关资源"。
而网格的内涵包括两个方面,一个方面是所谓的效用计算或者随需计算,在这一点上面,网格计算跟云计算是非常相似的,都是通过一个资源池或者分布式的计算资源来提供在线的计算或者存储等服务;另外一个方面就是所谓的"虚拟超级计算机",以松耦合的方式将大量的计算资源连接在一起提供单个计算资源所无法完成的超级计算能力,这也是狭义上的网格计算跟云计算概念上最大的差别,也是本文要讨论的出发点。
目标不同
一般来说,谈到网格计算大家都会想到当年风靡一时的搜寻外星人项目,也就是说通过在本机安装一个屏幕保护软件,就能够利用大家每个人的PC闲暇时候的计算能力来参与搜寻外星人的计算。
这也说明了网格的目标,是想要尽可能地利用各种资源。它通过特定的网格软件,将一个庞大的项目分解为无数个相互独立的、不太相关的子任务,然后交由各个计算节点进行计算。即便某个节点出现问题,没有能够及时返回结果,也不影响整个项目的进程,甚至即便某一个计算节点突然崩溃,其所承担的计算任务也能够被任务调度系统分配给其他的节点继续完成。应该说,从这一点来说,作业调度是网格计算的核心价值。
现在谈到云计算的时候,我们就能够立刻想到通过互联网将数据中心的各种资源打包成服务向外提供。一般来说,尽管云计算也像网格计算一样将所有的资源构筑成一个庞大的资源池,但是云计算向外提供的某个资源,是为了完成某个特定的任务。比如说某个用户可能需要从资源池中申请一定量的资源来部署其应用,而不会将自己的任务提交给整个网格来完成。
从这一点来看,网格的构建大多为完成某一个特定的任务需要,这也是会有生物网格、地理网格、国家教育网格等各种不同的网格项目出现的原因。而云计算一般来说都是为了通用应用而设计的,没有专门的以某种应用命名的网格。
分配资源方式的不同
对于网格计算来说,其资源虽然也已经被池化,在外界看来就是一个巨大的资源池。对于要提交特定任务的用户来说,他并不知道自己的任务将会在哪些网格的物理节点上运行。他只是按照特定的格式,将作业任务提交给网格系统,然后等待网格返回结果。
而网格作业调度系统自动找寻与该任务相匹配的资源,然后寻找出空闲的物理节点,将任务分配过去直至完成。虽然网格能够实现跨物理机进行并行作业处理,但是需要用户先将并行算法写好,并且通过调度系统将作业分解到各个不同的物理节点进行,这个过程相对比较复杂,这也是很多网格计算被建设用来完成特定需求的原因。
国家教育网格项目组负责人金海教授曾经对记者表示,现阶段的教育网格还只能实现将某一个特定任务派往特定的某一个节点,也就是说网格可以监控某一个节点是空闲的,然后分派任务,但是如果没有合适的节点能够达到任务完成所需要的配置,那么任务就必须等待其他任务将资源释放出来,不能利用分散的配置。
而云计算是通过虚拟化将物理机的资源进行切割,从这个角度来实现资源的随需分配和自动增长,并且其资源的自动分配和增减不能超越物理节点本身的物理上限。尽管从控制端来看,云计算也将所有的IT资源看成是一个资源池,但是不同芯片的物理机会被归类到不同的资源池中。
比如说可以呼应某一个应用的请求,而给其分配一颗x86 CPU或者Power CPU、安腾CPU,分配内存、硬盘空间,再给其安装Linux系统、相关的应用,但是不能同时分配一颗x86 CPU和一颗其他的CPU以构成一个异构的环境。而且,如果节点中的物理机最高CPU数量是4颗的话,那么即使由10台这样的节点构成一个40CPU的资源池,也不能为某一个应用分配8颗CPU的虚拟节点。
从这种角度来说,Amazon在2006年所推出的EC2项目(Elastic Compute Cloud,弹性计算云)的确算的上是云计算项目,只不过那个时候云计算概念未兴起,而网格计算的概念方兴未艾,Amazon在那个时候依然用网格的概念向外推销该项目。
殊途同归
其实就像很多人大致了解的那样,网格计算与云计算的确有很多的相似之处,这两者都能够被看成是分布式计算所衍生出来的概念,都是为了让IT资源能够对用户透明,为了让IT资源能够达到更好的使用率。
从这个提高资源利用率的角度出发,逐渐诞生了Web服务的概念,然后网络公司通过部署数以万计的服务器构成庞大的计算资源,得以提供此前无法完成的新服务。企业或者个人能够通过互联网利用那些大网络公司所释放出来的计算资源,进行应用部署或者向外提供服务。这就是从网格计算到云计算的历史过程。
二者的意义就在于,无论是用户还是企业开发者,都能够通过互联网来获得数据或者进行计算,尽管本地资源有限,但是能够通过网络进行复杂的运算,其数据的计算过程对于用户来说就像互联网网络对于本地网络用户一样,正如大家所记得那个网络云,后端的实现是透明的。