一、首先简单介绍云计算
对云计算的定义有多种说法。对于到底什么是云计算,至少可以找到100种解释。
现阶段广为接受的是美国国家标准与技术研究院定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
通俗解释:云计算的“云“就是存在于互联网上的服务器集群上的资源,它包括硬件资源(服务器、存储器、CPU等)和软件资源(如应用软件、集成开发环境等),本地计算机只需要通过互联网发送一个需求信息,远端就会有成千上万的计算机为你提供需要的资源并将结果返回到本地计算机,这样,本地计算机几乎不需要做什么,所有的处理都在云计算提供商所提供的计算机群来完成。
云计算是全新的基于互联网的超级计算理念和模式,实现云计算需要多种技术结合,并且需要用软件实现将硬件资源进行虚拟化管理和调度,形成一个巨大的虚拟化资源池,把存储于个人电脑、移动设备和其他设备上的大量信息和处理器资源集中在一起,协同工作。
二、通用的云计算体系结构
用户可通过云用户端从列表中选择所需的服务,其请求通过管理系统调度相应的资源,并通过部署工具分发请求、配置Web应用

云用户端:提供云用户请求服务的交互界面,也是用户使用云的入口,用户通过Web浏览器可以注册、登录及定制服务、配置和管理用户。打开应用实例与本地操作桌面系统一样。
服务目录:云用户在取得相应权限(付费或其他限制)后可以选择或定制的服务列表,也可以对已有服务进行退订的操作,在云用户端界面生成相应的图标或列表的形式展示相关的服务。
管理系统和部署工具:提供管理和服务,能管理云用户,能对用户授权、认证、登录进行管理,并可以管理可用计算资源和服务,接收用户发送的请求,根据用户请求并转发到相应的相应程序,调度资源智能地部署资源和应用,动态地部署、配置和回收资源。
监控:监控和计量云系统资源的使用情况,以便做出迅速反应,完成节点同步配置、负载均衡配置和资源监控,确保资源能顺利分配给合适的用户。
服务器集群:虚拟的或物理的服务器,由管理系统管理,负责高并发量的用户请求处理、大运算量计算处理、用户Web应用服务,云数据存储时采用相应数据切割算法采用并行方式上传和下载大容量数据。
三、云计算服务体系结构
在云计算中,根据其服务集合所提供的服务类型,整个云计算服务集合被划分成4个层次:应用层、平台层、基础设施层和虚拟化层。这4个层次每一层都对应着一个子服务集合。
云计算的服务层次是根据服务类型来划分,与大家熟悉的计算机网络体系结构中层次的划分不同。在计算机网络中每个层次都实现一定的功能,层与层之间有一定关联。而云计算体系结构中的层次是可以分割的,即某一层次可以单独完成一项用户的请求而不需要其他层次为其提供必要的服务和支持
软件即服务(SaaS)。它是一种通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动。在这种模式下,客户不再像传统模式那样花费大量投资用于硬件、软件、人员,而只需要支出一定的租赁服务费用,通过互联网便可以享受到相应的硬件、软件和维护服务,享有软件使用权和不断升级,这是网络应用最具效益的营运模式。
平台即服务(PasS)。PaaS实际上是指将软件研发的平台作为一种服务。提供开发环境、服务器平台、硬件资源等服务给用户,用户可以在服务提供商的基础架构基础上开发开发程序并通过互联网和其服务器传给其他用户。
PaaS能给客户带来更高性能、更个性化的服务,也是SaaS今后发展的趋势,一个SaaS软件也能给客户在互联网上提供开发(自定义)、测试、在线部署应用程序的功能,那么这就叫提供平台服务PaaS
基础设施即服务(IaaS)。消费者通过Internet可以从完善的计算机基础设施获得服务。
硬件即服务结合Paas提供硬件服务,包括服务器集群及硬件检测等服务。
四、实例:Google的云计算
Google的云计算平台能实现大规模分布式计算和应用服务程序,平台包括MapReduce分布式处理技术、Hadoop框架、分布式的文件系统GFS、结构化的BigTable存储系统以及Google其他的云计算支撑要素。
MapReduce是Google开发的Java、Python、C++编程工具,用于大规模数据集(大于1TB)的并行运算,也是云计算的核心技术,一种分布式运算技术,也是简化的分布式编程模式,适合用来处理大量数据的分布式运算,用于解决问题的程序开发模型,也是开发人员拆解问题的方法。
MapReduce模式的思想是将要执行的问题拆解成Map(映射)和Reduce(化简)的方式,先通过Map程序将数据切割成不相关的区块,分配(调度)给大量计算机处理达到分布运算的效果,再通过Reduce程序将结果汇整,输出开发者需要的结果。
在Google发表MapReduce后,2004年开源社群用Java搭建出一套Hadoop框架,用于实现MapReduce 算法,能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。
此外,Hadoop 还提供一个分布式文件系统GFS,是一个可扩展、结构化、具备日志的分布式文件系统,支持大型、分布式大数据量的读写操作,其容错性较强。
而分布式数据库(BigTable)是一个有序、稀疏、多维度的映射表,有良好的伸缩性和高可用性,用来将数据存储或部署到各个计算节点上。
Google云计算执行过程
如图所示的Google云计算执行过程包括以下步骤。
(1)将要执行的MPI程序复制到Hadoop框架中的Master和每一台Worker机器中。
(2)Master选择由哪些Worker机器来执行Map程序与Reduce程序。
(3)分配所有的数据区块到执行Map程序的Worker机器中进行Map(切割成小块数据)。
(4)将Map后的结果存入Worker机器。
(5)执行Reduce程序的Worker机器,远程读取每一份Map结果,进行混合、汇整与排序,同时执行Reduce程序。
(6)将结果输出给用户(开发者)。