物联网与后勤保障
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.5 云计算技术

2.5.1 概念介绍

云计算(Cloud Computing)是一种分布在大规模数据中心,能动态地提供各种服务器资源,以满足科研、电子商务等领域需求的计算平台。云计算是一种商业计算模型,云计算是分布式计算、并行计算和网格计算的发展,是虚拟化、效用计算、PaaS、SaaS等概念混合演进并跃升的结果,将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。

云计算平台通过相关调度策略利用虚拟化技术,针对用户的不同需求,动态、透明地提供其所需的虚拟计算与存储资源,并在当前用户不使用时将其资源动态回收并供给其他用户,让普通用户实现大规模并行计算与海量数据操作成为可能,也为搭建统一开放的知识网络系统提供了底层支持。

一个云计算平台就是通过对一系列IT资源的配置,使这些IT资源能根据用户的需要来动态地分配。用户可以通过简易的服务调用接口,用各种终端调用云计算平台提供的服务,如图2.18所示。

图2.18 云计算概念

2.5.2 原理及特点

2.5.2.1 基本原理

云计算将大量的计算机资源虚拟化构成资源库,利用大量的分布式计算机进行计算高速互联网的传输能力,将数据的处理过程从个人计算机或服务器移到互联网上的计算机集群中。通过简化的服务接口,采用按量计费的商业模式,使用户可通过各种终端设备(计算机、移动电话、笔记本等)享受云提供的各种服务,如图2.19所示。

图2.19 云计算的实现机制

从用户角度来看,云计算平台可以分为公共云和私有云两类。公共云由第三方运行和维护,如Google、Amazon等通过互联网为用户提供服务。而私有云则是由企业自己搭建的,规模一般比较小,但提供了更适合企业运营的服务。

当前比较认可的云计算基础架构如图2.20所示,由基础设施层、应用平台层、交付服务层构成。

图2.20 云计算基础架构

(1)基础设施层。本层主要由硬件设备设施构成,如大规模的廉价PC或服务器,对平台起支撑作用。利用虚拟技术切分硬件资源,动态地对外提供服务。

(2)应用平台层。本层是整个云计算平台的软件基础,提供支撑云计算平台的核心技术,并通过分布式计算框架把底层的硬件资源有效地组织起来,隐藏后台硬件资源,对外提供统一的计算能力和输出。

(3)交付服务层。用户从本层中直接获得相关服务。用户可以用PaaS/SaaS方式从云中获得所需服务。开发人员可以用PaaS方式,通过调用云计算平台提供的API、Web Service或者直接基于运行环境进行应用开发。

2.5.2.2 基本特点

(1)超大规模。“云”具有相当的规模,Google云计算已经拥有100多万台服务器,Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般有数百上千台服务器。

(2)可靠性。“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性。单纯从技术实现角度讲,使用云计算比使用本地计算可靠。

(3)虚拟化。虚拟化使得云计算能够实现硬件资源的虚拟化管理。

(4)动态性。云计算动态分配资源,按需提供软硬件服务。“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。

(5)通用性。云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。

(6)服务资源库。“云”可拥有多个服务的资源库,无数的软件和服务将被置于“云”中,为用户提供服务。

2.5.3 云计算关键技术

云计算作为一种新的超级计算方式和服务模式,以数据为中心,是一种数据密集型的超级计算。它运用了多种计算机技术,其中以编程模型、海量数据分布存储技术、海量数据管理技术、虚拟化技术和云计算平台管理技术最为关键。

2.5.3.1 编程模型

MapReduce作为Google开发的Java、Python、C++编程模型,是一种简化的分布式编程和高效的任务调度模型,应用程序编写人员只需将精力放在应用程序本身,使云计算环境下的编程十分简单。而关于集群的处理问题,包括可靠性和可扩展性,则交由平台来处理。MapReduce模式的思想是通过“Map”(映射)和“Reduce”(化简)这两个简单的概念来构成运算基本单元,先通过Map程序将数据切割成不相关的区块,分配(调度)给大量计算机处理,达到分布式运算的效果,再通过Reduce程序将结果汇整输出,即可并行处理海量数据。简单地说,云计算是一种更加灵活、高效、低成本、节能的信息运作的全新方式,通过其编程模型可以发现云计算技术是通过网络将庞大的计算处理程序自动拆分成无数个较小的子程序,再由多部服务器所组成的庞大系统搜索、计算、分析之后将处理结果回传给用户。通过这项技术,远程的服务供应商可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大性能的网络服务。

2.5.3.2 海量数据分布存储技术

云计算系统采用分布式存储的方式存储数据,用冗余存储的方式保证数据的可靠性。云计算系统中广泛使用的数据存储系统是Google的GFS和Hadoop团队开发的GFS的开源实现HDFSGFS即Google文件系统(Google File System),是可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。GFS的设计思想不同于传统的文件系统,是针对大规模数据处理和Google应用特性而设计的。它虽然运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。一个GFS集群由一个主服务器(Master)和大量的块服务器(Chunks-Server)构成,并被许多客户(Client)访问主服务器存储文件系统所有的元数据,包括名字空间、访问控制信息、从文件到块的映射以及块的当前位置。它还控制系统活动范围,如块租约(Lease)管理、孤立块的垃圾收集、块服务器间的块迁移。主服务器定期通过心跳(Heart Beat)消息与每个块服务器通信,并收集它们的状态信息。

2.5.3.3 海量数据管理技术

海量数据管理是指对大规模数据的计算、分析和处理,如各种搜索引擎。以互联网为计算平台的云计算能够对分布的、海量的数据进行有效可靠的处理和分析。因此,数据管理技术必须能够高效地管理大量的数据,通常数据规模达TB甚至PB级。云计算系统中的数据管理技术主要是Google的BT(Big Table)数据管理技术,以及Hadoop团队开发的开源数据管理模块HBase和Hive,作为基于Hadoop的开源数据工具(http:// appengine.google.com),主要用于存储和处理海量结构化数据。BT是建立在GFS、Scheduler、LockService和MapReduce上的一个大型的分布式数据库,与传统的关系数据库不同,它把所有数据都作为对象来处理,形成一个巨大的表格,用来分布存储大规模结构化数据。Google的很多项目使用BT来存储数据,包括网页查询、GoogleEarth和Google金融。这些应用程序对BT的要求各不相同:数据大小(从URL到网页到卫星图像)不同,反应速度不同(从后端的大批处理到实时数据服务)。对于不同的要求,BT都成功地提供了灵活高效的服务。

2.5.3.4 虚拟化技术

虚拟化(Virtualization)技术是云计算系统的核心组成部分,也是将各种计算及存储资源充分整合和高效利用的关键技术。云计算的特征主要体现为虚拟化、分布式和动态可扩展,而虚拟化作为云计算最主要的特点,对云计算环境搭建起着决定性作用。虚拟化技术是伴随着计算机技术的产生而出现的,作为云计算的核心技术,扮演着十分重要的角色,提供了全新的数据中心部署和管理方式,为数据中心管理员带来了高效和可靠的管理体验,还可以提高数据中心的资源利用率,提供低功能绿色环保。通过虚拟化技术,云计算中每个应用部署的环境和物理平台是没有关系的,通过虚拟平台进行管理、扩展、迁移、备份,种种操作都是通过虚拟化层次来完成的。虚拟化技术实质是实现软件应用与底层硬件相隔离,把物理资源转变为逻辑可管理资源。目前云计算中虚拟化技术主要包括将单个资源划分成多个虚拟资源的分裂模式,也包括将多个资源整合成一个虚拟资源的聚合模式。虚拟化技术根据对象可分成存储虚拟化、计算虚拟化、网络虚拟化等,计算虚拟化又分为系统级虚拟化、应用级虚拟化和桌面虚拟化。

2.5.3.5 云计算平台管理技术

云计算资源规模庞大,一个系统服务器数量众多(可能高达10万台),结构不同并且分布在不同物理地点的数据中心,同时还运行着成千上万种应用。如何有效地管理云环境中的这些服务器,保证整个系统提供不间断服务必然是一个巨大的挑战。云计算平台管理系统可以看作云计算的“指挥中心”。通过云计算系统的平台管理技术,能够使大量的服务器协同工作,方便地进行业务部署和开通,快速发现和恢复系统故障,通过自动化、智能化的手段实现大规模系统的可靠运营和管理。

2.5.4 云计算应用现状

目前,各大IT巨头根据自己公司的特点,分别推出了自己的云计算服务。云计算的典型应用包括邮件、搜索、网络存储、文档处理以及大量的Web 2.0的应用。目前比较成规模的云计算公司有Google、IBM、Amazon百度等。

2.5.4.1 Google云计算平台

Google公司有一套专属的云计算平台,这个平台先是为Google最重要的搜索应用提供服务,现在已经扩展到其他应用程序。Google的云计算基础架构模式包括4个相互独立又紧密结合在一起的系统:Google File System分布式文件系统,针对Google应用程序的特点提出的MapReduce编程模式,分布式的锁机制Chubby以及Google开发的模型简化的大规模分布式数据库BigTable。Google File System文件系统(GFS)。

除了可伸缩性、可靠性及可应用性,GFS设计还受到Google应用负载和技术环境的影响,这主要体现在以下4个方面。

(1)充分考虑到大量节点的失效问题,需要通过软件将容错以及自动恢复功能集成在系统中。

(2)构造特殊的文件系统参数,文件通常大小以GB计,并包含大量小文件。

(3)充分考虑应用的特性,增加文件追加操作,优化顺序读写速度。

(4)文件系统的某些具体操作不再透明,需要应用程序协助完成。

通常一个GFS集群包含一个主服务器和多个块服务器,并被多个客户端访问。大文件被分割成固定尺寸的块,块服务器把块作为Linux文件保存在本地硬盘上,并根据指定的块句柄和字节范围来读写块数据。为了保证可靠性,每个块被默认保存3个备份。主服务器管理文件系统所有的元数据,包括名字空间、访问控制、文件到块的映射、块物理位置等相关信息。通过服务器端和客户端的联合设计,GFS对应用支持达到性能与可用性最优。GFS是为Google应用程序本身而设计的,在内部部署了许多GFS集群。有的集群拥有超过1000个存储节点,超过300TB的硬盘空间,被不同机器上的数百个客户端连续不断地频繁访问着。

Google通过构造MapReduce编程规范来简化分布式系统的编程。应用程序编写人员只需将精力放在应用程序本身,而关于集群的处理问题,包括可靠性和可扩展性,则交由平台来处理。MapReduce通过“Map”(映射)和“Reduce”(化简)这样两个简单的概念来构成运算基本单元,用户只需提供自己的Map函数以及Reduce函数即可并行处理海量数据。为了进一步理解MapReduce的编程方式,下面给出一个基于MapReduce编程方式的程序伪代码。程序功能是统计文本中所有单词出现的次数。在Map函数中,用户的程序将文本中所有出现的单词都按照出现计数1(以Key-Value对的形式)发射到MapReduce给出的一个中间临时空间中。通过MapReduce中间处理过程,将所有相同的单词产生的中间结果分配到同样一个Reduce函数中。而每一个Reduce函数则只需把计数累加在一起即可获得最后结果。

由于一部分Google应用程序需要处理大量的格式化以及半格式化数据,Google构建了弱一致性要求的大规模数据库系统——BigTable。BigTable的应用包括Search History、Maps、rkut、RSS阅读器等。

除了以上构成Google内部云计算基础平台的3个主要部分,Google还构建其他云计算组件,包括一个领域描述语言以及分布式锁服务机制等。Sawzall是一种建立在Map Reduce基础上的领域语言,专门用于大规模的信息处理。Chubby是前述的一个高可用、分布式数据锁服务。当有机器失效时,Chubby使用Paxos算法来保证备份的一致性。Chubby的小型分布式文件系统的每个单元都可以用来提供锁服务。

2.5.4.2 IBM蓝云计算平台

IBM的蓝云计算平台是一套软、硬件平台,将Internet上使用的技术扩展到企业平台上,使得数据中心使用类似于互联网的计算环境。蓝云大量使用了IBM先进的大规模计算技术,结合了IBM自身的软件、硬件系统以及服务技术,支持开放标准与开放源代码软件。蓝云基于IBM Almaden研究中心的云基础架构,采用了Xen和PowerVM虚拟化软件,Linux操作系统映像以及Hadoop软件(Google File System及MapReduce的开源实现)。IBM已经正式推出了基于x86芯片服务器系统的蓝云产品。

蓝云计算平台由一个数据中心、IBM Tivoli部署管理软件(Tivoli Provisioning Manager)、IBM Tivoli监控软件(IBM Tivoli Monitoring)、IBM WebSphere应用服务器、IBM DB2数据库以及一些开源信息处理软件和开源虚拟化软件共同组成。蓝云的硬件平台环境与一般的x86芯片服务器集群类似,使用刀片的方式增加了计算密度。蓝云软件平台的特点主要体现在虚拟机以及对于大规模数据处理软件Apache Hadoop的使用上。Hadoop是开源版本的Google File System软件和MapReduce编程规范。

蓝云软件的一个重要特点是虚拟化技术的使用。虚拟化的方式在蓝云中有两个级别,一个是在硬件级别上实现虚拟化,另一个是通过开源软件实现虚拟化。硬件级别的虚拟化可以使用IBM P系列的服务器,获得硬件的逻辑分区LPAR(Logic Partition)。逻辑分区的CPU资源能够通过IBM Enterprise Workload Manager来管理。通过这样的方式加上在实际使用过程中的资源分配策略,能够使相应的资源合理地分配到各个逻辑分区。系统逻辑分区最小粒度是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之上。两者都能提供可靠性、可扩展性,至于如何使用还需要由建立在云计算平台上的应用程序来决定,这也体现了计算平台与上层应用相互协作的关系。

2.5.4.3 Amazon的弹性计算云

Amazon是互联网上最大的在线零售商,每天担负着大量的网络交易,同时Amazon也为独立软件开发人员以及开发商提供云计算服务平台。Amazon将云计算平台称为弹性计算云(Elastic Compute Cloud,EC2),是最早提供远程云计算平台服务的公司。Amazon将自己的弹性计算云建立在公司内部的大规模集群计算的平台上,而用户可以通过弹性计算云的网络界面,去操作在云计算平台上运行的各个实例(Instance)。用户使用实例的付费方式由用户的使用状况决定,即用户只需为自己所使用的计算平台实例付费,运行结束后计费也随之结束。这里所说的实例,即由用户控制的完整的虚拟机运行实例。通过这种方式,用户不必自己去建立云计算平台,节省了设备与维护费用。

Amazon的弹性计算云由名为Amazon网络服务(Amazon Web Service)的现有平台发展而来。2006年3月,Amazon发布了简单存储服务(Simple Storage Service,S3),用户使用SOAP协议存放和获取自己的数据对象。2007年7月,Amazon公司推出了简单队列服务(Simple Queue Service,SQS),这项服务能够使得托管虚拟主机之间发送的消息,支持分布式程序之间的数据传递,无须考虑消息丢失的问题。Amazon又继续提供了EBS(Elastic Block Storage)服务,为用户提供块级别的存储接口。在提供这些基础设施的同时,Amazon公司开发了弹性计算云EC2系统,开放给外部开发人员使用。

2.5.5 我国云计算发展趋势

在《国务院关于促进云计算创新发展培育信息产业新业态的意见》《关于积极推进“互联网+”行动的指导意见》《云计算综合标准化体系建设指南》等利好政策作用下,近年我国云计算产业得以迅速发展,产业已经走过培育与成长阶段,现已进入成熟发展期,产业格局基本稳定。

在企业方面,国内云计算产业各领域主要领先厂商众多,在IT基础设施与系统集成服务方面,有浪潮信息、华胜天成、浙大网新和华东计算机等;在IaaS运营维护方面,有中国电信、中国联通、中国移动、百度和世纪互联等;PaaS云平台,有八百客、阿里云、华为和华胜天成等;SaaS云应用软件,有八百客、阿里软件、三五互联、拥有软件、焦点科技和东软集团等。

虽然我国国内目前云计算产业前景美好,但与发达国家相比,我国云计算市场规模也有待提高,未来仍旧需要努力追赶。相关公司需要把握好以下云计算发展趋势,并抓住机遇发展。

(1)云时代信息安全重要性日益凸显。随着云计算和移动互联网的普及,越来越多的业务在云端开展,越来越多的数据在云端存储,用户数据泄露或丢失是云计算信息安全面临的巨大的安全风险。因此,基于云服务的安全防护工作难度虽然加大,但这一领域的商业价值也将愈加凸显。

(2)垂直领域融合加深将带动云计算市场迅猛发展。相较于美国等发达国家,我国云计算市场规模仍较小,云计算应用领域及渗透深度有很大的空间。云计算服务商不断加深与各垂直领域的融合,将开拓更大的云计算服务空间。

(3)抓住智慧城市与智慧工业发展契机。作为云计算应用的重要领域,智慧城市与智慧工业概念兴起,将使云计算大有可为,值得企业发力。