细分云计算系统的核心技术
云计算的基本原理是,通过使计
摘要:云计算将超级计算能力推向了大众,相信不久的将来,云计算就如天空中的朵朵白云一样,它无所不在,同时又让人无法察觉,为人们的生活提供着无限便利。 云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。目前云计算有以下六种计算形式: (1)SAAS(软件即服务) 这种类型的云计算通过浏览器把程序传给成千上万的用户。在用户眼中看来,这样会省去在服务器和软件授权上的开支;从供应商角度来看,这样只需要维持一个程序就够了,这样能够减少成本。Salesforce.com是迄今为止这类服务最为出名的公司。SAAS在人力资源管理程序和ERP中比较常用。GoogleApps和ZohoOffice也是类似的服务; (2)实用计算(UtilityComputing) 这个主意很早就有了,但是知道最近才在Amazon.com、Sun、IBM和其它提供存储服务和虚拟服务器的公司中新生。这种云计算是为IT行业创造虚拟的数据中心使得其能够把内存、I/O设备、存储和计算能力集中起来成为一个虚拟的资源池来为整个网络提供服务; (3)网络服务 同SAAS关系密切,网络服务提供者们能够提供API让开发者能够开发更多基于互联网的应用,而不是提供单机程序; (4)平台即服务 另一种SAAS,这种形式的云计算把开发环境作为一种服务来提供。你可以使用中间商的设备来开发自己的程序并通过互联网和其服务器传到用户手中; (5)MSP(管理服务提供商) 最古老的云计算运用之一。这种应用更多的是面向IT行业而不是终端用户,常用于邮件病毒扫描、程序监控等等; (6)商业服务平台 SAAS和MSP的混合应用,该类云计算为用户和提供商之间的互动提供了一个平台。比如用户个人开支管理系统,能够根据用户的设置来管理其开支并协调其订购的各种服务。 如图1所示,系统结构图中实体解释如下: (1)Userinteractioninterface:用户交互界面,用户来请求服务云; (2)Servicescatalog:服务目录,一个用户能够请求的所有服务目录; (3)Systemmanagement:系统管理,用户管理计算机资源是否可用; (4)Provisioningtool:服务提供工具,能够用于处理请求的服务,需要部署服务配置; (5)Monitoringandmetering:监控和测度,用于对用户服务进行跟踪测量,提交给中心服务器; (6)Servers:服务云,由系统管理,可能是虚拟服务或者真实的。 云计算是一个由并行的网格所组成巨大的服务云网络,通过虚拟化技术可以扩展服务云的计算能力。前端的用户界面准许用户通过服务目录来选择服务,在服务请求发送并验证通过之后,系统管理来找到正确的资源,接着呼叫服务提供工具来挖掘服务云中的资源。服务提供工具需要配置正确的服务栈或者Web应用。 云计算系统架构模型可分为3层:访问层、应用接口层和基础管理层。访问层包括个人空间服务、运营空间租赁;企事业单位或SMB实现数据备份、数据归档、集中存储、远程共享;视频监控、IPTV等系统的集中存储,网站大容量在线存储等。应用接口层可以将云计算能力封装成一套标准的接口服务,包括网络(广域网或互联网)接入、用户认证、权限管理;公用API接口、应用软件、webservice等。基础管理层负责对云计算的资源进行管理,采用合适的算法调度资源,提供高效的服务,包括集群系统、分布式文件系统、并行计算等。 二、云计算系统的技术 从云计算系统的架构模型,可以看出:对于开发一个云计算系统,必须掌握以下几点技术:高可靠的系统集群技术,并行计算技术,分布式文件系统,稳定舒适的终端等。 支撑云计算系统运行的是集群系统,由多台同构或异构的计算机连接起来协同完成特定的任务就构成了集群系统。在这样的工作环境下就构成了计算的分布性,被解决的问题划分出的模块是相互关联的,若是其中一块算错了,那么必定会影响到其他模块,对于数据计算的准确性就要依赖集群系统了。随着云计算的兴起,越来越多的人会考虑云计算系统中处理的数据的准确稳定问题。采用高可靠的系统保护用户得到准确的数据才有利于公司的发展,更有利于云计算的发展,否则就会失去所有的客户。为了自身的发展,云计算服务商首先得提供一套高可靠的计算机集群系统。 云计算系统核心技术:并行计算。并行计算(ParallelComputing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。并行计算系统既可以是专门设计的、含有多个处理器的超级计算机,也可以是以某种方式互连的若干台独立计算机构成的集群。通过并行计算集群完成数据的处理,再将处理的结果返回给用户。 分布式文件系统的设计应满足透明性、并发控制、可伸缩性、容错以及安全需求等。客户端对于文件的读写不应该影响其他客户端对同一个文件的读写。分布式文件系统需要做出复杂的交互,尽量保证文件服务在客户端或者服务端出现问题的时候能正常使用是非常重要的。分布式文件系统能提供备份恢复机制以保证了分布式处理的可靠性。如Google的GFS(GoogleFileSystem),隐藏下层负载均衡,冗余复制等细节,对上层程序只提供一个统一的文件系统API接口,中心是一个Master节点,根据文件索引,找寻文件块。 作为一个云计算系统,是为需要的人提供服务和计算,而服务和计算都在“云”中,“云”对用户来说是个黑盒子,用户可以看作一个云网络虚拟出来的操作系统,不需要知道它的内部实现,只需要根据“云”内的各种服务来实现自己的业务,而业务的使用和展现都在终端。现阶段,通过浏览器几乎覆盖了所有的网络操作,浏览器现在已经成为了用户和“云”进行交互的主要工具云计算系统组成,云计算系统通过浏览器向用户提供服务。随着云计算的发展,当云计算运用到为非浏览器终端提供服务时,会出现非浏览器终端。面对不同用户的需求,要开发不同的终端,提供更加高效的服务。 三、数据存储技术 为保证高可用、高可靠和经济性,云计算采用分布式存储的方式来存储数据,采用冗余存储的方式来保证存储数据的可靠性,即为同一份数据存储多个副本。 另外,云计算系统需要同时满足大量用户的需求,并行地为大量用户提供服务。因此,云计算的数据存储技术必须具有高吞吐率和高传输率的特点。 云计算的数据存储技术主要有谷歌的非开源的GFS(GoogleFileSystem)和Hadoop开发团队开发的GFS的开源实现HDFS(HadoopDistributedFileSystem)。大部分IT厂商,包括雅虎、英特尔的“云”计划采用的都是HDFS的数据存储技术。 云计算的数据存储技术未来的发展将集中在超大规模的数据存储、数据加密和安全性保证以及继续提高I/O速率等方面。 以GFS为例。GFS是一个管理大型分布式数据密集型计算的可扩展的分布式文件系统。它使用廉价的商用硬件搭建系统并向大量用户提供容错的高性能的服务。 GFS系统由一个Master和大量块服务器构成。Master存放文件系统的所有元数据,包括名字空间、存取控制、文件分块信息、文件块的位置信息等。GFS中的文件切分为64MB的块进行存储。 在GFS文件系统中,采用冗余存储的方式来保证数据的可靠性。每份数据在系统中保存3个以上的备份。为了保证数据的一致性,对于数据的所有修改需要在所有的备份上进行,并用版本号的方式来确保所有备份处于一致的状态。 客户端不通过Master读取数据,避免了大量读操作使Master成为系统瓶颈。客户端从Master获取目标数据块的位置信息后,直接和块服务器交互进行读操作。 即客户端在获取Master的写授权后,将数据传输给所有的数据副本,在所有的数据副本都收到修改的数据后,客户端才发出写请求控制信号。在所有的数据副本更新完数据后,由主副本向客户端发出写操作完成控制信号。 当然,云计算的数据存储技术并不仅仅只是GFS,其他IT厂商,包括微软、Hadoop开发团队也在开发相应的数据管理工具。本质上是一种分布式的数据存储技术,以及与之相关的虚拟化技术,对上层屏蔽具体的物理存储器的位置、信息等。快速的数据定位、数据安全性、数据可靠性以及底层设备内存储数据量的均衡等方面都需要继续研究完善。 四、数据管理技术 云计算系统对大数据集进行处理、分析向用户提供高效的服务。因此,数据管理技术必须能够高效地管理大数据集。其次,如何在规模巨大的数据中找到特定的数据,也是云计算数据管理技术所必须解决的问题。 云计算的特点是对海量的数据存储、读取后进行大量的分析,数据的读操作频率远大于数据的更新频率,云中的数据管理是一种读优化的数据管理。因此,云系统的数据管理往往采用数据库领域中列存储的数据管理模式。将表按列划分后存储。 云计算的数据管理技术中最著名的是谷歌提出的BigTable数据管理技术。由于采用列存储的方式管理数据,如何提高数据的更新速率以及进一步提高随机读速率是未来的数据管理技术必须解决的问题。 以BigTable为例。BigTable数据管理方式设计者——Gongle给出了如下定义:“BigTable是一种为了管理结构化数据而设计的分布式存储系统,这些数据可以扩展到非常大的规模,例如在数千台商用服务器上的达到PB(Petabytes)规模的数据。” BigTable对数据读操作进行优化,采用列存储的方式,提高数据读取效率。BigTable管理的数据的存储结构为:->string。BigTable的基本元素是:行,列,记录板和时间戳。其中,记录板是一段行的集合体。如图2所示。 BigTable中的数据项按照行关键字的字典序排列,每行动态地划分到记录板中。每个节点管理大约100个记录板。时间戳是一个64位的整数,表示数据的不同版本。列族是若干列的集合,BigTable中的存取权限控制在列族的粒度进行。 BigTable在执行时需要三个主要的组件:链接到每个客户端的库,一个主服务器,多个记录板服务器。主服务器用于分配记录板到记录板服务器以及负载平衡,垃圾回收等。记录板服务器用于直接管理一组记录板,处理读写请求等。 其中第一级的Chubbyfile中包含RootTablet的位置,RootTablet有且仅有一个,包含所有METADATAtablets的位置信息,每个METADATAtablets包含许多UserTable的位置信息。 当客户端读取数据时,首先从Chubbyfile中获取RootTablet的位置,并从中读取相应METADATAtablet的位置信息。接着从该METADATAtablet中读取包含目标数据位置信息的UserTable的位置,然后从该UserTable中读取目标数据的位置信息项。据此信息到服务器中特定位置读取数据。 这种数据管理技术虽然已经投入使用,但是仍然具有部分缺点。例如,对类似数据库中的Join操作效率太低,表内数据如何切分存储,数据类型限定为string类型过于简单等。而微软的DryadLINQ系统则将操作的对象封装为.NET类,这样有利于对数据进行各种操作,同时对Join进行了优化,得到了比BigTable+MapReduee更快的Join速率和更易用的数据操作方式。 五、编程模型 为了使用户能更轻松地享受云计算带来的服务,让用户能利用该编程模型编写简单的程序来实现特定的目的,云计算上的编程模型必须十分简单。必须保证后台复杂的并行执行和任务调度向用户和编程人员透明。 云计算大部分采用Map—Reduce的编程模式。现在大部分IT厂商提出的“云”计划中采用的编程模型,都是基于Map—Reduce的思想开发的编程工具。 Map-Reduce不仅仅是一种编程模型,同时也是一种高效的任务调度模型。Map—Reduce这种编程模型并不仅适用于云计算,在多核和多处理器、cellprocessor以及异构机群上同样有良好的性能。 该编程模式仅适用于编写任务内部松耦合、能够高度并行化的程序。如何改进该编程模式,使程序员得能够轻松地编写紧耦合的程序,运行时能高效地调度和执行任务,是Map-Reduce编程模型未来的发展方向。 Map-Reduce是一种处理和产生大规模数据集的编程模型,程序员在Map函数中指定对各分块数据的处理过程,在Reduce函数中指定如何对分块数据处理的中间结果进行归约。用户只需要指定map和reduce函数来编写分布式的并行程序。当在集群上运行Map-Reduce程序时,程序员不需要关心如何将输入的数据分块、分配和调度,同时系统还将处理集群内节点失败以及节点间通信的管理等。 为了使用户能更轻松地享受云计算带来的服务,让用户能利用该编程模型编写简单的程序来实现特定的目的,云计算上的编程模型必须十分简单。必须保证后台复杂的并行执行和任务调度向用户和编程人员透明。 云计算大部分采用Map—Reduce的编程模式。现在大部分IT厂商提出的“云”计划中采用的编程模型,都是基于Map—Reduce的思想开发的编程工具。 Map-Reduce不仅仅是一种编程模型,同时也是一种高效的任务调度模型。Map—Reduce这种编程模型并不仅适用于云计算,在多核和多处理器、cellprocessor以及异构机群上同样有良好的性能。 该编程模式仅适用于编写任务内部松耦合、能够高度并行化的程序。如何改进该编程模式,使程序员得能够轻松地编写紧耦合的程序,运行时能高效地调度和执行任务,是Map-Reduce编程模型未来的发展方向。 Map-Reduce是一种处理和产生大规模数据集的编程模型,程序员在Map函数中指定对各分块数据的处理过程,在Reduce函数中指定如何对分块数据处理的中间结果进行归约。用户只需要指定map和reduce函数来编写分布式的并行程序。当在集群上运行Map-Reduce程序时,程序员不需要关心如何将输入的数据分块、分配和调度,同时系统还将处理集群内节点失败以及节点间通信的管理等。图4给出了一个Map-Reduce程序的具体执行过程。 互联网经历了三个时代的变迁。第一个时代是Web1.0的时代,大家通过媒体的报道和文章的撰写来了解资讯和新闻。第二个时代是Web2.0的时代,我们看到的分享的互联网的时代,也就是说个人可以经过博客,经过BBS等其他的方式都可以发表他们的意见,引起了很大的轰动,也造成了很多人与人之间、网友与网友之间的互动。那么互联网的第三个时代Web3.0,应该是Web服务无处不在,普适计算的时代,而云计算正式互联网第三个时代的开始,让网络从一个文字的,社区性的一个平台,变成一个可以在任意时间、任意地点提供无限应用的,汇集众多服务的互联网时代。本文通过上面对于云计算概念、原理、体系结构的叙述,并对当前主流云计算的平台的分析比较,发现了当前云计算平台也面临着诸多挑战: (1)数据安全性:用户数据的安全问题被认为是计算平台安全问题,云计算的一个重要问题是计算平台的安全问题。计算平台安全问题一般来讲要比网络安全复杂些。目前实现方案要用到一些不同计算机学科及实践的方法,是否可以采用可信计算(TrustedComputing)加虚拟化(Virtualization)技术来实现计算平台安全问题,这里云存储安全也需要对数据的安全性、容错性、连续数据保护等方面关注; (2)个人隐私的保护:在云计算平台中,每个人都处在开放的环境中,在云计算平台中提供或者接受服务,这样很容易使得个人隐私缺乏必要的关注,在云计算中,隐私的保护也是一个挑战; (3)服务互操作性:当前云计算对于服务的互操作性支持不够,这对于用户进行跨平台的服务,同平台不同服务之间的服务存在障碍,这也是将来云计算研究的挑战。 云计算将超级计算能力推向了大众,相信不久的将来,云计算就如天空中的朵朵白云一样,它无所不在,同时又让人无法察觉,为人们的生活提供着无限便利。 (编辑:温州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |