“云计算”和“虚拟化”的区别

云计算
所有你搞不懂的技术术语、专有名词背后,都会有一个不是技术领域的需求,这个需求才是你需要首先了解的“根本性需求”,而只有你认识到这些“非技术领域”的问题(或者叫需求),才能算是对这个领域真正开始入门了。

   我们平时一直在口头谈起的“云计算”和“虚拟化”究竟指的是什么呢?

  简单来说,云计算是一个概念,而不是具体技术。虚拟化是一种具体技术,指把硬件资源虚拟化,实现隔离性、可扩展性、安全性、资源可充分利用等特点的产品。

  CPU虚拟化的技术包括Intel的VT-x,AMD的AMD-V。虚拟化的软件有VMWare,Hyper-V,Xen,KVM,OpenVZ等

  目前云计算,大多是依赖虚拟化,通过把多台服务器实体虚拟化后,构成一个资源池,实现共同计算,共享资源。也就是现在所谓“云计算”,其实这个词提出来之前,过去的“服务器集群”就已经实现这些功能了,只不过没有现在那么先进而已。

  那么,虚拟化技术与现流行的大数据Hadoop技术有什么区别,解决的是一类问题么?

  虚拟化主要解决资源利用率,资源提供的自动扩展。有服务器(compute)虚拟化(kvm/xen/lxc等),存储虚拟化,网络虚拟化。原来的数据中心服务器整合就利用了大量的虚拟化。现在的云计算模式也以虚拟化技术为基础,特别是IAAS层。但云计算本质是效用计算,按需付费,因此SAAS也可以不基于虚拟化来实现。

  Hadoop就是用来解决google类似的大数据的分析引入的计算框架。(mapreduce和分布式存储)。你可以把这些东西放在虚拟化环境里的。

  虚拟化技术是否都适用于并行计算,分布式大数据存储和检索?

  这里得区分是“什么的”虚拟化。如上,有服务器虚拟化,存储虚拟化,网络虚拟化。现在流行软件定义网络,软件定义存储,广义的说,这也算是虚拟化技术的应用。

  并行计算是一种计算模式。可以基于虚拟化技术来实现。lerlang就是采用vm的方式来表示多进程。但是也可以在硬件上实现。

  虚拟化技术和云计算这两个概念对应的现实环境中的问题是不同的。

  虚拟化技术(尤其是桌面虚拟化),主要的目的是:

  提高硬件资源的利用率。

  提高运维、管理的效率。

  云计算(尤其是Hadoop)的主要目的是:

  在合理的时间内,对海量的数据进行分析,找出背后的规律和趋势。

  对于这种概念,最忌讳的就是死记硬背,因为那样你很快就会被一堆的专有名词、英文缩写所淹没。

  云计算是一种服务;虚拟化和分布式系统都是用来实现云计算的关键技术之一。

  云计算通常可能从两个方面理解:

  一是将IT作为一种服务的业务模式,如AWS、阿里云,其目标是让IT未来像水和电一样随时随地、简单方便的使用,并按使用量收费;

  二是IT自身的一种演进和优化,其目标是提高效率和降低成本,或者说用一种成本可接受的方式解决越来越复杂的业务问题,例如海量数据的存储和分析、超高并发访问(如双11或12306)等。

  云计算可以理解为一种租借式的服务,即你可以对IT系统内部的原理什么都不懂,也不需要买到手,但是随时可以使用公共的IT资源为自己服务,比如baidu,比如QQ,比如163邮箱。

  虚拟化作为一种技术,可以帮助云计算实现以上目标:资源分配更加灵活、资源利用率更高。同时技术成熟、对上层应用也基本不影响,因此被广泛使用,甚至在很多时候虚拟化成为了云计算的代名词。

  简单讲解之后,下面我们来深入了解一下云计算:

  云计算 (cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。

 

[[187329]]

  云计算的特点:

  (1) 超大规模

  “云”具有相当的规模,Google云计算已经拥有100多万台服务器, Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。“云”能赋予用户***的计算能力。

  (2) 虚拟化

  云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。

  (3) 高可靠性

  “云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。

  (4) 通用性

  云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。

  (5) 高可扩展性

  “云”的规模可以动态伸缩,满足应用和用户规模增长的需要。

  (6) 按需服务

  “云”是一个庞大的资源池,你按需购买;云可以像自来水,电,煤气那样计费。

  (7) 极其廉价

  由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。

  云计算可以彻底改变人们未来的生活,但同时也要重视环境问题,这样才能真正为人类进步做贡献,而不是简单的技术提升。

  (8) 潜在的危险性

  云计算服务除了提供计算服务外,还必然提供了存储服务。但是云计算服务当前垄断在私人机构(企业)手中,而他们仅仅能够提供商业信用。对于政府机构、商业机构(特别像银行这样持有敏感数据的商业机构)对于选择云计算服务应保持足够的警惕。一旦商业用户大规模使用私人机构提供的云计算服务,无论其技术优势有多强,都不可避免地让这些私人机构以“数据(信息)”的重要性挟制整个社会。对于信息社会而言,“信息”是至关重要的。另一方面,云计算中的数据对于数据所有者以外的其他用户云计算用户是保密的,但是对于提供云计算的商业机构而言确实毫无秘密可言。所有这些潜在的危险,是商业机构和政府机构选择云计算服务、特别是国外机构提供的云计算服务时,不得不考虑的一个重要的前提。

  讲完了云计算,我们再来好好说说虚拟化。

  虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

  虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

  它是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层没有固定的墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间***利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到***利用率的思路,在IT领域就叫做虚拟化技术。

  虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

  虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。

  目前来讲虚拟化主要常用两个核心技术:服务器虚拟化,与应用虚拟化。

  目前来讲分布式系统主要用到的两个核心技术:分布式存储,与分布式计算。

  我认为对虚拟化技术***的定义就是可以让IT系统的物理拓扑图与逻辑拓扑图无关,即解耦。

  我们暂时以商用虚拟化系统vmware举例

  为了实现拓扑解耦,它做的***点就是让一台机器可以同时跑多个操作系统,即虚拟机,而且虚拟机还可以在物理机间来回转移,高可用,这样我们的操作系统就从物理机上彻底解放出来了,你可以把同一个虚拟机随时放到其他物理机上,实现了对硬件的高效资源利用,和系统的高度灵活,解除了大量人工劳动,便于实现大规模系统的方便管理,这种就是服务器虚拟化(vSphere)。

  光系统分开还不行,你有时还需要各种方式访问虚拟机系统,于是你就会是用远程桌面等方式去访问这些后台的虚拟机,这种就是应用虚拟化(view)。

  当然还有网络虚拟化,存储虚拟化等各种其他虚拟化技术正在慢慢成长,不过相对于前两者无论是商用还是开源,都还不太成熟,暂不讨论。

  我认为对分布式系统比较合适的定义是把所有IT资源看成为一个整体来使用,而不是去独立的看某个机器某个系统,即资源池。

  我们暂时以开源Hadoop为例

  为实现将IT资源变成整体,它要做到的***点就是将一个巨大的文件拆开放在多个地方,你可以用一大堆很普通的计算机用网络连在用来存放这一个巨型文件,这样即使很多很小硬盘的机器也可以通过连在一起当成一个很大的存储空间来用,这种就是分布式存储(HDFS)。

  光文件存放合在一起不行,计算能力也要合在一起,所以它还要满足一个任务分给多个物理机来处理,这样即便一堆老破电脑,通过这种方式连在一起,只要足够多,也能当超级计算机用,这种就使分布式计算(MapReduce)。

  当然Hbase等其他的技术也在逐渐成熟,总的来讲都是为了解决建立巨型资源池需要的技术。

  由此可以看出虚拟化主要是把大块拆成小块儿,分布式系统主要是把小块组合成大块儿,IT资源经过这样的揉碎再组合,变成了一个十分灵活的系统,在这几个基本技术的基础上,在通过某种调度和经营,就可以实现云计算的服务模式了。

  ***说句题外话,基本上所有你搞不懂的技术术语、专有名词背后,都会有一个不是技术领域的需求,这个需求才是你需要首先了解的“根本性需求”,而只有你认识到这些“非技术领域”的问题(或者叫需求),才能算是对这个领域真正开始入门了。执着于纯技术层面,其实无法真正的解决问题。

责任编辑:陶家龙 来源: 知乎
相关推荐

2022-11-18 16:10:03

云计算虚拟机

2016-01-15 17:04:58

云计算云应用虚拟化

2010-08-11 10:49:19

虚拟化云计算

2012-06-07 09:03:16

2018-09-28 10:35:01

云计算虚拟化付费

2010-03-24 11:14:39

云计算

2011-12-28 13:26:57

2011-12-27 10:02:48

2010-03-17 14:33:44

云计算

2013-06-19 09:56:39

2015-05-22 09:49:25

2013-02-25 10:13:55

服务器虚拟化灾难恢复

2011-07-15 16:33:29

2009-08-11 14:31:10

云计算虚拟化

2009-02-01 14:59:38

服务器虚拟化云计算

2013-11-11 09:37:28

云计算网络虚拟化虚拟化

2011-07-28 09:29:54

虚拟化云计算

2010-06-04 10:52:03

虚拟化云计算

2019-06-18 16:47:16

云计算虚拟化容器化

2019-06-19 15:35:16

云计算虚拟化容器化
点赞
收藏

51CTO技术栈公众号