云计算思想的形成:
传统模式下,企业建立一套IT系统不仅仅需要购买硬件等基础设施,还有买软件的许可证,需要专门的人员维护。当企业的规模扩大时还要继续升级各种软硬件设施以满足需要。对于企业来说,计算机等硬件和软件本身并非他们真正需要的,它们仅仅是完成工作、提供效率的工具而已。对个人来说,我们想正常使用电脑需要安装许多软件,而许多软件是收费的,对不经常使用该软件的用户来说购买是非常不划算的。可不可以有这样的服务,能够提供我们需要的所有软件供我们租用?这样我们只需要在用时付少量“租金”即可“租用”到这些软件服务,为我们节省许多购买软硬件的资金。我们每天都要用电,但我们不是每家自备发电机,它由电厂集中提供;我们每天都要用自来水,但我们不是每家都有井,它由自来水厂集中提供。这种模式极大得节约了资源,方便了我们的生活。面对计算机给我们带来的困扰,我们可不可以像使用水和电一样使用计算机资源?这些想法最终导致了云计算的产生。
云计算的最终目标是将计算、服务和应用作为一种公共设施提供给公众,使人们能够像使用水、电、煤气和电话那样使用计算机资源。云计算模式即为电厂集中供电模式。在云计算模式下,用户的计算机会变的十分简单,或许不大的内存、不需要硬盘和各种应用软件,就可以满足我们的需求,因为用户的计算机除了通过浏览器给“云”发送指令和接受数据外基本上什么都不用做便可以使用云服务提供商的计算资源、存储空间和各种应用软件。这就像连接“显示器” 和“主机”的电线无限长,从而可以把显示器放在使用者的面前,而主机放在远到甚至计算机使用者本人也不知道的地方。云计算把连接“显示器”和“主机”的电线变成了网络,把“主机”变成云服务提供商的服务器集群。
在云计算环境下,用户的使用观念也会发生彻底的变化:从“购买产品”到“购买服务”转变,因为他们直接面对的将不再是复杂的硬件和软件,而是最终的服务。用户不需要拥有看得见、摸得着的硬件设施,也不需要为机房支付设备供电、空调制冷、专人维护等等费用,并且不需要等待漫长的供货周期、项目实施等冗长的时间,只需要把钱汇给云计算服务提供商,我们将会马上得到需要的服务。
什么是云计算?
云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。它意味着计算能力也可作为一种商品通过互联网进行流通。
云计算的发展背景:
云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。
云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。这可是一种革命性的举措,打个比方,这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。云计算的蓝图已经呼之欲出:在未来,只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。从这个角度而言,最终用户才是云计算的真正拥有者。
云计算的应用包含这样的一种思想,把力量联合起来,给其中的每一个成员使用。
云计算的产生历程:
1983年,太阳电脑(Sun Microsystems)提出“网络是电脑”(“The Network is the Computer”),2006年3月,亚马逊(Amazon)推出弹性计算云(Elastic Compute Cloud;EC2)服务。
2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SES San Jose 2006)首次提出“云计算”(Cloud Computing)的概念。Google“云端计算”源于Google工程师克里斯托弗·比希利亚所做的“Google 101”项目。
2007年10月,Google与IBM开始在美国大学校园,包括卡内基梅隆大学、麻省理工学院、斯坦福大学、加州大学柏克莱分校及马里兰大学等,推广云计算的计划,这项计划希望能降低分布式计算技术在学术研究方面的成本,并为这些大学提供相关的软硬件设备及技术支持(包括数百台个人电脑及BladeCenter与System x服务器,这些计算平台将提供1600个处理器,支持包括Linux、Xen、Hadoop等开放源代码平台)。而学生则可以通过网络开发各项以大规模计算为基础的研究计划。
2008年1月30日,Google宣布在台湾启动“云计算学术计划”,将与台湾台大、交大等学校合作,将这种先进的大规模、快速计算技术推广到校园。
2008年2月1日,IBM(NYSE: IBM)宣布将在中国无锡太湖新城科教产业园为中国的软件公司建立全球第一个云计算中心(Cloud Computing Center)。
2008年7月29日,雅虎、惠普和英特尔宣布一项涵盖美国、德国和新加坡的联合研究计划,推出云计算研究测试床,推进云计算。该计划要与合作伙伴创建6个数据中心作为研究试验平台,每个数据中心配置1400个至4000个处理器。这些合作伙伴包括新加坡资讯通信发展管理局、德国卡尔斯鲁厄大学Steinbuch计算中心、美国伊利诺伊大学香宾分校、英特尔研究院、惠普实验室和雅虎。
2008年8月3日,美国专利商标局网站信息显示,戴尔正在申请“云计算”(Cloud Computing)商标,此举旨在加强对这一未来可能重塑技术架构的术语的控制权。
2010年3月5日,Novell与云安全联盟(CSA)共同宣布一项供应商中立计划,名为“可信任云计算计划(Trusted Cloud Initiative)”。
2010年7月,美国国家航空航天局和包括Rackspace、AMD、Intel、戴尔等支持厂商共同宣布“OpenStack”开放源代码计划,微软在2010年10月表示支持OpenStack与Windows Server 2008 R2的集成;而Ubuntu已把OpenStack加至11.04版本中。
2011年2月,思科系统正式加入OpenStack,重点研制OpenStack的网络服务。
云计算能带来什么?
1、安全,云计算提供了最可靠、最安全的数据存储中心,用户不用再担心数据丢失、病毒入侵等麻烦。
2、方便,它对用户端的设备要求最低,使用起来很方便。
3、数据共享,它可以轻松实现不同设备间的数据与应用共享。
4、无限可能,它为我们使用网络提供了几乎无限多的可能。
云计算特点:
1)虚拟化技术:这是云计算最强调的特点,包括资源虚拟化和应用虚拟化。每一个应用部署的环境和物理平台是没有关系的。通过虚拟半台进行管理达到对应用进行扩展、迁移、备份,操作均通过虚拟化层次完成。
2)动态可扩展:通过动态扩展虚拟化的层次达到对应用进行扩展的目的。:可以实时将服务器加入到现有的服务器机群中,增加“云”的计算能力。
3)按需部署:用户运行不同的应用需要不同的资源和计算能力。云计算平台可以按照用户的需求部署资源和计算能力。
4)高灵活性:现在大部分的软件和硬件都对虚拟化有一定支持,各种IT资源,例如,软件、硬件、操作系统、存储网络等所有要素通过虚拟化,放在云计算虚拟资源池中进行统一管理。同时,能够兼容不同硬件厂商的产品,兼容低配置机器和外设而获得高性能计算。
5)高可靠性:虚拟化技术使得用户的应用和计算分布在不同的物理服务器上面,即使单点服务器崩溃,仍然可以通过动态扩展功能部署新的服务器作为资源和计算能力添加进来,保证应用和计算的正常运转。
6)高性价比:云计算采用虚拟资源池的方法管理所有资源,对物理资源的要求较低。可以使用廉价的PC组成云,而计算性能却可超过大型主机。
云计算的服务形式:
1.SAAS(软件即服务)
SaaS服务提供商将应用软件统一部署在自己的服务器上,用户根据需求通过互联网向厂商订购应用软件服务,服务提供商根据客户所定软件的数量、时间的长短等因素收费,并且通过浏览器向客户提供软件的模式。这种服务模式的优势是,由服务提供商维护和管理软件、提供软件运行的硬件设施,用户只需拥有能够接入互联网的终端,即可随时随地使用软件。这种模式下,客户不再像传统模式那样花费大量资金在硬件、软件、维护人员,只需要支出一定的租赁服务费用,通过互联网就可以享受到相应的硬件、软件和维护服务,这是网络应用最具效益的营运模式。对于小型企业来说,SaaS是采用先进技术的最好途径。以企业管理软件来说,SaaS模式的云计算ERP可以让客户根据并发用户数量、所用功能多少、数据存储容量、使用时间长短等因素不同组合按需支付服务费用,既不用支付软件许可费用,也不需要支付采购服务器等硬件设备费用,也不需要支付购买操作系统、数据库等平台软件费用,也不用承担软件项目定制、开发、实施费用,也不需要承担IT维护部门开支费用,实际上云计算ERP正是继承了开源ERP免许可费用只收服务费用的最重要特征,是突出了服务的ERP产品。目前,Salesforce.com是提供这类服务最有名的公司,Google Doc, Google Apps和Zoho Office也属于这类服务。
2.实用计算(Utility Computing)
这个主意很早就有了,但是知道最近才在Amazon.com、Sun、IBM和其它提供存储服务和虚拟服务器的公司中新生。这种云计算是为IT行业创造虚拟的数据中心使得其能够把内存、I/O设备、存储和计算能力集中起来成为一个虚拟的资源池来为整个网络提供服务。
3.网络服务
同SAAS关系密切,网络服务提供者们能够提供API让开发者能够开发更多基于互联网的应用,而不是提供单机程序。
4.平台即服务
把开发环境作为一种服务来提供。这是一种分布式平台服务,厂商提供开发环境、服务器平台、硬件资源等服务给客户,用户在其平台基础上定制开发自己的应用程序并通过其服务器和互联网传递给其他客户。PaaS能够给企业或个人提供研发的中间件平台,提供应用程序开发、数据库、应用服务器、试验、托管及应用服务。Google App Engine, Salesforce的force.com平台,八百客的800APP是PaaS的代表产品。以Google App Engine为例,它是一个由python应用服务器群、BigTable数据库及GFS组成的平台,为开发者提供一体化主机服务器及可自动升级的在线应用服务。用户编写应用程序并在Google的基础架构上运行就可以为互联网用户提供服务,Google提供应用运行及维护所需要的平台资源。
5.MSP(管理服务提供商)
最古老的云计算运用之一。这种应用更多的是面向IT行业而不是终端用户,常用于邮件病毒扫描、程序监控等等。
6.商业服务平台
SAAS和MSP的混合应用,该类云计算为用户和提供商之间的互动提供了一个平台。比如用户个人开支管理系统,能够根据用户的设置来管理其开支并协调其订购的各种服务。
7.互联网整合
将互联网上提供类似服务的公司整合起来,以便用户能够更方便的比较和选择自己的服务供应商。
云计算的核心技术:
云计算系统运用了许多技术,其中以编程模型、数据管理技术、数据存储技术、虚拟化技术、云计算平台管理技术最为关键。
(1)编程模型
MapReduce是Google开发的java、Python、C++编程模型,它是一种简化的分布式编程模型和高效的任务调度模型,用于大规模数据集(大于1TB)的并行运算。严格的编程模型使云计算环境下的编程十分简单。MapReduce模式的思想是将要执行的问题分解成Map(映射)和Reduce(化简)的方式,先通过Map程序将数据切割成不相关的区块,分配(调度)给大量计算机处理,达到分布式运算的效果,再通过Reduce程序将结果汇整输出。
(2) 海量数据分布存储技术
云计算系统由大量服务器组成,同时为大量用户服务,因此云计算系统采用分布式存储的方式存储数据,用冗余存储的方式保证数据的可靠性。云计算系统中广泛使用的数据存储系统是Google的GFS和Hadoop团队开发的GFS的开源实现HDFS。GFS即Google文件系统(Google File System),是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。GFS的设计思想不同于传统的文件系统,是针对大规模数据处理和Google应用特性而设计的。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。一个GFS集群由一个主服务器(master)和大量的块服务器(chunkserver)构成,并被许多客户(Client)访问。主服务器存储文件系统所以的元数据,包括名字空间、访问控制信息、从文件到块的映射以及块的当前位置。它也控制系统范围的活动,如块租约(lease)管理,孤儿块的垃圾收集,块服务器间的块迁移。主服务器定期通过HeartBeat消息与每一个块服务器通信,给块服务器传递指令并收集它的状态。GFS中的文件被切分为64MB的块并以冗余存储,每份数据在系统中保存3个以上备份。客户与主服务器的交换只限于对元数据的操作,所有数据方面的通信都直接和块服务器联系,这大大提高了系统的效率,防止主服务器负载过重。
(3) 海量数据管理技术
云计算需要对分布的、海量的数据进行处理、分析,因此,数据管理技术必需能够高效的管理大量的数据。云计算系统中的数据管理技术主要是Google的BT(BigTable)数据管理技术和Hadoop团队开发的开源数据管理模块HBase。BT是建立在GFS, Scheduler, Lock Service和MapReduce之上的一个大型的分布式数据库,与传统的关系数据库不同,它把所有数据都作为对象来处理,形成一个巨大的表格,用来分布存储大规模结构化数据。Google的很多项目使用BT来存储数据,包括网页查询,Google earth和Google金融。这些应用程序对BT的要求各不相同:数据大小(从URL到网页到卫星图象)不同,反应速度不同(从后端的大批处理到实时数据服务)。对于不同的要求,BT都成功的提供了灵活高效的服务。
(4)虚拟化技术
通过虚拟化技术可实现软件应用与底层硬件相隔离,它包括将单个资源划分成多个虚拟资源的裂分模式,也包括将多个资源整合成一个虚拟资源的聚合模式。虚拟化技术根据对象可分成存储虚拟化、计算虚拟化、网络虚拟化等,计算虚拟化又分为系统级虚拟化、应用级虚拟化和桌面虚拟化。
(5)云计算平台管理技术
云计算资源规模庞大,服务器数量众多并分布在不同的地点,同时运行着数百种应用,如何有效的管理这些服务器,保证整个系统提供不间断的服务是巨大的挑战。云计算系统的平台管理技术能够使大量的服务器协同工作,方便的进行业务部署和开通,快速发现和恢复系统故障,通过自动化、智能化的手段实现大规模系统的可靠运营。
现有云计算平台简介:
(1)Google 的云计算平台
Google的硬件条件优势,大型的数据中心、搜索引擎的支柱应用,促进Google云计算迅速发展。Google的云计算主要由MapReduce、Google文件系统(GFS)、BigTable组成。它们是Google内部云计算基础平台的3个主要部分。Google 还构建其他云计算组件,包括一个领域描述语言以及分布式锁服务机制等。Sawzall是一种建立在MapReduce基础上的领域语言,专门用于大规模的信息处理。Chubby是一个高可用、分布式数据锁服务,当有机器失效时,Chubby使用Paxos算法来保证备份。
(2)IBM“蓝云”计算平台
“蓝云”解决方案是由IBM云计算中心开发的企业级云计算解决方案。该解决方案可以对企业现有的基础架构进行整合,通过虚拟化技术和自动化技术,构建企业自己拥有的云计算中心,实现企业硬件资源和软件资源的统一管理、统一分配、统一部署、统一监控和统一备份,打破应用对资源的独占,从而帮助企业实现云计算理念。IBM 的“蓝云”计算平台是一套软、硬件平台,将Internet上使用的技术扩展到企业平台上,使得数据中心使用类似于互联网的计算环境。“蓝云”大量使用了IBM先进的大规模计算技术,结合了IBM自身的软、硬件系统以及服务技术,支持开放标准与开放源代码软件。“蓝云”基于IBM Almaden研究中心的云基础架构,采用了Xen和PowerVM虚拟化软件,Linux操作系统映像以及Hadoop软件(Google File System以及MapReduce的开源实现)。IBM已经正式推出了基于x86芯片服务器系统的“蓝云”产品。下图为IBM “蓝云”的架构:
由图可知,“蓝云”计算平台由一个数据中心、IBM Tivoli部署管理软件(Tivoli provisioning manager)、IBM Tivoli监控软件(IBM Tivoli monitoring)、IBM WebSphere应用服务器、IBM DB2数据库以及一些开源信息处理软件和开源虚拟化软件共同组成。“蓝云”的硬件平台环境与一般的x86服务器集群类似,使用刀片的方式增加了计算密度。“蓝云”软件平台的特点主要体现在虚拟机以及对于大规模数据处理软件Apache Hadoop的使用上。
“蓝云”平台的一个重要特点是虚拟化技术的使用。虚拟化的方式在“蓝云”中有两个级别,一个是在硬件级别上实现虚拟化,另一个是通过开源软件实现虚拟化。硬件级别的虚拟化可以使用IBM p系列的服务器,获得硬件的逻辑分区LPAR(logic partition)。逻辑分区的CPU资源能够通过IBM Enterprise Workload Manager来管理。通过这样的方式加上在实际使用过程中的资源分配策略,能够使相应的资源合理地分配到各个逻辑分区。p系列系统的逻辑分区最小粒度是1/10颗CPU。Xen则是软件级别上的虚拟化,能够在Linux基础上运行另外一个操作系统。
虚拟机是一类特殊的软件,能够完全模拟硬件的执行,运行不经修改的完整的操作系统,保留了一整套运行环境语义。通过虚拟机的方式,在云计算平台上获得如下一些优点 : 1)云计算的管理平台能够动态地将计算平台定位到所需要的物理节点上, 而无须停止运行在虚拟机平台上的应用程序,进程迁移方法更加灵活;2)降低集群电能消耗,将多个负载不是很重的虚拟机计算节点合并到同一个物理节点上,从而能够关闭空闲的物理节点,达到节约电能的目的;3)通过虚拟机在不同物理节点上的动态迁移,迁移了整体的虚拟运行环境,能够获得与应用无关的负载平衡性能;4)在部署上也更加灵活,即可以将虚拟机直接部署到物理计算平台上,而虚拟机本身就包括了相应的操作系统以及相应的应用软件,直接将大量的虚拟机映像复制到对应的物理节点即可。“蓝云”计算平台中的存储体系结构:“蓝云”计算平台中的存储体系结构对于云计算来说也是非常重要的,无论是操作系统、服务程序还是用户的应用程序的数据都保存在存储体系中。
“蓝云”存储体系结构包含类似于Google File System 的集群文件系统以及基于块设备方式的存储区域网络SAN。在设计云计算平台的存储体系结构时,可以通过组合多个磁盘获得很大的磁盘容量。相对于磁盘的容量,在云计算平台的存储中,磁盘数据的读写速度是一个更重要的问题,因此需要对多个磁盘进行同时读写。这种方式要求将数据分配到多个节点的多个磁盘当中。为达到这一目的,存储技术有两个选择,一个是使用类似于Google File System的集群文件系统,另一个是基于块设备的存储区域网络SAN系统。在蓝云计算平台上,SAN 系统与分布式文件系统(例如Google File System)并不是相互对立的系统,SAN提供的是块设备接口,需要在此基础上构建文件系统,才能被上层应用程序所使用。而Google File System正好是一个分布式的文件系统,能够建立在SAN之上。两者都能提供可靠性、可扩展性,至于如何使用还需要由建立在云计算平台上的应用程序来决定,这也体现了计算平台与上层应用相互协作的关系。
(3)Amazon的弹性计算云
Amazon是互联网上最大的在线零售商,为了应付交易高峰,不得不购买了大量的服务器。而在大多数时间,大部分服务器闲置,造成了很大的浪费,为了合理利用空闲服务器,Amazon建立了自己的云计算平台弹性计算云EC2(elastic compute cloud),并且是第一家将基础设施作为服务出售的公司。Amazon将自己的弹性计算云建立在公司内部的大规模集群计算的平台上,而用户可以通过弹性计算云的网络界面去操作在云计算平台上运行的各个实例(instance)。用户使用实例的付费方式由用户的使用状况决定,即用户只需为自己所使用的计算平台实例付费,运行结束后计费也随之结束。这里所说的实例即是由用户控制的完整的虚拟机运行实例。通过这种方式,用户不必自己去建立云计算平台,节省了设备与维护费用。
上图为EC2系统的使用模式。从图中可以看出,弹性计算云用户使用客户端通过SOAP over HTTPS协议与Amazon弹性计算云内部的实例进行交互。这样,弹性计算云平台为用户或者开发人员提供了一个虚拟的集群环境,在用户具有充分灵活性的同时,也减轻了云计算平台拥有者(Amazon公司)的管理负担。弹性计算云中的每一个实例代表一个运行中的虚拟机。用户对自己的虚拟机具有完整的访问权限,包括针对此虚拟机操作系统的管理员权限。虚拟机的收费也是根据虚拟机的能力进行费用计算的,实际上,用户租用的是虚拟的计算能力。总而言之,Amazon通过提供弹性计算云,满足了小规模软件开发人员对集群系统的需求,减小了维护负担。其收费方式相对简单明了:用户使用多少资源,只需为这一部分资源付费即可。为了弹性计算云的进一步发展,Amazon规划了如何在云计算平台基础上帮助用户开发网络化的应用程序。除了网络零售业务以外,云计算也是Amazon公司的核心价值所在。Amazon将来会在弹性计算云的平台基础上添加更多的网络服务组件模块,为用户构建云计算应用提供方便。
云计算发展所面临的主要问题:
尽管云计算模式具有许多优点,但是也存在的一些问题,如数据隐私问题、安全问题、软件许可证问题、网络传输问题等。1) 数据隐私问题:如何保证存放在云服务提供商的数据隐私,不被非法利用,不仅需要技术的改进,也需要法律的进一步完善。2) 数据安全性:有些数据是企业的商业机密,数据的安全性关系到企业的生存和发展。云计算数据的安全性问题解决不了会影响云计算在企业中的应用。 3) 用户使用习惯:如何改变用户的使用习惯,使用户适应网络化的软硬件应用是长期而艰巨的挑战。3) 网络传输问题:云计算服务依赖网络,目前网速低且不稳定,使云应用的性能不高。云计算的普及依赖网络技术的发展。