510 likes | 651 Views
Cloud Computing. 杨圣洪 hbxxysh2@sohu.com. 一、基本概念. 很少有一种技术能够像“云计算”这样,在短短的两年间就产生巨大的影响力。 Google 、亚马逊、 IBM 和微软等 IT 巨头们以前所未有的速度和规模推动云计算技术和产品的普及。 一些学术活动迅速将云计算提上议事日程,支持和反对的声音不绝于耳。 那么, 云计算到底是什么? 发展现状如何? 它的实现机制是什么?. 1.1 云计算的概念. 云计算 ( Cloud Computing ) 2007年第3季诞生
E N D
Cloud Computing 杨圣洪 hbxxysh2@sohu.com
一、基本概念 很少有一种技术能够像“云计算”这样,在短短的两年间就产生巨大的影响力。 Google、亚马逊、IBM和微软等IT巨头们以前所未有的速度和规模推动云计算技术和产品的普及。 一些学术活动迅速将云计算提上议事日程,支持和反对的声音不绝于耳。 那么, 云计算到底是什么? 发展现状如何? 它的实现机制是什么?
1.1 云计算的概念 云计算(Cloud Computing)2007年第3季诞生 关注的程度远超网格计算(Grid Computing)
一、基本概念 云计算是一种商业计算模型, 将计算任务分布在计算机构成的资源池上. 使用户能够按需获取计算力、存储空间和信息服务。 资源池称为“云”。 “云”是一些可以自我维护和管理的虚拟计算资源,通常是一些大型服务器集群,包括计算服务器、存储服务器和宽带资源等。 云计算将计算资源集中起来,专门软件实现自动管,无需人为参与。 用户可以动态申请部分资源,支持各种应用程序的运转,无需为细节而烦恼。
一、基本概念 它具有云的特征: 云一般都较大; 云的规模动态伸缩,边界是模糊的; 云在空中飘忽不定,无法也无需确定它的具体位置,但它确实存在于某处。 云计算的鼻祖之一亚马逊公司将大家曾经称为网格计算的东西,取了一个新名称“弹性计算云”(Elastic Computing Cloud),并取得了商业上的成功。
一、基本概念 云计算是 并行计算(Parallel Computing)、 分布式计算(Distributed Computing) 网格计算(Grid Computing)商业实现。 云计算是虚拟化(Virtualization)、 效用计算(Utility Computing)、 基础设施为服务IaaS(Infrastructure as a Service) 平台作为服务PaaS(Platform as a Service) 软件作为服务SaaS(Software as a Service) 等概念混合演进并跃升的结果。
一、基本概念 1)超大规模 Google云有100多万台服务器, 亚马逊、IBM、微软和Yahoo云几十万台服务器. “云”能赋予用户前所未有的计算能力。 2)虚拟化 支持用户在任意位置、使用各种终端获取服务。 请求的资源来自“云”,而不是固定有形的实体。 “应用”在“云”中某处运行,但用户无需了解应用运行的具体位置, 只需要一台笔记本或一个PDA,就可以通过网络服务来获取各种能力超强的服务。
一、基本概念 3)高可靠性 “云”使用了数据多副本容错、 计算节点同构可互换等保障高可靠性, 使云计算比本地计算更加可靠。 4)通用性 云计算不针对特定的应用, 在“云”中可构造出千变万化的应用, 在“云”可以同时支撑不同的应用运行。 5)高扩展性 “云”的规模可以动态伸缩,满足应用和用户规模增长的需要。
一、基本概念 6)按需服务 “云”是一个庞大的资源池,用户按需购买,像自来水、电和煤气那样计费。。 7)极其廉价 “云” 采用极其廉价的节点来构成; “云”采用自动化管理使管理成本降低; “云”的公用性和通用性使利用率提升; “云”设施可建在电力资源丰富的地区, 从而大幅降低能源成本。 因此“云”具有前所未有的性能价格比。
云计算按照服务类型 基础设施作为服务IaaS (Infrastructure as a Service) 平台作为服务PaaS (Platform as a Service) 软件作为服务SaaS (Software as a Service)
基础设施作为服务IaaS IaaS将硬件设备等基础资源 封装成服务供用户使用, 如亚马逊云计算AWS(Amazon Web Services)的 弹性计算云EC2和 简单存储服务S3。 在IaaS环境中,用户在使用裸机和磁盘, 既可以让它运行Windows, 也可以让它运行Linux,可做任何事 但用户必须考虑如何才能让多台机器协同工作起来。 AWS提供了节点之间互通消息的接口简单队列服务SQS(Simple Queue Service)。 IaaS最大的优势在于它允许用户动态申请或释放节点,按使用量计费。
平台作为服务PaaS PaaS比Iaas更具体一步 它提供用户应用程序的运行环境,如 Google App Engine,Microsoft Windows Azure PaaS自身负责资源的动态扩展和容错管理, 用户应用程序不必考虑节点间的配合问题。 但用户的自主权降低, 必须使用特定的编程环境、特定的编程模型。 类似高性能集群计算机里进行MPI编程,只适用于解决某些特定的计算问题。例如, Google App Engine只用Python和Java语言、 基于称为Django的Web应用框架、 调用Google App Engine SDK开发在线服务。
软件作为服务SaaS SaaS的针对性更强, 它将某些特定应用软件功能封装成服务,如 Salesforce的客户关系管理CRM(Client Relationship Management)服务。 不像PaaS,即不提供计算或存储资源类型服务. 不像IaaS,即不提供运行用户自定义应用程序的环境。 它只提供某些专门用途的服务供应用调用。 虚拟化数据存贮管理平台 虚拟化表单生成器 虚拟化的云安全服务
软件作为服务SaaS 随着云计算的深化发展,不同云计算解决方案之间相互渗透融合, 同一种产品往往横跨两种以上类型。例如, Amazon Web Services是以IaaS发展的, 但新提供的弹性MapReduce服务模仿了 Google的MapReduce, 简单数据库服务SimpleDB 模仿了Google的Bigtable,这两者属于PaaS的范畴, 而它新提供的电子商务服务FPS和DevPay以及网站访问统计服务Alexa Web服务,则属于SaaS的范畴
2、云计算的简史 Google、亚马逊、IBM、微软和Yahoo等大公司是云计算的先行者。 VMware、Salesforce、Facebook、YouTube、MySpace是期望云能带效益的公司. 亚马逊研发了弹性计算云EC2 (Elastic Computing Cloud)和简单存储服务S3(Simple Storage Service)为企业提供计算和存储服务。 Google是最大的云计算技术的使用者。 Google分布在200点、超100万台服务器 Google地球、地图、Gmail、Docs. Google App Engine运行大型并行应用程序 三大法宝:GFS、MapReduce和Bigtable.
2、云计算的简史 IBM在2007年11月推出了 “蓝云”计算平台, 为客户带来即买即用的云计算平台。 包括自我管理和自我修复的虚拟化计算软件. 使来自全球的应用可以访问分布式的大型服务器池,使得数据中心在类似于互联网的环境下运行计算。 与17个欧洲组织合作开展名为RESERVOIR的云计算项目, 以“无障碍的资源和服务虚拟化”为口号,欧盟提供了1.7亿欧元作为部分资金。 2008年8月,IBM宣布将投资约4亿美元用于北卡罗来纳州和日本东京的云计算数据中心改造。 计划2009年在10个国家投资3亿美元建设13个云计算中心
2、云计算的简史 微软紧跟云计算步伐,于2008年10月推出了Windows Azure (译为“蓝天”)操作系统。 Azure是继Windows取代DOS之后, 微软的又一次颠覆性转型——通过在互联网架构上打造新云计算平台, 让Windows真正由PC延伸到“蓝天”上。 Azure的底层是微软全球基础服务系统, 由遍布全球的第四代数据中心构成。 目前,微软已经配置了220个集装箱式数据中心,包括44万台服务器。
2、云计算的简史 2008年,IBM在无锡和北京建云计算中心; 世纪互联推出了CloudEx产品线,提供互联网主机服务、在线存储虚拟化服务等; 中国移动研究院建1024CPU的云计算中心; 解放军理工大学的云存储系统MassCloud,并以它支撑基于3G的大规模视频监控应用和数字地球系统。 云安全技术通过大量客户端的参与和大量服务器端的统计分析来识别病毒和木马,巨大成功。 瑞星、趋势、卡巴斯基、McAfee、Symantec、江民、Panda、金山、360安全卫士等云安全系统
3、云计算实现机制 物理资源层、资源池层、管理中间件层、SOA构建层(Service-Oriented Architecture). 物理资源层包括计算机、存储器、网络设施、数据库和软件等. 资源池层是将大量相同类型的资源构成同构或接近同构的资源池,如计算资源池、数据资源池 构建资源池是物理资源的集成和管理工作, 例如研究在一个标准集装箱的空间 如何装下2000个服务器、解决散热和故障节点替换的问题并降低能耗。
3、云计算实现机制 管理中间件层负责对云计算的资源进行管理, 并对众多应用任务进行调度,使资源能够高效、安全地为应用提供服务。 SOA构建层将云计算能力封装成标准的Web Services服务,并纳入到SOA体系进行管理和使用,包括服务接口、服务注册、服务查找、服务访问和服务工作流等。 管理中间件层和资源池层是云计算技术的最关键部分, SOA构建层的功能更多依靠外部设施提供。
3、云计算实现机制 管理中间件层负责资源管理、任务管理、用户管理和安全管理等工作。 (1)负责均衡地使用云资源节点,检测节点的故障并试图恢复或屏蔽之,对资源的使用情况进行监视统计; (2)负责执行用户或应用提交的任务,包括完成用户任务映象(Image)的部署和管理、任务调度、任务执行、任务生命期管理等; (3)用户管理是实现云计算商业模式的一个必不可少的环节,包括提供用户交互接口、管理和识别用户身份、创建用户程序的执行环境、对用户的使用进行计费等; (4)安全管理保障云计算设施的整体安全,包括身份认证、访问授权、综合防护和安全审计等。
3、云计算实现机制 管理中间件层负责资源管理、任务管理、用户管理和安全管理等工作。
3、云计算实现机制 用户交互接口向应用以Web Services方式提供访问接口,获取用户需求。 服务目录是用户可以访问的服务清单。 系统管理模块负责管理和分配所有可用的资源,其核心是负载均衡。 配置工具负责在节点上准备任务运行环境。 监视统计模块负责监视节点的运行状态,并完成用户使用节点情况的统计。 执行过程,用户交互接口允许用户从目录中选取并调用一个服务,该请求传递给系统管理模块后,它将为用户分配恰当的资源,然后调用配置工具为用户准备运行环境。
4、网格计算与云计算 网格(Grid)是20世纪90年代中期发展起来的下一代互联网核心技术。 开创者Ian Foster将之定义为“在动态、多机构参与的虚拟组织中协同共享资源和求解问题". 网格中间件有Globus Toolkit、UNICORE、Condor、gLite. 国际知名的网格平台有TeraGrid、EGEE、CoreGRID、D-Grid、ApGrid、Grid3、GIG 中国国家网格(CNGrid,863-10主题)和 中国空间信息网格(SIG,863-13主题) 教育部的中国教育科研网格(ChinaGrid) 上海网格(ShanghaiGrid) 973计划有“语义网格的基础理论、模型与方法研究” 863计划有“高效能计算机及网格服务环境”、“网格地理信息系统软件及其重大应用”等, 国家自然科学基金重大研究计划有“网络计算应用支撑中间件”等项目。
二、Google云计算原理 Google拥有搜索业务,Google Maps、Google Earth、Gmail、YouTube,Google Wave。 数据量巨大,面向全球用户提供实时服务, 因此必须解决海量数据存储和快速处理问题。 Google开发简单且高效的软件,让百万台的廉价机器协同工作,被命名为Google云计算技术。 具体包括:Google文件系统GFS、分布式计算编程模型MapReduce、分布式锁服务Chubby和分布式结构化数据存储系统Bigtable等。 GFS提供了海量数据的存储和访问的能力, MapReduce使得海量信息的并行处理变得简单易行, Chubby保证了分布式环境下并发操作的同步问题, Bigtable使得海量数据的管理和组织十分方便。
1、Google文件系统GFS Google文件系统(Google File System,GFS) 是一个大型的分布式文件系统。 它为Google云计算提供海量存储 GFS并不是一个开源的系统,仅仅能从公布的技术文档来获得了解,而无法进行深入的研究. 当前主流分布式文件系统有 RedHat的GFS(Global File System)、 IBM的GPFS Sun的Lustre等。 用于高性能计算或大型数据中心,对硬件要求较高。 Lustre推荐OST节点采用RAID技术或SAN存储区域网来容错,但Lustre自身不提供数据存储容错,一旦OST发生故障就无法恢复,大大增加了存储成本.
1、Google文件系统GFS 正如李开复所说的那样,创新固然重要, 但有用的创新更重要。 创新的价值,取决于一项创新在新颖、有用和可行性这三个方面的综合表现。 Google GFS的新颖之处是采用廉价的商用机器构建分布式文件系统,同时将GFS的设计与Google应用的特点紧密结合,并简化其实现, 使之可行,最终达到创意新颖、有用、可行的完美组合。 将容错的任务交由文件系统来完成,利用软件的方法解决系统可靠性问题,这样可以使得存储的成本成倍下降。
1、GFS-系统架构 GFS将整个系统的节点分为三类角色:Client(客户端)、Master(主服务器)和Chunk Server(数据块服务器)。 Client是GFS提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。应用程序直接调用这些库函数,并与该库链接在一起。 Master是GFS的管理节点,在逻辑上只有一个,它保存系统的元数据,负责整个文件系统的管理,是GFS文件系统中的大脑。 Chunk Server负责具体的存储工作。 数据以文件的形式存储在Chunk Server上,Chunk Server的个数可以有多个,它的数目直接决定了GFS的规模。GFS将文件按照固定大小进行分块,默认是64MB,每一块称为一个Chunk(数据块),每个Chunk都有一个对应的索引号(Index)。
1、GFS-系统架构 GFS将整个系统的节点分为三类角色:Client(客户端)、Master(主服务器)和Chunk Server(数据块服务器). 客户端在访问GFS时,首先访问Master节点, 获取将要与之进行交互的Chunk Server信息, 然后直接访问这些Chunk Server完成数据存取。 实现了控制流和数据流的分离。 Client与Master之间只有控制流,而无数据流, 极大地降低了Master的负载,使之不成为系统性能的一个瓶颈。 Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使得整个系统I/O高度并行,系统整体性能得到提高。
1、GFS-系统架构-特点 (1) 采用中心服务器模式 简化设计,降低实现难度。Master管理了分布式文件系统中的所有元数据。文件划分为Chunk进行存储, 对Master来说,每个Chunk Server只是一个存储空间。 Client发起的所有操作都需要先通过Master才能执行。 增加新的Chunk Server只需要注册到Master上即可,Chunk Server之间无任何关系。 如果采用完全对等的、无中心的模式,那么将Chunk Server的更新信息通知到每一个Chunk Server是难点,影响系统的扩展性。 Master维护统一命名空间,掌握Chunk Server的情况. 据此可实现整个系统范围内数据存储的负载均衡。 元数据的一致性问题自然解决。 但极易成为整个系统的瓶颈等。GFS采用多种机制避免,如控制元数据的规模、对Master远程备份、控制信息和数据分流等。
1、GFS-系统架构-特点 (2)不缓存数据 简化设计,降低实现难度。Master管理了分布式文件系统中的所有元数据。文件划分为Chunk进行存储, 对Master来说,每个Chunk Server只是一个存储空间。 Client发起的所有操作都需要先通过Master才能执行。 增加新的Chunk Server只需要注册到Master上即可,Chunk Server之间无任何关系。 如果采用完全对等的、无中心的模式,那么将Chunk Server的更新信息通知到每一个Chunk Server是难点,影响系统的扩展性。 Master维护统一命名空间,掌握Chunk Server的情况. 据此可实现整个系统范围内数据存储的负载均衡。 元数据的一致性问题自然解决。 但极易成为整个系统的瓶颈等。GFS采用多种机制避免,如控制元数据的规模、对Master远程备份、控制信息和数据分流等。
1、GFS-系统架构-特点 (3)在用户态下实现 文件系统作为操作系统的重要组成部分,其实现通常位于操作系统底层。如Linux的Ext3. 1)在用户态下实现,利用POSIX编程接口存取数据,无需了OS内部实现机制和接口,提高了通用性。 2)POSIX接口的功能丰富,不像内核编程那样受限。 3)用户态下有多种调试工具,内核态中比较困难。 4)用户态下,Master和Chunk Server都以进程的方式运行,单个进程不会影响到整个操作系统。 在内核态下,如果处置不当,效率可能不高,还会影响到整个系统运行的稳定性。 5)用户态下,GFS和操作系统运行在不同的空间,两者耦合性降低,从而方便GFS自身和内核的单独升级。 Portal Operating System Interface of Unix
1、GFS-系统架构-特点 (4)只提供专用接口 通常的分布式文件系统一般都会提供一组与POSIX规范兼容的接口. GFS采用了专用的文件系统访问接口. 1)降低实现的难度。与POSIX兼容的接口需要在内核一级实现,而GFS是在应用层实现的。 2)采用专用接口可根据应用特点对应用提供一些特殊支持,如支持多个文件并发追加等。 3)专用接口直接和Client、Master、Chunk Server交互,减少了操作系统之间上下文的切换,降低了复杂度,提高了效率.
2、GFS-容错性 (1) Master容错 Master上保存了GFS文件系统的三种元数据。 1)命名空间(Name Space),整个文件系统的目录结构。 2)Chunk与文件名的映射表。 3)Chunk副本位置信息,每个Chunk默认有三个副本。 对前两种元数据,GFS通过日志来提供容错功能。 副本位置则直接保存在各个Chunk Server上, Master启动或Chunk Server向Master注册时自动生成。 当Master发生故障时,在磁盘数据保存完好情况下, 可以迅速恢复以上元数据。 为了防止Master彻底死机的情况,GFS还提供了Master远程的实时备份,这样在当前的GFS Master出现故障无法工作的时候,另外GFS Master可以迅速接替其工作
2、GFS-容错性 (2) Chunk Server容错 GFS采用副本的方式实现Chunk Server的容错。 每一个Chunk有多个存储副本(默认为三个) 分布存储在不同的Chunk Server上。 每Chunk,所有的副本全部写入成功,才视为成功写入。 在运行中若副本出现丢失或不可恢复等,Master会自动产生另一副本,从而确保副本保持一定的个数。 一式三份浪费磁盘空间,但磁盘成本不断下降,副本是最简单、最可靠、最有效,实现的难度也最小的一种方法。 GFS的文件划分为多个Chunk,Chunk的默认大小是64MB, 副本以文件的形式进行存储。 每个Chunk以64KB大小划分为多个Block, Block有32bit校验和. 当读取一个Chunk时,Chunk Server会将读取的数据和校验和进行比较,如果不匹配会让Client选择其他Chunk Server上的副本
3、GFS-系统管理技术 (1) 大规模集群安装技术 迅速地安装、部署GFS系统,以及迅速地进行节点的系统升级等,都需要该技术。 (2) 故障检测技术 GFS是构建在不可靠的廉价计算机之上,故障发生十分频繁,在最短的时间内发现并确定发生故障的Chunk Server,需要集群监控技术。 (3)节点动态加入技术 Chunk Server加入时,若需要先安装系统,那么扩展将十分烦琐。为了做到裸机加入,能自动获取系统并安装运行,那么需要该技术。
3、GFS-系统管理技术 (1) 大规模集群安装技术 (2) 故障检测技术 (3)节点动态加入技术 裸机加入,能自动获取系统并安装运行 (4)节能技术 有关数据表明,服务器的耗电成本大于当初的购买成本,因此GFS采用了多种机制来降低服务器的能耗. 如对服务器主板进行修改,采用蓄电池代替昂贵的UPS(不间断电源系统),提高能量的利用率。 Rich Miller 认为,这个设计让GFS的UPS 利用率达到99.9%,而一般数据中心只能达到92%~95%。
3、GFS-软件运行技术 (1) 并行数据处理MapReduce 是Google提出的一个软件架构, 是处理海量数据的并行编程模式, 用于大规模数据集(大于1TB)的并行运算。 “Map(映射)”、“Reduce(化简)” 特别适合于, 非结构化和结构化的海量数据的搜索、挖掘、分析与机器智能学习等。 MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节。 通过接口可把大尺度的计算自动地并发和分布执行, 从而使并发编程变得非常容易。 从而普通PC能构成的巨大集群来达到极高的性能。 MapReduce也具有较好的通用性,大量不同的问题都可以简单地通过MapReduce来解决。
3、GFS-软件运行技术 (1) 并行数据处理MapReduce Map函数独立地是对部分原始数据操作,可并发进行。 Reduce是对Map所产生结果合并,每个Reduce所处理的Map中间结果是互不交叉的,因此Reduce可并发。
3、GFS-软件运行技术 1)用户程序中的MapReduce函数库首先把输入文件分成M块,每块大概16M~64MB,接着在集群的机器上执行处理程序。 2)主控程序Master将M个Map任务和R个Reduce任务分派给空闲的Worker。 3)接受Map任务的Worker,读取并处理相关的输入块。中间结果<key,value>对暂时缓冲到内存,将被定时写到本地硬盘,中间结果在本地硬盘的位置信息将被发送回Master,然后Master负责把这些位置信息传送给Reduce Worker。 4) Reduce调用远程过程来从Map Worker的本地硬盘上读取缓冲的中间数据.
3、GFS-软件运行技术 (2)分布式锁服务Chubby Chubby是Google设计的提供粗粒度锁服务的一个文件系统,它基于松耦合分布式系统,解决了分布的一致性问题。 GFS使用Chubby来选取一个GFS主服务器, Bigtable使用Chubby指定一个主服务器并发现、控制与其相关的子表服务器。 Google内部还使用Chubby进行名字服务(Name Server),管理整个系统的目录树。 用到Paxos算法。 1)决议只有在被 proposers提出后才能批准。 2)每次只批准一个决议。 3)只有决议确定被批准后learners才能获取这个决议。
3、GFS-软件运行技术 (2)分布式锁服务Chubby 设计目标主要有以下几点。 1)高可用性和高可靠性。在此基础上再考虑系统的吞吐量和存储能力。 2)高扩展性。将数据存储在价格较为低廉的RAM,支持大规模用户访问文件。 3)支持粗粒度的建议性锁服务,以提高系统的性能。 4)服务信息直接存储。直接存储元数据、系统参数等服务信息,而不需要另一个进程来维护这些元信息。 5)支持通报机制。 6)支持缓存机制。通过一致性缓存将常用信息保存在客户端,避免了频繁地访问主服务器。
3、GFS-软件运行技术 (3)分布式结构化数据表Bigtable Bigtable是Google开发的基于GFS和Chubby的分布式存储系统。 Web索引、卫星图像数据等在内的海量结构化和半结构化数据,都是存储在Bigtable中. 动机主要有如下三个方面。 1)需要存储的数据种类繁多. 2)海量的服务请求。 3)商用数据库无法满足Google的需求
3、GFS-软件运行技术 (3)分布式结构化数据表Bigtable-目标 1)广泛的适用性。Bigtable是为了满足一系列Google产品而并非特定产品的存储要求。 2)很强的可扩展性。根据需要随时可以加入或撤销服务器。 3)高可用性。对于客户来说,有时候即使短暂的服务中断也是不能忍受的。确保几乎所有的情况下系统都可用。 4)简单性。底层系统的简单性既可以减少系统出错的概率,也为上层应用的开发带来便利。