云计算和移动化是互联网的两大发展趋势,云计算(cloud computing)是多种技术整合的产物,这些技术主要包括虚拟化技术、分布式处理(distributed computing)、并行处理(parallel computing)、网格计算(grid computing)等。云计算屏蔽了技术实现的细节,同时以服务的方式提供给用户使用,使用户的关注力从技术细节转到自己的需求上。
云计算的特征可以归结为无处不在的数据、无处不在的软件、无处不在的计算,任何地点登录系统后都可以使用软件,使用数据和进行计算。根据云计算的服务方式可以将云计算分为:基础设施即服务(laaS)、平台即服务(PaaS)和软件即服务(SaaS)。根据云计算的存在形式可以将云计算分为:公共云(public cloud)、混合云(hybrid cloud)、 私有云(private cloud)和社区云(community cloud)。
云计算到目前为止还没有一个标准的定义,可以查询到的定义有百种以上,最为公众认可和引用率较高的是美国国家标准与技术研究院(NIST)的定义,NIST的定义:“云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件、服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。”在国内得到认可的定义是中国云计算专家咨询委员会副主任、秘书长刘鹏教授给出的定义:“云计算是通过网络提供可伸缩的廉价的分布式计算能力。”Forester Research从云计算提供商的角色这样定义:云计算是一种标准化的IT能力,将软件、应用平台、基础设施整合建立起来一个系统,通过Internet技术以按需和自助的方式提供服务。云计算可以理解为在互联网上通过虚拟化技术、并行处理技术以及分布式计算机技术将资源与设备整合起来,为用户提供方便与快捷的、基于网络的计算与存储服务。云计算提供的服务包括软件、硬件和平台服务,这种服务可以根据用户需求进行定制,即“按需服务”,这就是云计算创新与重要意义所在。
云计算类似于B/S结构的系统,用户使用计算机、手机、平板等智能终端接入互联网或内部局域网,向云计算服务端提出计算、应用或存储等需求,云端根据需求的内容在虚拟的资源池内进行资源的组织与调配,动态分配资源的使用,并将计算结果及时反馈给用户。云计算服务包括了计算、存储、网络、软件和服务。用户端不需要安装任何应用软件和存储任何数据,所有操作都是在云端实现。用户不论在任何地点,只要接入互联网或内部局域网后,都可以使用云,就像用电用水一样方便。云计算是通过网络将用户庞大的计算处理程序自动分拆成无数个较小的子程序,再由多部服务器所组成的庞大系统搜索、计算分析之后将处理结果回传给用户。通过这项技术,远程的服务供应商可以在数秒之内,处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大性能的网络服务。
1983年提出“网络既是电脑”(The Network is the computer)的SUN公司可以认为是云计算发展的最早雏形。最早提出“云计算”概念的则是由Google首席执行官埃里克·施密特与2006搜索引擎大会上首次提出来的。随后,Google 采用与美国大学合作的方式进行云计算的推广工作。2008年雅虎、惠普和英特尔也加入到云计算行列。他们与合作伙伴创建6个数据中心作为研究试验平台,每个数据中心配置1400 ~ 4000个处理器。同年戴尔开始申请“云计算”(cloud computing)商标,旨在加强对这一未来可能重塑技术架构的术语的控制权。2010年美国国家航空航天局和包括Rackspace、AMD、Intel、戴尔等支持厂商共同宣布“OpenStack”开放源代码计划,微软在2010年10月表示支持OpenStack 与Windows Server 2008 R2的集成;而Ubuntu已把OpenStack加至11.04版本中。2011年思科系统正式加入OpenStack,重点研制OpenStack的网络服务。
云计算是随着互联网而发展起来的技术,没有高速、稳定的网络云计算就无从谈起。除网络之外,云计算的实现在技术层面上的关键技术包括虚拟化技术、分布式数据处理技术与存储技术。云存储技术是通过分布式存储方式来实现用户数据的有效存储。分布式存储既实现了冗余存储带来的可靠性需求,又可以高效地为大量并行用户提供数据使用服务。在分布式存储中,相同内容的用户数据通常有多个副本存储在不同区域的存储器内,保证了数据的高可用性。目前云计算领域内最主要的数据存储技术有GFS (Google file system)和Hadoop两种分布式文件系统,GFS主要是谷哥公司发明并使用的非开源技术,其他大部分云计算公司采用的是Hadoop开源数据存储技术。GFS是一个管理大型分布式数据密集型计算的可扩展的分布式文件系统。它使用廉价的商用硬件搭建系统并向大量用户提供容错的高性能的服务。虚拟化技术就是在现有资源的情况下实现所有资源的高效利用和有效整合,达到资源的快速部署,满足用户需求的不断变化需求。这些特点和功能决定了虚拟化技术必将是云计算的核心技术。在虚拟化环境下,系统部署与分布式计算环境的搭建更易于实现和管理。云计算与大数据是密不可分的关系,大数据一般都存储在云上,而云计算通常处理的都是大数据。云计算在数据管理上以数据的存储、读取与分析为主,与之相比,数据的更新操作处于次要地位。因此,云计算的数据管理技术主要以数据的读优化为主,这种模式通常采用数据库领域中列存储的管理模式,将数据表按列进行划分和存储。与数据存储一样,谷歌的BigTable 数据管理技术也是行业的领导者,Hadoop具有自己的数据管理技术,与谷歌的BigTable功能相似,并且开源。云计算将复杂的计算和任务的调度执行隐藏在后台,在前台提供简单的编程模型给用户进行编写程序,大大降低了用户在云上编程的难度,从而更加轻松的驾驭云。云计算采用的是类似MAP- Reduce的编程模式。这也是目前大部分云计算所采用的模型。与传统编程模式相比,该编程模式更加适合编写具有任务内部松耦合,并且并行化程度很高的程序。