云计算是一种商业模型,它将计算任务分布在大量计算机构成的资源池上,使用户能够按需获取计算力、存储空间和信息服务。
“云”是指大型服务器集群,包括计算服务器、存储服务器和带宽资源等。“云”将计算资源集中起来,并通过专门软件实现自动管理。
用户可以动态申请部分资源,支持各种业务的运转,无需自己搭建服务器而从“云”获取计算和存储能力,从而提高效率、降低成本,可以更专注于客户端或者浏览器端的业务以及创新。
有人问,之前提出的并行计算、分布式计算、网格计算和云计算都有什么关联和区别?简而言之,后者是前者的发展,是前者这些计算科学的商业实现。
从研究现状上看,云计算具有以下的特点:
1、超大规模
Google的云计算拥有100多万台服务器,Amozon、Microsoft拥有几十万台服务器。所以“云”可以为用户提供超强的计算和存储能力。
2、虚拟化
云计算支持用户在各种终端获取服务,获取的服务来自“云”而不是某台固定的服务器。整个“云”对于用户而言,就是一台虚拟的服务器。
3、高可靠性
“云”采用数据多副本容错、计算节点同构可互换等多种手段保障服务可靠性。
4、通用性
云”不是针对特定的服务,同一片“云”可以支撑各种各样的服务。
5、高伸缩性
“云”的规模可以动态伸缩,以满足应用或者用户增长的需要。
6、按需服务
云”是一个庞大的资源池,用户可以按需购买资源,像水电煤那样计费。
7、极其廉价
“云”可以采用极其廉价的节点来构成;“云”的自动化管理使数据中心的管理成本大幅降低;“云”的公用性和通用性使资源的利用率大幅提升;“云”设施一般建立在电力资源丰富的地区,从而大幅降低能源成本。Google每年投入16亿美元构建云计算数据中心,所获的能力相当于传统技术投入640亿美元,节省了39倍的成本。
云计算从通用到专用,可分为:Iaas、Paas、Saas
Iaas将硬件设备等资源封装成服务供用户使用,如Amazon云计算 AWS的弹性计算云EC2和简单存储服务S3。在Iaas中,用户相当于在使用裸机和磁盘,既可以让它运行Windows,也可以让它运行Linux,用什么系统用户可以自己定,但用户必须自己协调多个机器协同工作。AWS提供了在节点之间互通消息的接口简单队列服务SQS(Simple Queue Service)。Iaas最大的优势是允许用户动态申请或释放节点,按节点使用量计费。
Paas提供了用户应用程序的运行环境,如Google App Engine、MicroSoft Windows Azure。Paas自身负责资源的动态扩展和容错管理,用户应用程序不必过多考虑节点的配合问题,但用户必须在特定的编程环境下使用特定的变成模型。例如:Google App Engine只允许使用Python、Java语言、基于称为Django的Web应用框架、调用Google App Engine SDK来开发在线应用服务。
Saas将某些特定应用软件功能封装成服务,如Salesforce公司提供的在线客户关系管理CRM服务。它既不像Iaas提供计算与存储服务,也不像Paas提供运行服务的环境,它只提供某些专门用途的服务让应用调用。
网上流传着一张对比图,比较容易理解三种云计算服务的区别。
Iaas包含网络服务、存储服务器、计算服务器、虚拟化技术;Paas在Iaas基础上包含OS、中间件(独立系统或应用之间共享信息的组件)、运行时(公共功能模块的实例);Saas在Paas的基础上包含数据、应用。
需要指出的是随着云计算的发展,不同的云计算方案之间相互渗透融合,同一种产品往往横跨两种以上的类型。比如:Amazon Web Services原本是Iaas,但它后面提出的MapReduce计算模型模仿了Google的MapReduce,简单数据库服务SimpleDB模仿了Google的BigTable,这两者又属于Paas范畴。