新書推薦:
《
传播的跃迁:人工智能如何革新人类的交流
》
售價:HK$
110.9
《
纯粹·古代中国的历史与制度
》
售價:HK$
62.7
《
生活来来往往 别等来日方长 新版(伍佰:“讲好了这一辈子,再度重相逢。”别等,别遗憾!珍惜当下才是最好的解药)
》
售價:HK$
58.2
《
一个英国军事顾问眼中的二战
》
售價:HK$
277.8
《
就业、利息和货币通论(徐毓枬译本)(经济学名著译丛)
》
售價:HK$
67.2
《
瘦肝
》
售價:HK$
99.7
《
股票大作手回忆录
》
售價:HK$
55.8
《
秩序四千年:人类如何运用法律缔造文明(世界重归混乱,文明岌岌可危,法律与秩序是我们仅有的武器。穿越时间,鸟瞰全球,一部波澜壮阔的人类文明史)
》
售價:HK$
154.6
編輯推薦:
本书介绍了如何使用Google App Engine在云中构建高度可扩展的Python应用程序。
內容簡介:
产品特色本书介绍了中高级Web和移动App的开发者如何使用Google App Engine在云中构建高度可扩展的Python应用程序。App Engine是Google云平台的旗舰产品,它可以在基础架构上托管你的应用程序,并随流量自动增长,*限度地降低前期成本,并吸引意料之外的访客。你将学习如何使用App Engine服务和开发工具执行常见的开发任务,包括部署和维护。App Engine的Python支持包括一个快速的Python 2.7解释器、标准库和基于WSGI的运行时环境。这些组件为许多流行的Web应用程序框架所用,包括Django和Flask。主要内容?通过一个示例应用程序来指引你亲自动手实践App Engine相关的工具和功能。?在开发机器上使用Google Cloud SDK中的工具模拟App Engine。?将应用程序结构化为可单独寻址的模块,每个模块都有自己的可扩展配置。?利用可扩展的Cloud Datastore的强大功能,进行查询、事务和使用ndb库进行数据建模。?在App Engine应用程序中,将 Cloud SQL用于标准关系数据库。学习如何在 Google 基础架构上部署、管理和监测应用程序。
關於作者:
Dan Sanderson是Google的一名软件工程师。他以工程师和技术作者的身份在互联网行业为Google,Amazon和Walt Disney Internet Group工作了超过15年。他住在华盛顿西雅图。关于作者的更多信息,请查看他的个人网站http:www.dansanderson.com。
目錄 :
前言
第1章 Google App Engine简介
运行时环境
静态文件服务器
前端缓存
云数据存储
实体与属性
查询和索引
事务
服务
Google帐户,OpenID和OAuth
Google云端点
任务队列和定时任务
命名空间
开发者工具
云控制台
开始开发应用程序
第2章 创建应用程序
设置Cloud SDK
安装Python
安装Cloud SDK
使用cloud sDK进行身份认证
安装App Engine SDK
开发应用程序
用户偏好模式
简单的应用程序
Webapp框架概述
模板、用户和Google Accounts
使用Python的虚拟环境
数据存储模型和Web表单
开发服务器控制台
用内存缓存进行缓存
Python交互式控制台
注册应用程序
上传应用程序
测试应用程序
启用计费功能
第3章 配置应用程序
App Engine架构
配置Python应用程序
运行时版本
应用程序ID和版本
多线程
请求处理程序
静态文件和源文件
MIME类型
缓存过期
域名
Google Apps
配置安全连接
与自定义域的安全连接
对Google Accounts认证
环境变量
入站服务
自定义错误响应
……
第4章 请求处理程序和实例
第5章 使用模块
第6章 数据存储实体
第7章 数据存储区查询
第8章 数据存储事物
第9章 ndb数据建模
第10章 数据存储管理
第11章 App Engine上使用
第12章 内存缓存
第13章 Fetch URL和网络资源
第14章 发送和接收Email
第15章 使用XMPP发送和接收即时消息
第16章 任务队列以及调度任务
第17章 服务调用优化
第18章 Django Web应用框架
第19章 管理请求日志
第20章 部署和管理应用
內容試閱 :
前言在互联网中,传播是迅速而短暂的。一个热门的新闻网站提到你的网站,立即可以给你带来300000个潜在客户,他们都希望了解你是谁以及你能够提供什么。但是,如果你只是一家刚起步的小公司,你的软硬件不太可能有能力处理这种流量。你明智地建立你的网站,来处理在你的前六个月里真正期望的每小时3万次的访问。在高负载下,该系统甚至无法将公司的logo展示给其他270000个用户。而在访问流量减弱后,这些潜在的客户不太可能再回来访问网站了。解决这个问题的关键并不是在第一天就花费时间和金钱去建立能服务上百万的访问者的系统,因为该系统在随后的几个月里每天仅仅服务几千人。如果不及时开发一个大系统时,你会错过顾客的反馈来改善你的产品的机会。早期开发大系统的风险就是,开发了一些客户不想要的功能。从历史上看,小公司从来不会在第一天就访问大的服务器。它们的最佳选择是建立小的系统,并且当它们成长的时候,系统的停用不会损害公司的名誉。幸运的公司能找到融资者,得到了新一轮的投资,并停止新功能开发来重建更大容量的产品。然而,有些公司并不是这么幸运。现在,公司又有了其他的选择。大型互联网公司(例如亚马逊,Google和微软)会通过采用按次付费的模式来租赁部分大容量系统。公司网站的服务来自于这些有足够的能力处理突发流量的大型系统,且运行非常成功。由于你只要为你所使用的资源付费,所以在流量低的时候就不会有前期投资的浪费。随着用户的增长,成本也会成比例增长。Google提供的系统统称为Google Cloud Platform,由一组高性能的服务和工具构成,包括各种规模的虚拟机,多种形式的可靠数据存储,可配置的网络,自动缩放架构,甚至是运行Google产品的大数据分析工具。但Google Cloud Platform(谷歌云平台)不仅仅提供Google架构的接入。它封装了应用架构的最好的实际应用,Google的工程师已经在自己的产品中反复使用过这些应用架构。Google Cloud Platform的核心是Google App Engine,它是一个自动增长的应用托管服务。App Engine运行应用程序使每个访问的用户都可以得到和其他每个用户相同的体验,无论同时存在的用户是几十还是几千。应用程序代码只关注用户个人体验。App Engine负责大规模计算任务,例如负载平衡、数据复制和容错处理。在传统的系统第一个数据库服务器过度增长时,可扩展的模型发挥了重要的作用。使用此系统,添加负载平衡的Web服务器和高速缓存层可以让应用程序更健壮,但是当你的应用程序需要在不止一个地方写数据的时候,你就面临着难题。当应用开发到依赖数据库软件的功能的阶段,且数据库软件不打算在多台机器上分布数据时,问题更严重。如果事先根据云平台(Cloud Platform)模型考虑数据,你可免于重建整个系统了。经常被忽视的一个优点是,App Engine的执行模型有助于分布计算以及数据。App Engine擅长于将计算资源快速地分配成小任务。这种方式最初设计是用于优先响应客户的情况下来处理用户的网络请求。将此执行模型与Cloud Platform的任务队列服务相结合,中等至大的计算任务就可以被分解成并行执行的块。如果任务执行失败,系统会不断地重新尝试执行这些任务,直到成功为止,这使得任务弹性面对服务失败。这种执行模型使得设计者积极优化平台的并行性和强壮性。在Google的框架上运行意味着不需要搭建服务器,更换有问题的硬盘,或解决网卡。你不必在半夜因为一个ISP的小问题发出的警报而被警报器叫醒。使用自动扩展,你也不必因为流量的增加而添加新的硬件。Google Cloud Platform和App Engine让你专注于应用程序的功能和用户体验。使用云平台,你可以更早地推出系统,得到大量的关注,留住用户,并在用户的帮助下开始改善产品。应用程序的规模与用户规模增长到与谷歌级别成一定比例时,不必重建一个新的系统架构。与此同时,你的竞争对手仍然在绞尽脑汁地补救程序和配置数据库中。在本书的帮助下,你将学会如何在Google Cloud Platform上开发Web应用程序,以及如何充分利用App Engine的可扩展的执行模型。本书的主要部分讨论谷歌的云数据存储(Google Cloud Datastore),它是一个强大的数据存储服务,与过去数十年在网络开发中占主导地位的关系型数据库有所区别。应用程序模型和数据存储的结合代表了对于Web应用程序的新的思维方式,尽管几乎和熟知的模型一样简单,但仍旧需要重新思考我们之前忽略的一些原理。App Engine的简史如果你读到这里,可能会好奇为什么本书被称为Google App Engine编程,而不是Google Cloud Platform编程。简要的回答是,整个云平台的功能对于一本书来说太广泛了。特别是,计算引擎平台原始虚拟机能力,可以完成各种各样的功能,而不仅是服务于Web应用程序。根据若干统计(至少是我的),App Engine开始是作为一个早期的云平台理念,后来发展到包括大型且可弹性的计算。当它于2008年第一次推出的时候,App Engine托管Python编写的Web应用程序,它具有可扩展的数据存储、任务队列服务和应用程序代码的API,这些API将在运行应用代码(如网络访问)的“容器”之外。Java“运行时环境”紧随其后,使用相同的可扩展的框架运行基于Java Servlet的Web应用程序。容器化的程序代码、无模式数据存储和面向服务的架构,证明它不仅是一种建立可扩展Web应用程序很好的方式,还是使App Engine产品可靠的一个关键部分(不会再报假警)。App Engine不断发展,在功能方面有几个主要的里程碑。第一个里程碑是数据存储的大升级,采用了一种新的基于Paxos的复制算法。新算法改变了API保证数据一致性的方式,因此它被作为一个选择迁移(包括自动迁移工具)发布。另一个重要的里程碑是由CPU使用计费的独立请求,转变为通过实例的运行时间计费的长期运行的应用程序实例。使用升级的执行模型,应用程序代码可以推动准备工作发生在用户的请求逻辑之外,并且利用本地存储高速缓存。Google将计算引擎作为一个单独的产品,是为了通用目的按需访问计算的方式。使用计算引擎虚拟机(Compute Engine VM),你就可以运行任何64位基于Linux的操作系统,并将任何语言编写的执行代码编译(或解释)到该操作系统。应用程序是否在App Engine上运行,都能调用计算引擎(Compute Engine)启动任何数量的虚拟机,完成任务,并且不再需要时关闭机器,或按传统的或自定义配置里让它们运行。App Engine和Compute Engine采取不同的方法来提供不同的功能。但这些技术已经开始融合。2014年年初,Google宣布托管虚拟机(Managed VMs),以一种类似于App Engine方法的新方式来运行基于VM的代码(当我写这本书的时候这个功能不是完全可用的,但可以检查Google Cloud Platform网站的更新)。总之,你可以尽可能多地采用你需要的平台来实现你的目标,在必要的时候弹性投资,并且让平台自动处理其他的事情。本书是在App Engine的历史转折点完成的。App Engine最初构建的服务正在被推广到云平台,并给出了REST API,所以你也可以在平台外调用它们。App Engine开发工具正在增加,有一个新的Cloud SDK和Cloud Console。我们甚至看到用基于源代码的版本控制集成Git的新方法来开发和部署软件。正如任何一本关于不断发展的技术的书,下面是一个简介,重点放在主要概念和持久的主题。这本书的重点是使用App Engine创建Web应用程序和平台相关的部分,特别是云数据存储(Cloud Datastore)。我们将讨论当前App Engine专用的服务,如获取网址和发送Email。我们还将讨论如何使用任务队列和离线进程来组织和优化应用程序,以及充分利用Google App Engine。如何使用本书本书包括App Engine的Python编程语言的运行时环境。Python运行时环境为Python语言提供了一个快速的编译,并包含了所有App Engine功能的Python库。它与许多主要的开源Web应用框架兼容,如Django和Flask。App Engine支持三种其他的运行时环境:Java、PHP和Go。Java支持包括一个完整的Java Servlet环境,其中JVM能够运行Java和其他语言的编译器生成的字节码。PHP环境使用标准库运行一个原生PHP解释器且可以将其进行许多扩展,并能够运行许多现成的PHP应用程序,如WordPress和Drupal。使用Go运行时环境,App Engine在服务器上编译你的Go代码并以本地CPU速度执行它。本书中包含的信息原来是被包含在一本书中,即《Programming Google App Engine》,其中也包括Java。为了让读者更容易找到自己熟悉语言的相关信息,这本书分成特定语言的版本。你正在阅读的是Python版本。《Google App Engine编程(Java版)》包含相同的内容,并包括与Java相关的特定主题。我们将来可能写这本书的PHP版本和Go版本。目前,官方的App Engine文档是在平台上使用这些语言的最佳资源。如果你对这本书的PHP或Go版本有兴趣的话,可以发送电子邮件到bookquestions@oreilly.com。本书是结构化的,这样你可以跳转到自己最关心的主题。导论部分提供了一个铺垫,并且为你使用一些功能提供完整的示例。后续章节介绍了App Engine的各种功能,重点是高效的数据存储和恢复、通信和分布式计算。同时也涉及项目生命周期的相关主题,如部署和维护。云数据存储(Cloud Datastore)是一个非常大的主题,因此有多个章节介绍相关内容。从第6章开始,介绍了数据存储的概念和与这些概念相关的Python API数据库概念。Python实例使用Cloud SDK提供的n d b数据建模。数据建模有单独的章节(第9章)。下面是本书各章节的主要内容:第1章,Google App Engine简介Google App Engine及其组件、工具和主要功能的高级概述,以及Google Cloud Platform整体介绍。第2章,创建应用程序Python的入门教程,包括建立开发环境、使用模板引擎建立网页、设置帐户和域名,以及部署应用程序到App Engine的说明。应用教程演示了几个App Engine功能——谷歌帐户(Google Accounts)、数据存储和高速缓存,实现了许多Web应用程序常用的模式:存储和检索用户的偏好。第3章,配置应用程序描述App Engine如何处理接收的请求,以及如何配置此行为。这里介绍了App Engine的体系结构、前端的各种功能、应用程序服务器和静态文件服务器。该章介绍了前端如何把请求发送到应用程序服务器和静态文件服务器,以及管理安全连接和谷歌帐户的身份验证(Google Accounts)和授权。本章还讨论了配额和限制,以及如何通过设置预算来提升它们。第4章,请求处理程序和实例对App Engine如何运行代码进行更深入地检测。App Engine将接收的网络请求发送至请求处理程序。请求处理程序在容器中长期运行被称为实例。App Engine创建并销毁实例以适应用户流量的需求。用户可以通过编写线程安全代码和启用多线程功能更好地使用你的实例。第5章,使用模块模块的方式使得用户可以将自己的应用程序构建为部件的集合,其中每个部件都有它自己的扩展属性和性能特点。本章全面地介绍模块相关内容,包括各种缩放选项、配置、用户维护应用程序模块的工具和API。第6章,数据存储实体本书使用几章介绍云数据存储(Cloud Datastore),这是第一章。它是可扩展对象的数据存储系统,支持本地事务和一致性保证的两种模式(强模式和最终模式)。本章介绍了数据实体、键和属性,以及使用Python API从App Engine创建、更新和删除实体。第7章,数据存储查询本章介绍了云数据存储查询和索引,以及用于查询的Python API。本章详细介绍了查询引擎的功能,以及各功能如何使用索引。本章还讨论了如何定义和管理索引应用程序的查询。本章还涉及一些高级功能,如查询游标和投影查询。第8章,数据存储事务本章介绍如何使用事务保持数据的一致性。云数据存储在可扩展环境中使用本地事务。你的应用程序将采用事务性单元的形式布置其数据项称为实体组。本章试图提供一个关于数据库如何更新数据,以及如何设计你的数据和应用程序来更好地利用这些功能的完整解释。第9章,ndb数据建模如何在你的数据模式下使用Python ndb数据建模执行不变量。数据库本身是无模式的,这是它可扩展性的一个基本方面。你可以使用App Engine的数据建模接口来自动执行数据模式。第10章,数据存储管理管理和改进应用程序的数据存储数据。Cloud Console、SDK工具和管理API提供了无数种数据视图以及与有关数据(元数据和统计数据)的信息。你可以以编程方式访问这些信息,因此可以建立自己的管理面板。本章还讨论了如何使用远程应用程序接口(Remote API),即代理构建在本地计算机上运行的管理工具,但可以访问应用程序的线上服务。第11章,App Engine上使用Google Cloud SQLGoogle Cloud SQL对MySQL数据库实例进行全面管理。你可以将Cloud SQL作为App Engine应用的关系数据库使用。本章完整地介绍创建SQL实例、创建数据库、准备本地开发环境,并将App Engine连接到Cloud SQL。本章还讨论了Cloud SQL的突出特点,如备份、导出和导入数据。Cloud SQL补充了Cloud Datastore和Cloud Storage(云数据存储和云存储)作为持久性存储的新选择,特别是当你需要一个关系数据库时,Cloud SQL是一个高性能的选择。第12章,内存缓存App Engine的内存缓存服务(“memcache”)以及Python API。积极的缓存对于高性能Web应用来说是必不可少的。第13章,获取URL和网络资源如何通过使用URL获取服务经HTTP访问Internet上的其他资源。Python应用程序可以直接使用API以及通过Python的标准库来调用此服务。第14章,发送和接收Email消息如何使用App Engine服务发送Email。本章涉及通过使用请求处理程序接收由App Engine转发的Email。本章还讨论使用API中的工具创建并处理消息。第15章,使用XMPP发送和接收及时信息如何使用App Engine服务向XMPP兼容服务(例如,Google Talk)发送即时消息,以及如何通过请求处理程序接收XMPP消息。本章讨论了几个主要的XMPP活动,包括管理在线(Presence)。第16章,任务队列及任务调度如何使用任务队列执行用户请求之外的工作。任务队列通过在多个应用程序服务器上运行代码并行执行任务,也可以在不与用户交互的情况下以定期调度的方式执行任务。第17章,优化服务调用对优化技术的总结。此外,还包括异步服务调用相关的详细信息。如果使用异步服务调用,当服务在后台处理数据时,应用程序可以继续完成自己的工作。本章还描述了AppStats,它是一个可视化应用程序的服务调用行为并发现性能瓶颈的重要工具。第18章,Django Web应用框架如何在Python运行时环境下使用Django Web应用框架。本章讨论了在运行时环境中的Django库创建项目,以及使用Django功能(例如组件组合、URL映射、视图和模板)。它还探讨了如何使用一个比内置在运行时环境中的更新的Django版本。本章介绍了WTForms,它是一个网络表单框架,具有与App Engine的ndb数据建模库集成的特殊功能。第19章,管理请求日志所有你需要了解的日志信息、在Cloud Console上浏览和搜索日志数据,以及管理和下载日志数据相关全部信息。本章还介绍了Logs API,它是指应用程序本身以编程的方式来管理日志。第20章,部署和管理应用如何向App Engine上传并运行应用程序,如何使用应用程序版本更新和测试应用程序,以及如何管理和监测正在运行的应用程序。本章还介绍了Cloud Console的其他维护功能,包括计费。本章最后给出了一个网址列表,遇到问题可以到其中寻找帮助信息或者进一步深入阅读。Safari? Books OnlineSafari Books Online(http:safaribooksonline.com)是应需而变的数字图书馆,它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。Safari Books Online是技术专家、软件开发人员、Web设计师、商务人士和创意人士开展调研、解决问题、学习和认证培训的第一手资料来源。Safari Books Online为企业(https:www.safaribooksonline.comenterprise)、政府部门(https:www.safaribooksonline.comgovernment)、教育机构(https:www. safaribooksonline.comacademic-public-library)和个人提供了多种套餐和价格(https:www.safaribooksonline.compricing)。订阅者可以在一个完全可搜索的全文数据库中访问上千种图书、培训视频和正式出版之前的书稿。这些内容由以下出版社提供:O ’ R e i l l y M e d i a 、 Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、 Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、 Morgan Kauf-mann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、 Manning、New Riders、McGraw-Hill、Jones & Bartlett、CourseTechnology等(https:www.safaribooksonline.comour-library)。关于Safari Books On-line的更多信息,请访问我们的网站(http:www.safaribooksonline.com)。联系方式请把你对本书的意见和疑问发给出版社:美国:O’Reilly Media, Inc.1005 Gravenstein Highway North Sebastopol, CA 95472中国:北京市西城区西直门南大街2号成铭大厦C座807室(100035)奥莱利技术咨询(北京)有限公司我们已为本书提供主页,其中提供勘误表、示例及其他相关信息。读者可以通过http:bit.lygoogle-app-python访问本书的主页。读者可以从作者的网站http:www.dansanderson.comappengine下载大量的示例代码和其他信息。评论本书或者询问相关的技术问题,可以将Email发送至bookquestions@oreilly.com。欲得到我们的书、课程、会议和新闻相关的信息,可参见我们的网站:http:www.oreilly.com http:www.oreilly.com.cn我们的Facebook地址:http:facebook.comoreilly我们的Twitter地址:http:twitter.comoreillymedia我们的YouTube地址:http:www.youtube.comoreillymedia致谢我很感激App Engine团队,自2008成立以来他们对本书的不断支持。App Engine的贡献者越来越多,在这里我无法一一列出,但我很感谢他们的想象力、创造力和工作,以及感谢他们让我成为其中的一员。本书是源于《Programming Google App Engine》一书,这本书是在 Paul McDonald 和 Pete Koomen的指导下完成的。Ryan Barrett 花了很长时间讨论本书,并且提供了具体的技术细节。Max Ross和Rafe Kaplan提供了相关的材料,并且广泛审查了数据存储相关的章节。感谢Matthew Blain、Michael Davidson、Alex Gaysinsky、Peter McKenzie、Don Schwarz和Jeffrey Scudder,他们仔细地浏览了第一版,我还要感谢Sean Lynch、Brett Slatkin、Mike Repass和Guido van Rossum的支持。对于第二版,我想感谢 Peter Magnusson、Greg D’alesandre、Tom Van Waardhuizen、 Mike Aizatsky、Wesley Chun、Johan Euphrosine、Alfred Fuller、Andrew Gerrand、 Sebastian Kreft、MoisheLettvin、John Mulhausen、Robert Schuppenies、David Symonds和Eric Willigers。将原书分成两本书需要付出大量的精力。感谢Mike Fotinaki审查了Python版本,Amy Unruh和Mark Combellack审查了 Java 版本。我还要感谢Sahala Swenson、Steven Hines、David McLaughlin、Mike Winton、 Andres Ferrate、Dan Morrill、Mark Pilgrim、Steffi Wu、Karen Wickre、Jane Penner、 Jon Murchinson、Tom Stocky、Vic Gundotra、Bill Coughran和Alan Eustace。感谢O’Reilly公司的Michael Loukides、Meghan Blanchette和Brian Anderson给予我这次机会,并帮助我通读本书超过3遍。我把本书献给Google网站的可靠性工程师们,是他们让本书得以出版。我会一直对他们心存感激。