- 云计算和大数据服务:技术架构、运营管理与智能实践
- 陈赤榕等
- 5471字
- 2023-09-26 15:57:02
2.1 云计算的技术发展回顾
云计算是伴随着“IT不再重要”的理念提出来的。最初概念是,企业和个人将自己的数据、计算能力都放在云端,即网络云里,只要使用者连接上网,就能获取数据及计算结果。这样企业可以将IT维护的数据和服务转移到云端,由专门的公司提供维护、支持与服务,企业无须自己管理,IT对企业来讲不再是重要部门。因此提出了“IT不再重要”的理念。
但在云计算发展过程中,企业通过在自己的机房部署虚拟化系统,运行各种服务软件,员工就能从全世界各地接入,数据与计算都限定在企业网络里,这种服务方式得到了“私有云”的名称。这显然同最初引入的“IT不再重要”的概念有出入。
企业引入云服务,通过云计算提供服务,是公有云概念的延伸,“服务”是云计算的最大特点,强调通过互联网提供的不是产品,而是服务,使用方式如同目前电信、电网或煤气网络一样,按照使用付费,而不是按照购买产品所有权付费。
云计算实际上是商务和技术的结合,同时也是商务和技术共同推动的结果。实际上技术是基础,商务是应用。
2.1.1 云计算技术概念的发展
2.1.1.1 效应计算(Utility Computing)阶段
在20世纪60年代,由于计算机设备非常昂贵,远非一般的企业、学校和机构所能承受,于是很多IT界的精英们就有了共享计算机资源的想法。1961年,人工智能之父约翰·麦肯锡(John McCarthy)在一次会议上提出“效应计算”的概念,其核心就是借鉴电厂模式,具体的目标是整合分散在各地的服务器、存储系统以及应用程序来共享给多个用户,让人们使用计算机资源就像使用电力资源一样方便,并且根据用户使用量来付费。可惜的是,当时的IT界还处于发展的初期,很多强大的技术还没有诞生,特别是互联网。虽然有想法,但是由于技术的原因还是停滞了。
2.1.1.2 网格计算(GRID Computing)阶段
在20世纪90年代中期,这个词用来形容可以让使用者随时(on-demand)获得计算能力(Computing Power)的技术。伊恩·福斯特(Ian Foster)和其他人假定,通过对计算能力使用的协议(protocol)的规范化,可以推动和建立一个计算网格(Computing GRID),类似于实际中的电网。
随后研究人员制定了许多令人兴奋的方式来进一步发展这些想法,如大型联合系统(TeraGrid,Open Science Grid,caBIG,EGEE,Earth System Grid)。这些系统不仅提供按需的计算能力,而且提供数据和软件,主要应用于研究或科研领域,一些标准组织(如OGF,OASIS)制定了相关标准。
网格计算是化大规模计算为许多小部分计算的方式,研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小部分,然后把这些小部分分配给许多低性能的计算机来处理,最后把这些结果综合起来。可惜的是,由于网格计算在商业模式、技术和安全性方面的不足,其并没有在工业界和商业界取得预期的成功。
2.1.1.3 云计算阶段
云计算的核心与效用计算和网格计算非常相似,也是希望IT技术能像使用电力一样方便,并且成本低廉。但与效用计算和网格计算最大的不同是,现在的商务需求已经成熟,特别是SaaS的发展,驱动了云计算服务的发展,同时在技术方面也已经基本成熟了。
云计算技术概念的发展为云计算相关实践的落地提供了思路和方向。云计算技术概念中的某些关键部分,如资源共享、终端联网、算力分布、大规模并行处理、存储分片、域自治等都为云计算实践技术的发展做出了直接贡献。可以这么理解,每一项云计算技术实践的成就都紧紧跟随着云计算概念的脚步。
2.1.2 云计算相关技术的发展
在技术层面,云计算是在分布式计算、并行计算、虚拟化技术和海量存储技术的基础之上发展而来的,基础设施即服务(IaaS)其实就是虚拟化发展历程,而平台即服务(PaaS)更多的是分布式并行计算和海量存储发展历程,而软件即服务(SaaS)发展更早,其理念更像商业层面的结果,和云计算技术层面似乎并不紧密相连,但随着发展,软件即服务(SaaS)往往会依赖平台即服务(PaaS)和基础设施即服务(IaaS)技术,是综合使用云计算实现商业目标的范例。
2.1.2.1 并行计算(Parallel Computing)
云计算是在并行计算之后产生的概念,是由并行计算发展而来,两者在很多方面存在共性,但二者并不等同,主要是二者解决的问题和动机不同,但解决问题的手段有很多相同之处。
并行计算又称平行计算,是相对于串行计算来说的,指同时使用多种计算资源的过程,通常的计算资源包括一台或多台配有多CPU或计算处理单元的计算机和网络资源,并行计算的主要目的是快速解决大型且复杂的计算问题。
为利用并行计算,计算问题通常表现为以下特征:
· 将工作分离成离散部分,有助于同时解决。
· 随时并及时地执行多个程序指令。
· 多计算资源下解决问题的耗时要少于单个计算资源下的耗时。
云计算与并行计算的联系与区别如下。
(1)云计算萌芽于并行计算。
云计算的萌芽应该从计算机的并行化开始,并行机的出现是人们不满足于CPU摩尔定律的增长速度,希望把多个计算机并联起来,从而获得更快的计算速度。这是一种很简单也很朴素的实现高速计算的方法,这种方法后来被证明是相当成功的。
(2)并行计算、网格计算只用于特定的科学领域,专业的用户。
并行计算、网格计算的提出主要是为了满足科学和技术领域的专业需要,其应用领域也基本限于科学领域。传统并行计算机的使用是一个相当专业的工作,需要使用者有较高的专业素质,多数是命令行的操作,这是很多专业人士的噩梦,更不用说普通的业余级用户了。
(3)并行计算追求高性能。
在并行计算时代,人们极力追求的是高速的计算,采用的是昂贵的服务器,各国不惜代价在计算速度上超越他国,因此,并行计算时代的高性能机群是一个“快速消费品”,世界TOP 500高性能计算机的排名在不断地刷新,一组大型机群如果3年左右不能得到有效的利用,其性能就远远地落后了,巨额投资也无法收回。
(4)云计算对于单节点的计算能力要求低。
云计算时代并不追求昂贵的服务器,也不用去考虑TOP 500的排名,云中心的计算力和存储力可随着需要逐步增加,云计算的基础架构支持动态增加的方式,高性能计算将在云计算时代成为“耐用消费品”。
2.1.2.2 分布式计算和网格计算
分布式计算(Distributed Computing)是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。最近的分布式计算项目已经在使用世界各地成千上万位志愿者的计算机的闲置计算能力。
分布式计算要解决的项目都很庞大,需要惊人的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是绝不可能的。在以前,这些问题都由超级计算机来完成。但是超级计算机的造价和维护非常昂贵,这不是一个普通的科研组织所能承受的。随着科学的发展,一种廉价的、高效的、维护方便的计算方法——分布式计算应运而生。
分布式计算是近年提出的一种新的计算方式。分布式计算与其他算法相比具有以下几个优点。
· 稀有资源可以共享。
· 通过分布式计算可以在多台计算机上平衡计算负载。
· 可以把程序放在最适合运行它的计算机上。
其中,共享稀有资源和平衡负载是分布式计算的核心思想之一。
实际上,网格计算就是分布式计算的一种。如果说某项工作是分布式的,那么参与这项工作的一定不只是一台计算机,而是一个计算机网络,这种“蚂蚁搬山”的方式具有很强的数据处理能力,网格计算的实质就是组合与共享资源并确保系统安全。
分布式计算使用的操作系统包括分布式操作系统、网络操作系统、基于中间件的操作系统。其中,分布式操作系统又包括多处理器系统和多机系统,多处理器系统只有一个操作系统,多机系统的分布式也是只有一个操作系统分配机器资源,这样的分布式系统机器与机器之间具有非常高的透明性,而网络操作系统和基于中间件的操作系统,都是由多个计算机组成,每个计算机有独立的操作系统。
网格计算是分布式计算的一种。网格计算是伴随着互联网而迅速发展起来的、专门针对复杂科学计算的新型计算模式。这种计算模式利用互联网,把分散在不同地理位置的计算机组成一个“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个系统是由成千上万个“节点”组成的“一张网格”,所以这种计算方式叫网格计算。这样组织起来的“虚拟的超级计算机”有两个优势,一个是数据处理能力超强;另一个是能充分利用网上的闲置处理能力。
网格计算和云计算有相似之处,特别是计算的并行与合作的特点,但它们的区别也很明显,主要有以下几点。
(1)网格计算的思路是聚合分布资源,支持虚拟组织,提供高层次的服务,如分布协同科学研究等。而云计算的资源相对集中,主要以数据中心的形式提供底层资源的使用,并不强调虚拟组织的概念。
(2)在对待异构性方面,二者理念上有所不同。网格计算用中间件屏蔽异构系统,力图使用户面对同样的环境,把困难留在中间件,让中间件完成任务。而云计算实际上承认异构,用镜像执行,或者通过提供服务的机制来解决异构性的问题。当然不同的云计算系统不太一样。
总之,云计算是以相对集中的资源,运行分散的应用(大量分散的应用在若干大的中心执行);而网格计算则是聚合分散的资源,支持大型集中式应用(一个大的应用分到多处执行)。但从根本上来说,从应对互联网的应用的特点来说,它们是一致的,都是为了在互联网环境下支持应用,解决异构性、资源共享等问题。
2.1.2.3 虚拟化技术和海量数据处理技术
本节只对这些技术的概念和发展历史做些简要的介绍,在后面的章节中会专门介绍技术细节。
1.虚拟化技术
在计算机技术中,虚拟化(virtualization)是将计算机物理资源,如服务器、网络、内存及存储等进行抽象、转换后呈现出来,使用户可以用比原本的组态更好的方式来应用这些资源,这些资源的新虚拟部分不受现有资源的架设方式、地域或物理组态的限制。
通常虚拟化的目标是管理任务的集中,同时要提高硬件资源的可扩展性和利用率。通过虚拟化,多个操作系统可以在单一的CPU下并行运行。这种并行与多任务处理(multitasking)是不同的,多任务处理是相同的操作系统中运行几个程序。
使用虚拟化技术,企业可以更好地管理和更新操作系统和应用程序,而无须中断用户。传统的“一台服务器一个应用程序”的模式导致的最大问题就是资源未充分利用。
虽然虚拟化技术在最近几年才开始大面积地推广和应用,但是如果从其诞生时间来看,可以说它的历史源远流长。1959年,克里斯托弗(Christopher Strachey)发表了一篇学术报告,名为“大型高速计算机中的时间共享”(Time Sharing in Large Fast Computers),他在文中提出了虚拟化的基本概念,这篇文章也被认为是虚拟化技术的最早论述。可以说虚拟化作为一个概念被正式提出即是从此时开始。
最早在商业系统上实现虚拟化的是IBM公司于1965年发布的IBM 7044。它允许用户在一台主机上运行多个操作系统,让用户尽可能充分地利用昂贵的大型机资源。随后虚拟化技术一直只在大型机上应用,而在PC服务器的x86平台上仍然进展缓慢。这是因为当时x86平台的处理能力非常单薄。
随着x86平台处理能力与日俱增,1999年,VMware公司在x86平台上推出了可以流畅运行的商业虚拟化软件。从此虚拟化技术终于走下大型机,来到了PC服务器的世界之中。在随后的时间里,尤其是CPU进入多核时代之后,个人计算机具有了前所未有的强大处理能力,虚拟化技术在x86平台上得到了突飞猛进的发展。
2.海量数据处理技术
海量数据(Mass Data)处理技术涉及存储和数据库两方面。
1)对象存储技术
对象存储技术提供基于对象的访问接口,将NAS和SAN两种存储结构的优势进行了有效整合,通过高层次的抽象,使其既具有NAS的跨平台共享数据和安全访问的优点,同时又具有SAN的高性能和可伸缩性的优点。
对象存储一般由Client、MDS(Metadata Server)和OSD(Object Storage Device)三部分组成。
· Client为客户端,用来发起数据访问。
· MDS为服务器,用来管理对象存储系统中的元数据,并保证访问的一致性。
· OSD为存储对象数据的设备,它是一个智能设备,包括处理器、RAM内存、网络接口、存储介质等以及运行在其中的控制软件。
OSD将对象(object)作为对象存储的基本单元,每个对象具有唯一的ID标识符。对象由对象ID、对象数据的起始位置、数据的长度来进行访问。对象提供类似文件访问的方法,如Create、Open、Close、Read、Write、对象属性等;对象的数据包括自身的元数据和用户数据,其中,元数据用于描述对象特定的属性,如对象的逻辑大小、对象的元数据大小、总的字节大小;用户数据用来保存实际的二进制数据。对象分为根对象、组对象和用户对象。根对象定义了存储设备以及存储设备本身的不同属性;组对象为存储设备上对象提供目录;用户对象存储实际应用数据。
对象存储模式的特性使其在处理海量数据存储请求时具有较大优势,主要体现在以下几点。
· 高性能数据存储:访问节点有独立的数据通路和元数据访问通路,可以对多个OSD进行并行访问,从而解决当前存储系统的一个性能瓶颈问题。
· 跨平台数据共享:由于在对象存储系统上部署基于对象的分布式文件系统比较容易,所以能够实现不同平台下的设备和数据的共享。
· 方便安全的数据访问:I/O通道的建立及数据的读写需要经过授权许可才能进行,从而保证数据访问的安全性;另一方面,任何Client都可以通过对象存储系统提供的标准文件接口访问OSD上的数据,统一的命名空间使Client访问数据的一致性得到了保证。
· 可伸缩性:对象存储模式具有分布式结构的特性。由于OSD是独立的智能设备,可以通过增加OSD的数量,使存储系统的聚合I/O带宽、存储容量和处理能力得到提高,这种平衡扩展模式使得存储系统能够具有良好的可伸缩性。
· 智能存储设备:OSD中集成了部分的存储管理功能,因此OSD具有一定的智能自主存储功能。
2)数据库策略
实现高性能的海量数据存储可采取的数据库策略有:
· 分区技术:为了更精细地对数据库对象如表、索引及索引编排表进行管理和访问。可以对这些数据库对象进行进一步的划分,这就是分区技术。
· 并行处理技术:为了提高系统性能,可以让多个处理器协同工作来执行单个SQL语句,这就是并行处理技术。