Google云计算平台介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1Google云计算平台介绍胡经国本文作者的话本文是根据有关文献和资料编写的《漫话云计算》系列文稿之一。现作为云计算学习笔录,奉献给云计算业外读者,作为进一步学习和研究的参考。希望能够得到大家的指教和喜欢!下面是正文一、Google云计算基础架构模式Google云计算技术,实际上是针对Google特定的网络应用程序而定制的。针对内部网络数据规模超大的特点,Google提出了一整套基于分布式并行集群方式的基础架构,利用软件的能力来处理集群中经常发生的节点失效问题。从2003年开始,Google连续几年,在计算机系统研究领域的最顶级会议与杂志上发表论文;揭示其内部的分布式数据处理方法,向外界展示其使用的云计算核心技术。从其近几年发表的论文来看,Google使用的云计算基础架构模式,包括以下四个既相互独立而又紧密结合在一起的系统:⑴、Google建立在集群之上的文件系统GoogleFileSystem;⑵、针对Google应用程序的特点提出的Map/Reduce编程模式;⑶、分布式的锁机制Chubby;⑷、Google开发的模型简化的大规模分布式数据库管理系统BigTable。二、Google文件系统为了满足Google迅速增长的数据处理需求,Google设计并实现了Google文件系统(GoogleFileSystem,GFS)。GFS与过去的分布式文件系统相比具有许多相同的目标,例如性能、可伸缩性、可靠性和可用性。1、应用负载和技术环境的影响然而,GFS的设计还受到Google应用负载和技术环境的影响。这主要体现在以下四个方面:⑴、集群中的节点失效是一种常态,而不是一种异常。由于参与运算与处2理的节点数目非常庞大,通常会使用上千个节点进行共同计算。因此,每时每刻总会有节点处在失效状态。需要通过软件程序模块,监视系统的动态运行状况,侦测错误;并且将容错以及自动恢复系统集成在系统中。⑵、GFS中的文件大小,与通常文件系统中的文件大小,概念不一样。其文件大小通常以G字节计。另外,文件系统中的文件含义与通常文件不同。一个大文件可能包含大量数目的通常意义上的小文件。所以,设计预期和参数,例如I/O操作和块尺寸,都要重新考虑。⑶、GFS中的文件读写模式与传统的文件系统不同。在Google应用(如搜索)中对大部分文件的修改,不是覆盖原有数据,而是在文件尾追加新数据。对文件的随机写是几乎不存在的。对于这类巨大文件的访问模式,客户端对数据块缓存失去意义,追加操作成为性能优化和原子性(把一个事务看做是一个程序;它要么被完整地执行,要么完全不执行)保证的焦点。⑷、GFS某些具体操作不再透明;而且需要应用程序的协助完成。应用程序和文件系统API的协同设计,提高了整个系统的灵活性。例如,放松了对GFS一致性模型的要求。这样,不用加重应用程序的负担,就大大简化了文件系统的设计。还引入了原子性的追加操作。这样,在多个客户端同时进行追加的时候,就不需要额外的同步操作了。总之,GFS是为Google应用程序本身而设计的。据称,Google已经部署了许多GFS集群。有的集群拥有超过1000个存储节点,超过300T的硬盘空间,被不同机器上的数百个客户端连续不断地频繁访问着。2、Google文件系统架构图1(略),给出了Google文件系统系统架构。一个GFS集群,包含一个主服务器和多个块服务器,被多个客户端访问。文件被分割成固定尺寸的块。在每个块创建的时候,服务器分配给它一个不变的、全球惟一的64位块句柄,对它进行标识。块服务器把块作为linux文件保存在本地硬盘上;并根据指定的块句柄和字节范围,来读写块数据。为了保证可靠性,每个块都会复制到多个块服务器上,缺省保存三个备份。主服务器管理文件系统所有的元数据,包括名字空间、访问控制信息和文件到块的映射信息,以及块当前所在的位置。GFS客户端代码被嵌入到每个程序里。它实现了Google文件系统API,帮助应用程序与主服务器和块服务器通信,对数据进行读写。客户端跟主服务器交互进行元数据操作。但是,所有的数据操作的通信,都是直接和块服务器进行的。客户端提供的访问接口,类似于POSIX接口;但有一定的修改,并不完全兼容POSIX标准。3通过服务器端和客户端的联合设计,GoogleFileSystem能够针对它本身的应用,获得最大的性能以及可用性效果。三、MapReduce分布式编程模式为了让内部非分布式系统方向背景的员工,能够有机会将应用程序建立在大规模的集群基础之上,Google还设计并实现了一套大规模数据处理的编程规范Map/Reduce系统。这样,非分布式专业的程序编写人员,也能够为大规模的集群编写应用程序,而不用去顾虑集群的可靠性、可扩展性等问题。应用程序编写人员,只需要将精力放在应用程序本身;而关于集群的处理问题则交由平台来处理。Map/Reduce通过“Map(映射)”和“Reduce(化简)”这样两个简单的概念来参加运算。用户只需要提供自己的Map函数以及Reduce函数,就可以在集群上进行大规模的分布式数据处理。据称,Google的文本索引方法,即搜索引擎的核心部分,已经通过MapReduce的方法进行了改写,获得了更加清晰的程序架构。在Google内部,每天都有上千个MapReduce的应用程序在运行。四、分布式大规模数据库管理系统BigTable构建于上述两项基础之上的第三个云计算平台,就是Google关于将数据库系统扩展到分布式平台上的分布式大规模数据库管理系统BigTable。很多应用程序对于数据的组织还是非常有规则的。一般来说,数据库对于处理格式化数据还是非常方便的。但是,由于关系数据库很强的一致性要求,很难将其扩展到很大的规模。为了处理Google内部大量的格式化和半格式化数据,Google构建了弱一致性要求的大规模数据库管理系统BigTable。据称,现在有很多Google的应用程序建立在BigTable之上,例如SearchHistory、Maps、Orkut和RSS阅读器等。图2(略),给出了在BigTable模型中的数据模型。数据模型包括行列以及相应的时间戳;所有的数据都存放在表格中的单元里。BigTable的内容按照行来划分;将多个行组成一个小表,保存到某一个服务器节点中。这一个小表就被称为Tablet。五、相关云计算服务平台以上是Google内部云计算基础平台的三个主要部分。除了这三个主要部分之外,Google还建立了分布式程序调度器、分布式锁服务等一系列相关的云计算服务平台。六、Google云应用1、Google云计算应用程序除了上述的云计算基础设施之外,Google还在其云计算基础设施之上建立4了一系列新型网络应用程序。由于借鉴了异步网络数据传输的Web2.0技术,这些应用程序给予用户全新的界面感受,以及更加强大的多用户交互能力。其中,典型的Google云计算应用程序,就是Google推出的与MicrosoftOffice软件进行竞争的Docs网络服务程序。GoogleDocs,是一个基于Web的工具。它有跟MicrosoftOffice相近的编辑界面。有一套简单易用的文档权限管理。而且,它还记录下所有用户对文档所做的修改。GoogleDocs的这些功能使它非常适用于网上共享与协作编辑文档。GoogleDocs甚至可以用于监控责任清晰、目标明确的项目进度。当前,GoogleDocs已经推出了文档编辑、电子表格、幻灯片演示、日程管理等多个功能的编辑模块;能够替代MicrosoftOffice相应的一部分功能。值得注意的是,通过这种云计算方式形成的应用程序,非常适合于多个用户进行共享以及协同编辑,为一个小组的人员进行共同创作带来很大的方便性。GoogleDocs,是云计算的一种重要应用。即可以通过浏览器的方式,访问远端大规模的存储与计算服务。云计算能够为大规模的新一代网络应用打下良好的基础。2、Google云计算平台是私有环境虽然可以说Google是云计算的最大实践者,但是Google的云计算平台是私有环境;特别是Google的云计算基础设施还没有开放出来。除了开放有限的应用程序接口,例如GWT(GoogleWebToolkit)以及GoogleMapAPI(谷歌地图接口)等以外,Google并没有将云计算的内部基础设施共享给外部的用户使用。上述的所有基础设施都是私有的。幸运的是,Google公开了其内部集群计算环境的一部分技术。这使得全球的技术开发人员,能够根据这一部分文档,构建开源的大规模数据处理云计算基础设施。其中,最有名的项目即Apache旗下的Hadoop项目。链接:GWTGWT(GoogleWebToolkit,GoogleWeb工具包)是一种开源Java软件开发框架,可以使不会使用第二种浏览器语言的开发人员编写Google地图和Gmail(Google的免费网络邮件服务)等AJAX应用程序时更加轻松。如今,编写动态网络应用程序是一个单调乏味而且易于出错的过程。您需要花费90%的时间,来处理网络浏览器和平台之间细微的不兼容性问题。而且,由于JavaScript尚不完善,使得AJAX组件的共享、测试和重复使用变得困难而且不可靠。链接:AJAX5AJAX(AsynchronousJavaScriptandXML,异步的JavaScript和XML)。AJAX不是新的编程语言,而是一种使用现有标准的新方法。AJAX是在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的艺术。JavaScript,是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML(标准通用标记语言的子集)网页添加动态功能,比如响应用户的各种操作。XML(ExtensibleMarkupLanguage,可扩展标记语言),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。3、两个云计算的实现下面两个云计算的实现,为外部的开发人员以及中小公司,提供了云计算的平台环境,使得开发者能够在云计算的基础设施之上构建自己的新型网络应用。其中,IBM的蓝云计算平台,是可供销售的计算平台;用户可以基于这些软硬件产品,自己构建云计算平台。亚马逊的弹性计算云,是托管式的云计算平台;用户可以通过远端的操作界面直接使用。2017年12月15日编写于重庆2019年8月4日修改于重庆

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功