云计算预示着我们储存信息和运行应用程序的方式将发生重大变化。程序和数据不再运行和存放在个人台式计算机上,相反,一切都托管到“云”中——一个云状的、可通过因特网访问的、由个人计算机和服务器构成的集合。云计算能够让你从世界上的任何地方访问你所有的应用程序和文件,你不再受到桌面的限制,因而使得异地群组成员之间的协作变得更加容易。
从计算方式来说,云计算的出现相当于一个世纪以前的电力革命。在电力公用设施出现之前,每个农场和企业都利用各自的发电机单独发电。电网建成之后,农场和企业关闭了自己的发电机,改为从公用企业购买电力,其价格比他们自己生产更低(可靠性更高)。
随着云计算成为主流,相同类型的革命也将出现。当我们开始期待云计算所承诺的通用访问,24/7的可靠性和无处不在的协作,今日主流的、以台式机为中心的计算方式注定会走向没落。
这是未来的方式。
云计算:是什么和不是什么
利用传统的桌面计算,你需要在自己所拥有的每台电脑上都运行一份软件程序。你所创建的文档存放在创建他们的电脑上。虽然该文档可以被同一网络上的其他计算机访问,但是这些文档不能被该网络之外的其他计算机访问。
整个舞台以PC为中心。
利用云计算,你所使用的软件程序并不是运行在你的个人电脑上,而是存放在能够通过因特网访问的服务器 上。即使你的计算机崩溃了,该软件仍然可以供其他人使用。对于你所创建的文档同样如此,他们存放在能够通过因特网访问的一组服务器中。任何具有权限的人不 仅可以访问这些文档,而且可以对这些文档进行实时编辑和协作。与传统的计算模式以PC为中心不同,云计算模式是以文件为中心的。至于你使用哪一台电脑来访 问文档,这一点都不重要。
以上只是一个简单的说明。让我们更详细地看一下云计算究竟是什么,与之同样重要的一个问题是,云计算不是什么。
云计算不是什么
首先,云计算不是网络计算。在网络计算中,应用/文档存放在公司的一个单独的服务器上,通过公司的网络进行访问。云计算要比上述内容宽泛得多。它涉及 多个公司,多台服务器和多个网络。此外,与网络计算不同,云服务和存储可以从世界上的任何地方通过因特网连接进行访问,而网络计算只能通过公司的网络进行 访问。
云计算也不是传统的外包,即一个公司将自己的计算服务委托(分包)给一家外部的公司。虽然外包公司可能会存放一个公司的数据或应用程序,但那些文档和应用程序仅供该公司的员工通过公司内部的网络进行访问,而不是面向整个世界,通过因特网进行访问。
因此,尽管表面上看起来很类似,网络计算和外包不是云计算。
云计算是什么
云计算定义的关键在于“云”这个词本身。对我们而言,云是一组数量众多的、互连到一起的计算机。这些计算机可以是个人电脑或网络服务器,它们可以是公共的或私有的。
例如,谷歌提供的云由微型的个人电脑和大型的服务器组成。谷歌的云是私有的(即谷歌拥有它),但它可公开访问(对谷歌的用户) 。
这种计算机云能延伸到单独的公司或企业之外。云所提供的应用和数据可广泛的用于许多用户,跨企业和跨平台。对云的访问是通过因特网完成的。任何授权用户都可以从任何一台计算机上、通过任一因特网连接访问这些文档和应用。更进一步讲,对用户而言,云背后的技术和基础设施是不可见的。至于云服务是基于HTTP、HTML、XML、JavaScript还是其他特定的技术,从表面上看并不明显(而且在大多数情况下也不重要)。
让我们仔细研究一下云计算先锋之一的谷歌是如何看待云计算的,这将会对我们认识云计算有所帮助。从谷歌的角度来看,云计算有6个关键的特性:
◆云计算是以用户为中心的。作为一个使用者,一旦你连接到云中,那么那里存放的任何东西——文件、消息、图片、应用等等——都将变成你的。此外,不仅数据是你的,而且你还可以与他人共享。实际上,在云中访问你的数据的任何设备也都成为你的。
◆云计算是以任务为中心的。问题的焦点不再是应用程序和应用程序能做什么,而是你需要做什么和应用程序如何完成你的任务。传统的应用程序——文字处理,电子表格,电子邮件等等——与他们所创建的文件相比,已经变得越来越不重要。
◆云计算是强大的。云中数百或数千台电脑连接在一起所形成的巨大的计算能力是远非一台单独的台式机所能比拟的。
◆云计算是易于访问的。由于数据存储在云里,用户可以即时的从多个库中检索更多的信息。与使用台式机不同,你不再受到单一数据源的限制。
◆云计算是智能的。随着各种数据都被存储到云中的计算机上,为了更智能的访问这些信息,数据挖掘和分析是必不可少的。
◆云计算是可编程的。大量需要利用云计算的任务都必须是自动化的。例如,为了保护数据的完整性,存储在云中某台计算机上的信息必须被复制到云中的其他计算机上。这样,当那台计算机离线时,云程序就会自动将那台计算机的数据重新分配到云中的一台新的计算机上。
了解了所有这些定义,那么在现实世界中,云计算是由什么构成的呢?正如你将通过本书所了解到的,目前已经有大量web托管的、可通过因特网访问的、支 持群组协作的应用可供人们使用,而且更多的应用还在不断出现。现在最好和最流行的云计算应用的范例也许是谷歌应用家族——谷歌文档和电子表格,谷歌日 历,Gmail,Picasa等。所有这些应用都运行在谷歌的服务器上,可供任何具有因特网连接的用户访问,可用来支持来自世界任何角落的群组协作。
总之,云计算实现了从计算机到使用者,从应用到任务,从孤立的数据到可以随处访问、可与任何人共享的数据的转变。使用者可以不再从事数据管理的任务;他甚至无须记住数据的位置。所有这些情形都是因为数据在云里,因而可以立即被该用户和其他授权用户使用。
从协作到云:云计算简史
云计算的前身是客户机/服务器计算和对等的分布式计算。他们所关心的共同问题都是集中的存储如何促进协作和多台电脑如何一起工作从而提高计算能力。
客户机/服务器计算:集中式的应用和存储
在计算的初期阶段(大约1980年之前),一切都按照客户机/服务器模式运转。所有的应用软件,所有的数据,所有的控制都位于大型的电脑主机上,这些 电脑主机通常被称为服务器。如果用户想访问特定的数据或运行特定的程序,他必须连接到主机上,获得适当的权限,然后才能执行他的业务。从根本上说,用户是 从服务器“租用”程序或数据。
用户通过计算机终端(有时也称为工作站或客户端)连接到服务器。这台计算机有时也被称为哑终端,因为它并不具有大量的(如果有的话!)内存,存储空间或处理能力。它仅仅是一个用来把用户连接到主机,使得用户能够使用主机的装置。
用户只有被授予相应的权限之后才能访问主机。通常信息技术(IT)人员没有随意分发访问权限的习惯。即便是在主机上,处理能力也是非常有限的,而IT人员则是这些能力的保护者。访问不是即时的,两个用户也不能在同一时间访问相同的数据。
除此之外,无论IT人员提供给他们什么东西,用户都必须接受而不能有任何变化。想要定制一份只显示部分正常信息的报告吗?办不到。想要创建一份使用新数据的新报告吗?同样办不到。虽然IT人员可以做到,但根据他们的日程安排,这可能需要等待数周的时间。
事实是,当多人共用一台计算机,即使该计算机是一个巨大的主机,你也不得不等待你的次序。需要重新生成财务报告吗?没问题——如果你不介意等到下午或明天早晨。在客户机/服务器环境中,即时访问并非总是可行的,人们的需求很少能够马上得到满足。
因此,尽管客户机/服务器模式也提供了类似的集中存储,但它不是云计算,因为它不是以用户为中心的。使用客户机/服务器计算,所有的控制都位于主机上,受单一主机的管理。这不是一个有利于用户的环境。
对等计算:资源共享
如你所想,使用客户机/服务器系统是一种“紧急与等待”的体验。客户机/服务器系统的服务器部分会产生一个巨大的瓶颈。所有计算机之间的通信不得不首先通过服务器,然而这种做法效率可能是低下的。
无须经由服务器,将一台计算机连接到另一台计算机,这一显而易见的需求导致了对等(P2P)计算的发展。P2P计算定义了这样一种网络结构,其中的每 台电脑都有相等的能力和责任。这同传统的客户机/服务器的网络架构形成了鲜明的对比,在后一种架构中,一台或多台计算机专门用来为其他计算机提供服 务。(这种关系有时也被称为主/从关系,中央服务器是“主”,而客户计算机是“从”。)
P2P是一个平等的概念。在P2P环境中,每台计算机既是客户机又是服务器,没有主从之分。P2P把网络上的所有计算机都看作是对等的,因而使得直接的资源和服务交换成为可能。无需中央服务器的存在,因为任何一台电脑在需要的时候都能充当这一角色。
P2P也是一个分散的概念。控制是分散的,所有电脑平等运行。内容也分散在不同的电脑上。没有集中的服务器用来承载可用的资源和服务。
也许最著名的P2P实现就是因特网。今天,许多用户都已经忘记(或根本未曾知道),根据最早的阿帕网(ARPAnet)的想法,因特网最初被设计为一 个对等的系统,用来共享分布在美国各地的计算资源。不同的阿帕网站点——总数并不是很多——不是作为客户端和服务器,而是作为对等方连接在一起。
早期因特网的P2P特性可以通过新闻组(Usenet)网络来做最好的说明。新闻组,创建于1979年,是一个由计算机构成的网络(通过因特网访 问),每台计算机都提供整个网络的内容。信息在对等的计算机之间进行传播,无论用户连接到哪一台新闻组服务器上,都可以获得张贴到每个单独的服务器上的所 有(或几乎所有)的信息。虽然用户到新闻组服务器的连接具有传统的客户机/服务器特性,但新闻组服务器之间的关系肯定是P2P的,这就是今日云计算的雏 形。
当然,并非因特网的每一部分都具有P2P特性。随着万维网的发展,计算模式由P2P重新回到客户机/服务器模式。在web上,每个网站都由一组计算机 提供服务,网站的访问者使用客户端软件(web浏览器)来访问它。几乎所有的内容都是集中的,所有的控制也是集中的,在此过程中,客户没有任何自主权或控 制能力。
分布式计算:提供更多的计算能力
P2P模式的一个最重要的方面就是分布式计算,某个网络甚至整个因特网上的空闲个人电脑被组织起来,用来为大规模的、处理器密集型的项目提供计算能力。这是一个简单的概念,所有的一切都围绕着计算能力在多台计算机之间的共享。
一台每天运行24小时,每周运行7天的个人电脑能产生巨大的计算能力。然而,大多数人并不会以24/7的方式使用自己的计算机,因而计算机资源的很大一部分都未得到有效利用。分布式计算能够使用这些资源。
当一台计算机用于分布式计算项目时,为了在电脑空闲期间执行各种处理任务,需要在机器上安装软件。空闲时间处理的结果定期上传到分布式计算网络中,与来自项目中其他计算机的类似结果进行合并。只要有足够的计算机参与,上述做法的效果足以比拟更大的主机和超级计算机的处理能力——对于某些非常庞大和复杂的计算项目而言,这是必需的。
例如,基因研究需要大量的计算能力。采用传统的手段,可能需要数年时间才能解决基本的数学问题。通过将数千(或百万)台个人电脑连接在一起,将更多的计算能力用于同样的问题,很快就能得到结果。
分布式计算的历史可以追溯到1973年,当时施乐公司帕洛阿尔托研究中心(Xerox PARC)将实验室里的多台计算机连接到一起并开发了 蠕虫软件来漫游网络,寻找闲置的资源。一个更为实用的分布式计算应用出现在1988年,当时DEC(数字设备公司)系统研究中心的研究人员开发了一款软 件,用来向实验室内的工作站分发大数分解任务。到了1990年,一个约100个用户的小组利用这一软件,完成了一个100位数的因数分解。到1995年, 该应用已扩展到web,用于130位数的因数分解。
分布式计算与因特网相结合的时间并没有多久。第一个主要以因特网为基础的分布式计算项目是发起于1997年的distributed.net,它利用数千台个人计算机来破解密码。更大型的项目是发起于1999年5月的搜寻地外文明的SETI@home计划,它连接了数百万台个人计算机,用来搜寻太空智能生命。
许多分布式计算项目是在大型企业内部进行的,利用传统的网络连接形成分布式计算网络。其他更大的项目利用日常因特网用户的计算机,计算通常离线进行,然后通过传统的因特网连接每天上传一次。
协同计算:作为一个群组工作
从早期的客户机/服务器计算再到P2P的发展,始终存在这样的需求——让多个用户一起从事同一个基于计算机的项目。这种类型的协同计算就是云计算背后的驱动力,它已经存在超过10年了。
早期的群组协作综合利用几种不同的P2P技术,目的是让多个用户能够实时的、在线合作完成小组项目。
要在项目上合作,用户必须首先能够相互交谈。在今天,这指的是即时消息系统,除用于文本交流外,通常还具有可选的音频/电话和视频能力,用来进行基于语音和图像的交流。大多数协作系统为全功能的多用户视频会议提供了一系列的音频/视频选项,。
此外,用户必须能够共享文件并让多个用户同时在相同的文档上开展工作。白板也很常见,在企业和教育环境中更是如此。
注意
白板提供了一个对所有群组成员可见的虚拟写字板,允许一个或多个用户在上面“画画”。
早期的群组协作系统既有相对简单的(如Lotus Notes和微软的NetMeeting),也有极其复杂的(如Groove Networks系统中的积木结构)。多数系统是针对大型企业的,只能在公司专用的网络上运行。
云计算:协作的下一个步骤
随着因特网的发展,群组协作没有必要限制在单一的企业网络环境。来自公司内多个地点或来自多个组织的用户需要进行跨公司和跨地域界限的项目合作。要做到这一点,项目必须被安置在因特网“云”中,从任何能够上网的地点访问。
以云为基础的文档和服务的概念随着大型服务器农场(如谷歌和其他搜索公司拥有的)的发展而迅速发展。谷歌已经有了一组服务器,用于支持大量的搜索引擎。为什么不能使用相同的计算能力来驱动一组基于web的应用,并支持新的基于因特网的群组协作呢?
这就是已经发生的,尽管谷歌并不是唯一的提供云计算解决方案的公司。在基础设施方面, IBM,Sun系统公司和其他大的供应商正在提供建设云网络的必要硬件。在软件方面,许多公司正在开发基于云的应用和存储服务。
今天,人们使用云服务和云存储来创建,共享,查找和组织各种不同类型的信息。明天,这一功能不仅仅对计算机用户,而且对任何连接到因特网的设备——移动电话,便携式音乐播放器,甚至汽车和家用电视机——的用户可用。
注意
云计算是一个相对较新的术语,在2007年为人们所熟知,用于描述基于因特网的分布式计算及其相关应用。
网络就是计算机:云计算如何工作
Sun微系统公司的口号是“网络就是计算机”,这一口号很好的描述了云计算的工作方式。从本质上讲,计算机网络的职能类似一台独立的计算机,主要用来在因特网上向用户提供数据和应用程序服务。该网络存在于由IP地址构成的“云”——也就是我们所知道的因特网中,对外提供大规模的计算能力和存储能力,从而使得广域范围内的群组协作成为可能。
以上只是一个简单的解释。接下来让我们仔细看一下云计算是如何工作的。
认识云架构
云计算的关键是“云”——一个大规模的、由服务器甚至是个人计算机构成的网络,这些服务器和个人计算机在网格环境中互联在一起。这些计算机并行运行,各自的资源结合起来形成足可比拟超级计算机的计算能力。
注意
云计算的一个主要好处就是从成本相对较低的个人电脑和服务器中获得大量的计算能力。当你利用云的能力时,只需支付PC的价格就能获得超级计算的能力。
那么,究竟什么是“云”呢?简而言之,云就是一组可以通过因特网公开访问的计算机和服务器。这些硬件通常归第三方所有,放在一个或多个数据中心里联合运营。这些机器能够运行各种操作系统,重要的是机器的处理能力而不是桌面的样子。
个人用户利用自己的个人电脑或便携设备,经由因特网连接到云中。对这些个人用户而言,云是一个独立的应用、设备或文件。云中的硬件(以及管理这些硬件连接的操作系统)是不可见的。
Cloud Servers:云服务器
尽管云架构确实需要一些智能化管理来连接所有这些电脑并处理众多用户的任务,但它看上去非常简单。如同你在图1.2中看到的,所有的一切均始于个人用 户见到的前端界面。首先,用户通过界面选择一个任务或服务(启动一个应用程序或打开一个文件)。而后,用户的请求被发送给系统管理,系统管理找出正确的资 源并调用合适的系统服务。这些服务从云中划分出必要的资源,加载相应的web应用程序,创建或打开所要求的文件。web应用启动之后,系统的监测和计量功 能跟踪云的使用,确保资源分配和归属于合适的用户。
User:用户;User Interface:用户接口;System Management:系统管理
Provisioning Services: 对外服务;Cloud Servers:云服务器;
Web Application:网络应用
正如你所看到的,云计算这一概念的关键就是许多管理任务的自动化。如果一个系统需要人来管理资源分配的过程,那么它就不是云。这方面的一个例子就是二十一世纪版的老式数据中心为基础的客户机/服务器计算。要使它变成云,手动管理必须被自动化流程所取代。
认识云存储
云计算的一个主要用途就是存储数据。利用云存储,数据被存放到多个第三方的服务器上,而不是像传统的网络数据存储那样存放在专用的服务器上。
存储数据时,用户看到的是一个虚拟的服务器,也就是说,看起来数据好像是以特定的名称存放在某一特殊的地方,但在现实中,那个地方并不存在。这只是一 个假名,用来指示云中划分出来的虚拟空间。实际上,用户的数据可以存储在构成云的任何一台或多台电脑上。因为云动态的管理可用的存储空间,实际的存储位置 可能每天甚至每分钟都不相同。但是,尽管位置是虚拟的,用户所看到的数据位置是“固定的”,事实上,他可以管理自己的存储空间,就好像它是连接到自己的电 脑一样。
云存储同时具有经济和安全方面的优势。从经济上说,虚拟的云资源通常比那些连接到个人电脑或网络的专用物质资源更便宜。至于安全,由于数据被复制到多台物理机器上,存储在云里的数据不受意外删除或硬件崩溃的困扰。由于始终保留数据的多个副本,即使一台或多台机器进入脱机状态,云仍然能够继续正常运行。如果一台机器崩溃了,数据就会被复制到云中的其他机器上。
认识云服务
通过云计算提供的任何基于web的应用或服务都称之为云服务。云服务可包括从日历和联系人应用到文字处理和演示的任何东西。几乎今天所有从事大型计算的公司,从谷歌到亚马逊到微软,都在开发各种类型的云服务。
利用云服务,应用程序本身就处在云中。个人用户在因特网上运行应用,通常是通过web浏览器。浏览器访问云服务,在浏览器的窗口中打开一个应用实例。 一旦启动,基于web的应用操控和运行就像一个标准的桌面应用程序。唯一不同的是,应用程序和工作文档驻留相应的云服务器上。
云服务具有诸多优势。如果用户的电脑崩溃了,它既不会影响到宿主应用程序,也不会影响到打开的文件。此外,个人用户可以从任何地点使用任何PC访问他 的应用程序和文件。当他从办公室回到家或更偏远的地方,他不必随身携带每个应用程序和文件的副本。最后,因为文件都放在云里,用户可以利用任何可用的因特 网连接在同一文件上进行实时协作。文档不再以机器为中心。相反,他们对于授权的用户总是可用。
云中的公司:云计算现状
目前,我们正处在云计算革命的初期阶段。尽管已经有许多可用的云服务,更多的有趣的应用仍在开发之中。也就是说,今天的云计算正在吸引着整个计算行业最优秀、最大的企业,他们都希望建立基于云来赢利的商业模式。
正如本章前面讨论过的,也许目前正在拥抱云计算模式的最引人注目的公司是谷歌。正如你将通过本书所看到的,谷歌提供了一组功能强大的基于web的应 用,他们都通过其云架构对外服务。无论你是需要基于云的文字处理(谷歌文档)、演示软件(谷歌演示文稿)、电子邮件(Gmail),还是日历/日程安排功 能(谷歌日历),谷歌都有提供。而且最重要的是,谷歌为它的所有基于web的应用都提供了相互之间的接口,为了用户的利益,这些云服务相互关联。
其他大公司也参与了云服务的开发。例如,微软提供了Windows Live web应用套件以及Live Mesh计划,该计划承诺将各种类型的设备,数据和应用连接到一个公共的基于云的平台。亚马逊推出了弹性计算云(EC2)服务,用来为应用开发人员提供以 云为基础的可调整的计算能力。IBM已经成立了一个云计算中心,用来向客户提供云服务和研究。许多较小的公司也都推出了自己的基于web的应用,他们主要 (但不完全)利用云服务的协作特性。
正如我们通过这本书,我们会研究其中的许多公司和他们的产品。你现在需要知道的所有东西就是:云计算具有远大的前途,每个人都在追赶这一潮流。
云计算为什么重要
云计算为什么重要?无论是对开发者还是对最终用户,云技术都意味着很多东西。
对于开发人员来说,云计算提供了更多的存储和处理能力来运行他们开发的应用。云计算也带来了信息获取,数据处理和分析以及从世界上任何地方、任何地点连接人和资源的新方法。从根本上说,它消除了开发的局限,利用云计算,开发者再也不用忍受有限物理资源的约束。
对于最终用户来说,云计算提供的好处更多。一个使用网络应用的人再也不会被完全绑定到一台PC,一个地点或一个网络。无论他在何处,只要他想,他就能 访问应用程序和文件。再也不必害怕计算机崩溃的时候丢失数据。无论用户的机器出现什么状况,放在云中的文件始终存在。其次还有利于群组协作。来自世界各地 的用户能够实时的在相同的文件,应用和项目上进行协作。这是一个由云计算启动的全新的协同计算的世界。
云计算完成这一切的成本更低,因为与传统的网络计算相比,云能更有效地共享资源。使用云计算,硬件不必在物理上紧邻公司的办公室或数据中心。云基础设 施可以位于任何地方,包括而且尤其是那些房地产和电力成本更低的地区。此外, IT部门不必关心高峰负荷能力,因为高峰负荷可分散到云里的外部设备中。而且,由于额外的云资源总是可用,企业不再需要购买设备用于不常见的计算密集任 务。如果你需要更多的处理能力,云总能提供,而且价格更划算。
云计算和Web 2.0:独立发展?
如果你已经十分熟知云计算的概念,那么你大概也听说过一类乍听起来同云计算类似,但是称之为Web 2.0的事物。事实上,云计算同Web 2.0类似。从许多方面来讲,其中的一个是另外一个的子集。
究竟什么是Web 2.0?在我看来,这是一个有点时髦的词,不同的人有不同的理解。蒂姆·奥莱理,所谓的Web 2.0教父,将其定义为“网络作为平台,贯穿所有连接的设备”。其他有些人将Web 2.0看作从信息孤岛(Web 1.0)到互联计算平台的一个转型,从用户的感觉来看,该平台如同本地可用的软件一样运行。还有其他一些人利用协作术语来定义Web 2.0,因为所有的网站都从用户的行动中获得其价值。
Web 2.0的这些定义听起来很像没有技术支撑的云计算。也就是说,云计算是通过其架构和基础设施(互联的计算机/服务器构成的作为一个整体运行的网格)来定义 的,而Web 2.0是通过使用者如何看待系统/使用系统提供的服务来定义的。换言之,云计算是关于计算机的,而Web 2.0是关于人的。
或者,如蒂姆·奥莱理所说的那样:云计算专指将因特网作为一个计算平台使用,而Web 2.0,如同我所定义的,试图探究和解释该平台的业务规则。
也许云计算和Web 2.0只是看待相同现象的两种不同的方式。或者,同样可能,也许云计算是一种特定的Web 2.0技术。无论如何都要记住,这两个词大概兴起在计算演化表上的同一点,这两个概念对最终用户承诺类似的结果。
最后,将谷歌文档或微软Live Mesh之类的事物看作是云服务还是Web 2.0应用抑或两者兼而有之并不重要,重要的是技术如何影响用户。在这方面,云计算和Web 2.0都为相关人员带来了实实在在的好处。