《云计算第二章2-4教学.ppt》由会员分享,可在线阅读,更多相关《云计算第二章2-4教学.ppt(28页珍藏版)》请在金锄头文库上搜索。
1、第第2章章 Google云计算原理与应云计算原理与应用用提提 纲纲Google文件系统GFS 分布式数据处理MapReduce 分布式锁服务Chubby 分布式结构化数据表Bigtable分布式存储系统Megastore大规模分布式系统的监控基础架构DapperGoogle应用程序引擎Google应用程序引擎 Google App Engine简介应用程序环境 Google App Engine服务 Google App Engine编程实践 Google App Engine简介Google App Engine是一个由Python应用服务器群、Bigtable数据库及GFS数据储存服务组成
2、的平台,它能为开发者提供一体化的、可自动升级的在线应用服务 开发人员在Google的基础架构上运行网络应用程序 用户可以使用域上的免费域名为应用程序提供服务,也可以使用Google企业应用套件从自己的域为它提供服务 注册一个免费账户即可开发和发布应用程序,而且不需要承担任何费用和责任Google App Engine架构 Google App EngineGoogle App Engine架构架构整体架构 前前端端和和静静态态文文件件 应应用用服服务务器器服务器群应用管理节点基本概念 沙盒Google App Engine为每个应用程序提供了一个安全运行环境Python运行时环境Google
3、App Engine支持Java和Python语言;提供一个由Python语言编写的网络应用程序框架webapp数据库分布式存储数据库 Data StoreGoogle账户开发应用程序必须拥有一个Google账户App Engine服务Google App Engine提供了一些服务开发流程Google App Engine开发应用程序必须遵守一定的开发流程配额和限制Google账户提供的免费空间和流量有一定的配额和限制 Google应用程序引擎 Google App Engine简介应用程序环境 Google App Engine服务 Google App Engine编程实践 应用程序环境
4、特性 (1)动态网络服务功能。能够完全支持常用的网络技术 应应用用程程序序环环境境特特性性(2)具有持久存储的空间。平台可支持一些基本操作,如查询、分类和事务的操作 (4)可以对用户的身份进行验证,并且支持使用Google账户发送邮件 (5)有一个功能完整的本地开发环境,可以在自身的计算机上模拟Google App Engine环境 (6)支持在指定时间或定期触发事件的计划任务 (3)具有自主平衡网络和系统的负载、自动进行扩展的功能 Python Python运行时环境包括Python标准库,开发人员可以调用库中的方法来实现程序功能,但是不能使用沙盒限制的库方法(尝试打开套接字、向文件进行写入
5、操作等),为便于编程,Google App Engine将一些模块进行了禁用在Python运行时环境中,应用程序只能以Python语言编写,扩展代码中若有C语言,则应用程序将不受系统支持Python环境为开发平台中的数据库、Google账户、网址抓取和电子邮件服务等提供了丰富的Python APIGoogle App Engine还提供了一个简单的Python网络应用程序框架Webapp030302020101n用户应用程序只能通过Google App Engine提供的网址抓取API和电子邮件服务API来访问互联网中其他计算机;只能在标准接口上通过HTTP或HTTPS来进行 n应用程序只有在
6、响应网络请求时才运行,且响应时间必须极短(几秒之内完成)。同时,请求处理的程序不能在自己的响应发送后产生子进程或执行代码 沙盒对用户进行如下限制 n应用程序无法对Google App Engine的文件系统进行写入操作,只能读取应用程序代码上的文件,并且该应用程序必须使用Data Store数据库来存储应用程序运行期间持续存在的数据 沙盒给开发人员提供了一个虚拟的环境虚拟的环境,这个环境使应用程序与其他开发者开发使用的程序相隔离隔离,从而保证每个使用者可以安全地开发自己的应用程序 Google App Engine SDK 使用SDK时,可以在本地计算机上模拟包括所有Google App En
7、gine服务的网络服务器应用程序,该SDK包括Google App Engine中的所有API和库。该网络服务器还可以模拟沙盒环境 使用Python实现,这个开发套件可以在装有Python 2.5的任何平台上面运行,包括Windows、Mac OS X和Linux等,开发人员可以在Python网站上获得适合自己系统的Python 该开发套件还包括将应用程序上传到Google App Engine之上的工具。用户创建自己应用程序的代码、静态文件和配置文件之后,就可以运行这个工具将数据上传到平台上面 系统中有一个管理控制台,这个管理控制台有一个网络接口,用于管理在Google App Engine
8、上运行的应用程序 Google应用程序引擎 Google App Engine简介应用程序环境 Google App Engine服务 Google App Engine编程实践 图像操作API1)Image类来自于google.appengine.api.images模块,该类可以用来封装图像信息及转换该图像;实例方法:(1)resize(width=0, height=0):该方法用来缩放图像(2)crop(left_x, top_y, right_x, bottom_y):该方法可以将图像裁剪到指定边界框的大小,并且裁剪后以相同的格式返回转换的图像(3)rotate(image_data
9、, degrees, output_encoding=images.PNG):该方法是用来旋转图像(4)horizontal_flip(image_data, output_encoding=images.PNG):该函数表示对图像进行水平翻转。(5)vertical_flip(image_data, output_encoding=images.PNG):该函数表示垂直地翻转图像,并且转换后的图像与以前的格式一样 2)exception类google.appengine.api.images 包为用户主要提供以下exception类:(1)exception Error():这是该包中所有异
10、常的基类(2)exception TransformationError():表示尝试转换图像时发生错误(3)exception BadRequestError():表示转换参数无效 邮件API 邮件API为用户提供两种方式来发送电子邮件:mail.send_mail()函数和EmailMessage类 1)允许的附件类型图像格式;文本格式;应用程序格式 2)EmailMessage(1)构造函数 (2)实例方法 (3)函数 (a)is_email_valid(email_address) (b)send_mail(sender, to, subject, body, *kw)(4)异常 (a
11、)exception Error() (b)exception BadRequestError() (c)exception InvalidEmailError() Memcache API Memcache API提供了一个基于类的接口,以便和其他Memcache API相兼容 1)构造函数class Client()产生与Memcache服务通信的客户端2)实例方法(1)set(key, value, time=0, min_compress_len=0) (2)get(key) (3)delete(key, seconds=0) (4)add(key, value, time=0, mi
12、n_compress_len=0) (5)replace(key, value, time=0, min_compress_len=0) (6)incr(key, delta=1) (7)decr(key, delta=1) (8)flush_all() (9)get_stats() 用户API 1)User对象2)登录网址3)User类(1)构造函数 (2)实例方法(a)nickname() (b)email()(3)函数(a)create_login_url(dest_url) (b)create_logout_url(dest_url) (c)get_current_user()(4)异
13、常(a)exceptionError() (b)exceptionUserNotFoundError() (c)exception RedirectTooLongError() 数据库API 1)Model类(1)类方法(a)Model.get(keys) (b)Model.all() (c)Model.gql(query_string, *args, *kwds) (2)实例方法 (a)key() (b)put() (c)delete() 2)Property类(1)类构造函数(2)类属性(3)实例方法 (a)default_value() (b)validate(value) (c)emp
14、ty(value) 数据库API 3)Query类(1)构造函数(2)实例方法 (a)filter(property_operator, value) (b)order(property) (c)ancestor(ancestor) (d)get() (e)fetch(limit, offset=0) (f)count(limit)4)GqlQuery类(1)构造函数(2)实例方法 (a)bind(*args, *kwds) (b)get() (c)fetch(limit, offset=0) (d)count(limit) 数据库API 5)Key类(1)构造函数(2)类方法(3)实例方法(
15、a)app() (b)kind() (c)id() (d)name()(4)函数 (a)get(keys) (b)put(models) (c)delete(models) (d)run_in_transaction(function, *args, *kwargs) Google应用程序引擎 Google App Engine简介应用程序环境 Google App Engine服务 Google App Engine编程实践 相比其他Web主机服务,Google App Engine有下列独到之处:(1)将Web应用部署到Google的基础设施之上(2)提供数据存储服务(3)集成了Gmail
16、、Google User认证、URL Fetch、Memcache和图片操作(PIL)等多种API(4)Google App Engine提供存储空间为500M,每月500万页面访问的免费服务,超出部分需要支付相应费用 JavaJava在在Google App EngineGoogle App Engine上怎么实现个人空间日志管理功能?上怎么实现个人空间日志管理功能? 1 1搭建开发平台搭建开发平台(1)下载JDK1.6安装并配置好环境变量(2)下载eclipse3.6安装包,解压(3)下载Google Plugin for Eclipse3.6,解压后将插件包中feature下的文件复制到
17、 eclipse的feature目录下,将插件包中plugin下的文件复制到eclipse的plugin目录下(也可以通过建立link文件来安装插件)(4)下载appengine-java-sdk,在eclipse中依次点击WindowPreferenceGoogleApp EngineAdd,添加sdk根目录 添加添加appengineappengine java java sdksdk环境环境2.2.创建工程并测试创建工程并测试创建一个新的Web Application新建名为新建名为zqspacezqspace的项目,包名的项目,包名为为cn.edu.xtucn.edu.xtu,项目目录
18、结构,项目目录结构如图示如图示web应用部署到Google App Engine 3.3.开发个人空间开发个人空间zqspacezqspace1)需求分析2)数据模型设计3)页面设计 (a)首页 (b)日志列表页面 (c)写日志的界面 4) 实体类编码5)业务逻辑编码6)读取日志7)删除日志8)写日志9)修改日志10)权限管理字 段 名描 述类 型id主键(自增)Longauthor作者Usertitle标题Stringcontent内容Stringtag标签Stringdate更新时间Date4 4项目部署项目部署编码完成后,先在编码完成后,先在本地测试,通过后,本地测试,通过后,就可以将项
19、目发布就可以将项目发布到到Google App Google App EngineEngine上上 1Google云计算技术包括哪些内容?2当前主流分布式文件系统有哪些?各有什么优缺点?3GFS采用了哪些容错措施来确保整个系统的可靠性?4MapReduce与传统的分布式程序设计相比有何优点?5Chubby的设计目标是什么?Paxos算法在Chubby中起什么作用?6阐述Bigtable的数据模型和系统架构。7分布式存储系统Megastore的核心技术是什么?8大规模分布式系统的监控基础架构Dapper关键技术是什么?9Google App Engine提供了哪些服务?10Google App
20、Engine的沙盒对开发人员进行哪些限制?习题阅读精选1 1 The Google File SystemThe Google File Systemhttp:/www.cs.brown.edu/courses/cs295-11/2006/gfs.pdfhttp:/www.cs.brown.edu/courses/cs295-11/2006/gfs.pdf2 2 MapReduceMapReduce: : SimpliedSimplied Data Processing on Large Data Processing on Large ClustershttpClustershttphttp
21、:/www.cs.toronto.edu/demke/2227S.12/Papers/mapreduce-osdi04.pdfhttp:/www.cs.toronto.edu/demke/2227S.12/Papers/mapreduce-osdi04.pdf33 The Chubby lock service for loosely-coupled distributed systemsThe Chubby lock service for loosely-coupled distributed systemshttp:/ BigtableBigtable: A Distributed St
22、orage System for Structured Data: A Distributed Storage System for Structured Datahttp:/static.usenix.org/event/osdi06/tech/chang/chang_html/http:/static.usenix.org/event/osdi06/tech/chang/chang_html/55 Megastore: Providing Scalable, Highly Available Storage for Megastore: Providing Scalable, Highly
23、 Available Storage for Interactive ServicesInteractive Serviceshttp:/www.cidrdb.org/cidr2011/Papers/CIDR11_Paper32.pdfhttp:/www.cidrdb.org/cidr2011/Papers/CIDR11_Paper32.pdf66 Dapper, a Large-Scale Distributed Systems Tracing InfrastructureDapper, a Large-Scale Distributed Systems Tracing Infrastructurehttp:/ Google app EngineGoogle app Engine专区专区http:/