对云计算的理解云计算产品有哪些


云计算涵盖了分布式计算,并行计算和网格计算,分布式用于存储,并行用于处理,网格用于共享。

云计算的商业模式就是通过出租存储空间及数据处理服务给用户来获取利润,云计算的好处就是成本低,资源集中可共享。云计算存储数据更多地注重数据的可靠性,一般会增加数据冗余来保证数据的可靠性,例如有多个数据备份。

云计算模型是一种生产者-消费者模型,网格计算模型是资源共享模型,可以从下面的图看出它们的区别:

云计算的数据存储技术常用的有Google开发的GFS(GoogleFileSystem)和Hadoop开发的HDFS(HadoopDistributedFileSystem。



1、GFS:管理大型分布式数据密集型计算且可扩展的分布式文件系统。它使用廉价商用硬件搭建系统,并且提供容错的高性能服务。它与普通的分布式文件系统区别见下图,

GFS由一个Master和大量块服务器组成,Master存放元数据,GFS中文件被切成64MB的块来存储。GFS通过数据冗余来保证数据的可靠性,每个数据会被备份至少3份,为了保证数据的一致性,当数据进行修改时会对所有备份都进行修改,通过版本号来保持备份的一致性。读操作不在Master上进行,读取数据时只是从Master上获取目标数据块的位置,然后去块服务器上读取。写操作首先在Master上获取授权,然后把需要写入的数据分发给所有数据备份,每个数据备份获得写入数据后发信号告诉主备份已获得,当所有数据备份获取写入数据后,主数据备份将这一信号告诉用户端,用户端发出写入信号给主备份,主备份把信号发给所有备份,每个数据备份写入完成后发信号告诉主备份,当所有数据备份写入完成后,主备份发送信号告诉用户端数据写入完毕。



1、BigTable:管理结构化数据的分布式存储系统,它可以管理数千台商用服务器上PB规模的数据。它对读操作进行了优化,采用列存储方式,它的数据存储格式为->string,基本元素即行,列,时间戳,记录板,记录板是一段行的集合体。BigTable中的数据项按照行的字典序排列,每一行会动态划分到不同的记录板中,每个节点管理大约100个记录板,时间戳是一个64位的整数,用于表示数据项的版本。BigTable在执行时有三个主要组件,链接到客户端的库,主服务器,记录板服务器。主服务器用来分配记录板到记录板服务器,做负载均衡和垃圾回收等。记录板服务器用来管理记录板,处理读写请求等。BigTable使用三层来存储数据位置信息,第一层叫Chubbyfile,存储RootTablet的位置信息;第二层是RootTablet,存储MetaDataTablet的位置信息,第三层就是MetaDataTablet,包含了许多UserTable的位置信息,而UserTable就是具体存储数据的地方。

云计算的编程模型大多数是基于Map-Reduce的,所谓Map-Reduce就是把一个大的任务分解成多个小任务,然后由多台服务器并行处理,最后再把结果归纳整合得出最终结果。它是一种并行计算的编程模型,用于任务调度及执行。主要实现两个函数,Map函数和Reduce函数,Map函数定义处理分块数据的方法,Reduce函数定义对Map函数处理后的中间结果进行归纳和整合。Map-Reduce程序会自动将数据分块,将Map作业和Reduce作业分配到各个工作进程并调度各个工作进程,同时还会自动处理异常和出错。Map-Reduce的工作流程如下图:



1、Map-Reduce库把输入数据分成N份,把用户程序进程拷贝成M份,分别放入不同的服务器中,其中一个拷贝的进程是Master,其他是worker,Master用于调度管理worker,比如给空闲的worker分配Map或者Reduce作业。Map和Reduce作业是由用户自己实现的。数据分块数和进程拷贝数可以由用户进行配置。



2、被分配Map作业的worker进程,会读取相对应的输入数据块,每份输入数据块都有一个键值对,当Map作业处理完分块数据后,会把中间结果存入一个新的键值对中,并把这个新的键值对先缓存在内存中,并定期写入本地磁盘中,这些新键值对会被放入不同的区,每个区有一个执行Reduce作业的工作进程对应。这些新键值对的位置信息会被通报给Master,并由Master把位置信息发送给对应的执行Reduce作业的工作进程。执行Reduce作业的工作进程会把这些键值对先排序然后再作整合,并把结果输出到一个结果文件里。最终会产生多个输出文件,用户可以把这些文件作为输入再调用另一个Map-Reduce程序,也可以作合并处理。

1、worker发生错误时,屏蔽该worker,并将上面的程序移至其它worker上执行,该过程由Master控制。

云计算这三大技术目前主要由Google和Hadoop做了实现,Map-Reduce的实现Google用的是

C ,Hadoop用的是Java。两者三大技术结构差不多,Google是GFS BigTable Map-Reduce,Hadoop是HDFS HBase Map-Reduce。



1、云计算提供商接口不一致,没有一个接口的统一标准,导致服务提供商无法将服务统一部署在不同的云计算提供商处以避免DDoS(DistributedDenialofService)攻击。

Sharednothing架构是一种分布式计算架构,架构中每个节点都是独立自主的与其它节点不共享,没有单点竞争。BigTable和Map-Reduce都采用了这种架构。



1、IaaS(InfrastructureasaService,基础架构即服务)是通过云计算提供一些基础的数据和软硬件服务,例如提供服务器、操作系统、磁盘存储和数据库等,具体例子有Amazon的AWS,腾讯也推出了IaaS服务模式的云计算。



2、PaaS(PlatformasaService,平台即服务)是提供一个基础软件架构即平台,然后允许开发人员基于这样一个平台来构建自己的应用,具体例子有Google的AppEngine,微软的Azure,国内的百度,阿里也提供了这样的平台服务。



3、SaaS(SoftwareasaService,软件即服务)是最成熟,应用最广的服务模式,即通过软件或者应用来提供云计算服务,比如Google的Gmail,Google地图等。