新書推薦:
《
李白传(20世纪文史学家李长之经典传记)
》
售價:HK$
45.8
《
津轻:日本无赖派文学代表太宰治自传性随笔集
》
售價:HK$
66.7
《
河流之齿
》
售價:HK$
59.8
《
新经济史革命:计量学派与新制度学派
》
售價:HK$
89.7
《
盗墓笔记之秦岭神树4
》
售價:HK$
57.3
《
战胜人格障碍
》
售價:HK$
66.7
《
逃不开的科技创新战争
》
售價:HK$
103.3
《
漫画三国一百年
》
售價:HK$
55.2
|
編輯推薦: |
适读人群 :《Google App Engine编程(Java版)》广大读者
全面介绍使用Google App Engine在云中创建具有高可扩展性的Java应用程序。 本书可以引导中、高级网络和移动应用程序开发人员如何使用Google App Engine在云中创建具有高可扩展性的Java应用程序。App Engine作为Google云平台旗舰产品,可以控制基础设施之上的应用程序,这些应用程序可以随着流量的增加而自动增长、尽量减少成本并且适应不可预期的访问。你可以亲自动手实践如何使用App Engine服务和开发工具执行通用开发任务,包括部署和维护。
|
內容簡介: |
《Google App Engine编程(Java版)》对于Java应用程序来说,App Engine提供具有完整Java JVM和标准库的J2EE 标准servlet容器。因为App Engine支持通用Java API标准,代码能够保持干净和简洁。
的示例性应用程序可以指引你亲自动手实践App Engine相关的工具和功能。直接在自己的开发用机器上的Eclipse中模拟App Engine。确定应用程序的结构,使得能够用独立的地址访问其中的模块,每个模块均有自己的可扩展配置。使用JPA实现查询、事务和数据建模,从而探索可扩展Cloud Datastore的强大功能。在App Engine应用程序中,将 Cloud SQL用于标准关系数据库。学习如何在Google基础设施上部署、管理和监测应用程序。 对于Java应用程序来说,App Engine提供具有完整Java JVM和标准库的J2EE 标准servlet容器。因为App Engine支持通用Java API标准,代码能够保持干净和简洁。
n本书的示例性应用程序可以指引你亲自动手实践App Engine相关的工具和功能。
n直接在自己的开发用机器上的Eclipse中模拟App Engine。
n确定应用程序的结构,使得能够用独立的地址访问其中的模块,每个模块均有自己的可扩展配置。
n使用JPA实现查询、事务和数据建模,从而探索可扩展Cloud Datastore的强大功能。
n在App Engine应用程序中,将 Cloud SQL用于标准关系数据库。
n学习如何在Google基础设施上部署、管理和监测应用程序。
|
關於作者: |
Dan Sanderson,是Google公司的软件工程师。他已在互联网行业工作了15年,曾经是Google和Walt Disney Internet Group的软件工程师和技术文档工程师。
|
目錄:
|
前言 1
第1章谷歌App引擎简介 11
运行时环境12
静态文件服务器 14
前端高速缓存14
云数据存储15
服务18
谷歌账户、OpenID和OAuth20
谷歌云端点(Google Cloud Endpoint) 21
任务队列和时钟守护作业(Cron Job) 21
命名空间22
开发工具23
云控制台24
开始应用程序开发 24
第2章创建应用程序26
创建云SDK26
开发应用程序33
注册应用程序54
上传应用程序55
测试应用程序56
实现计费功能58
第3章配置应用程序59
应用程序引擎结构 60
配置Java应用程序 62
应用程序的ID和版本64
多线程 66
请求处理器66
静态文件和资源文件67
域名70
谷歌应用程序72
配置安全连接75
与定制域的安全连接76
对谷歌账户认证 79
环境变量80
入站服务80
定制错误响应81
Java服务器端小程序会话82
第4章请求处理器和实例85
运行时环境86
请求处理器抽象 93
引入实例96
请求计划和等待延迟98
预热请求99
常驻实例 100
实例类与应用101
实例小时和计费102
实例控制台面板103
流量分割 104
第5章使用模块 105
实例布局 106
配置模块 107
手动扩展和基本扩展 113
启动请求 114
关闭钩子 115
后台线程 116
模块和开发服务器117
部署模块 118
使用URL定位模块 119
将请求分派给模块122
启动和停止模块123
管理和删除模块和版本124
模块API125
始终运行的实例126
第6章数据存储实体 130
实体、键和属性131
Java Datastore API 简介133
属性值135
键和键对象 139
实体的使用 141
分配系统ID144
开发服务器和数据存储145
第7章数据存储查询 146
查询和类型 147
查询结果和键147
查询API148
索引简介 153
自动索引和简单查询 155
定制索引和复杂查询 161
不相等和IN过滤器 167
未设置的属性和未索引的属性 169
排序顺序和值的类型 170
查询和多值属性171
查询游标 179
投影查询 182
配置索引 185
第8章数据存储事务 187
实体和实体组189
事务的具体执行过程 193
Java中的事务 195
如何更新实体199
如何读取实体201
批量更新 202
如何更新索引203
跨实体组的事务204
第9章数据存储管理 206
监测数据存储206
管理索引 208
从应用程序访问元数据210
远程控制 215
第10章 Java持久化API219
创建JPA220
实体和键 221
实体属性 224
嵌入对象 225
存储、获取和删除对象226
JPA 中的事务 228
查询和JPQL229
关系232
如何获取更多信息237
第11章在App Engine中使用Google Cloud SQL 238
选择Cloud SQL实例239
本地安装MySQL 240
创建Cloud SQL实例241
从自己的计算机连接至实例242
创建数据库 244
创建JDBC246
从App Engine连接至数据库247
备份和恢复 254
导出和导入数据254
gcloud sql命令 255
第12章存储高速缓存258
使用Java调用存储高速缓存260
键和值261
设置值261
获取值263
删除键263
原子增加和减少263
比较并设置 264
对存储高速缓存服务的批调用265
存储高速缓存和数据存储267
处理高速缓存错误267
存储高速缓存管理268
第13章获取URL和网络资源271获取
URL272
出去的HTTP请求275
SSL上的HTTP(HTTPS) 277
请求和响应长度277
请求期限 278
处理重定向 278
响应对象 279
第14章发送和接收Email消息280
发送Email消息 281
接收Email消息 288
第15章使用XMPP发送和接收即时消息 291
邀请用户聊天293
发送聊天信息294
接收聊天消息296
处理错误消息298
管理所处的状态299
第16章任务队列和被调度的任务307
配置任务队列310
使任务入队 311
任务参数 313
入队队列 316
出队队列 321
采用事务方式将任务入队324
任务链327
任务队列管理332
延后执行工作332
计划任务 333
第17章优化服务调用337
异步调用服务338
使用AppStats进行可视化调用342
第18章管理请求日志349
记录日志 350
查看最近的日志352
|
內容試閱:
|
应用程序的方式,虽然网络应用程序如我们熟知的模式一样简单,但我们需要重新思考之前忽略的一些原理。
App引擎简史
如果读完本书,你可能想知道为什么书名为《Google App Engine 编程》,而不是《谷歌云平台编程》。简要地回答就是,作为一个整体,云平台的能力对于一本书来说太宽泛。具体地讲,计算引擎、平台原始虚拟机能力不仅只服务于网络应用程序,而且可以完成各种各样的功能。
通过一些账户(至少包括我的账户),App引擎开始的时候只是实现云平台思想,并且进而演化和扩展为包括大规模和可弹性规模计算。当它2008 年第一次运行时,App引擎使用可扩展数据存储、任务队列服务和公共特征服务的API,托管使用Python语言编写的网络程序,这些API位于App代码运行(例如,访问网络)于其中的容器之外。接着,Java运行时环境能够使用相同的可扩展基础设施基于Java服务器端小程序运行网络应用程序。容器化的应用代码、无模式数据存储以及面向服务的架构证明其不仅为创建可扩展网络应用程序很好的方式,而且是使可靠性为App引擎产品关键部分的好的方式(不会再报假警了)。
App引擎不断进步,从功能上来说具有几个主要的里程碑。第一个主要的里程碑是数据存储的大升级,其使用新的基于Paxos的复制算法。新算法改变API保证数据一致性的方式,使得将其作为选择进入迁移(包括自动迁移工具)进行发布。另外一个重要里程碑是由通过CPU使用计费的独立请求转换成通过实例正常运行时间计费的长期运行应用实例。使用这种升级的执行模式,App代码可以将准备工作推送到用户请求逻辑之外执行,并且利用本地存储高速缓存。
谷歌将计算引擎(Compute Engine )作为独立的产品运行,这是为了通用目的按需访问计算的方式。使用计算引擎VM,可以运行任何64位基于Linux 的操作系统,并且可以将任何语言编写的执行代码编译到此操作系统,或者由此操作系统进行解释。App(无论是在App引擎上运行的或采用其他方式运行的App)可以让计算引擎启动任意数量的虚拟机、完成任务,并且在不再需要时关闭机器或采用传统配置或定制配置让它们运行。
App引擎和计算引擎采用不同的方法提供不同的功能。但是这些技术已经开始融合。在2014 年年初,谷歌公布托管虚拟机(Managed VM ),这是一种采用类似App 引擎方式运行基于VM代码的新方式(写本书时,此特征还不是完全可用,但可以检查谷歌云平台网站的更新)。总之,可以采用你所需要数量的平台来实现目标,需要的时候可以采用弹性投资的方式,并且让平台自动地处理其他的事情。
本书是在App引擎历史的转折点完成的。原来为App引擎创建的服务正被推广至云平台,并给出REST API ,使得也可以从平台之外调用它们。使用新的通用云SDK和云控制台扩展App引擎开发工具。我甚至看到已开始使用新方式来开发并部署软件,即使用基于集成Git源代码版本控制的方式。已经有很多与技术进步相关的书籍,下面仅是一个概貌,主要强调主要概念和长期持续的主题。
本书主要关注使用App引擎创建网络应用程序以及与平台(尤其与云数据存储)相关的部分。我们将讨论当前App引擎独有的服务,例如获取URL及发送电子邮件的服务。我们还会讨论使用任务队列和离线进程组织和优化应用程序的技术,以及其他从谷歌App 引擎获得最多的技术。
如何使用本书
本书关注App引擎的Java 运行时环境。Java 运行时包括完整的Java 7 JVM ,它能够运行Java编译器产生的字节码,以及由以JVM 为目标的其他语言的编译器产生的字节码。App引擎是J2EE 标准的服务器端小程序容器,并且包括用于Java网络开发的标准库和特征。你甚至可以将App部署为WAR 文件。
App引擎支持3种其他运行时环境:Python、PHP和Go。Python环境为Python编程语言提供快速的解释器,并且与许多Python开放源网络应用程序框架兼容。PHP环境使用标准库运行原生PHP解释器并且可以将其进行许多扩展,并且能够运行许多现有的PHP应用程序,诸如WordPress 和Drup 。使用Go 运行时环境,App 引擎编译服务器上的Go 代码,并且以CPU本来的速度执行这些代码。
原本打算在一本书中包含全部相关信息(其中也包括Python)。为了让读者更容易找到自己熟悉语言相关的信息,将此书分成具体语言的版本。本书是Java版的。《Google App Engine 编程(python版)》包括相同的内容,但其使用Python语言,并包括与Python相关的具体主题。
将来有可能写本书的PHP版本和Go版本。但是现在,官方的App引擎文档是在平台上使用这些语言最好的资源。如果你对本书的PHP版和Go版感兴趣,可以将邮件发送至bookquestions@oreilly.com 。
本书的组织方式便于读者跳至自己最关心的主题进行阅读。第2章创建应用程序介绍了一个应用程序的布局,此实例使用了多个特征,读者可以从这个完整的实例开始学习。接下来的章节介绍了App引擎的各种特征,主要关注有效的数据存储和恢复、通信和分布式计算。此外,还涉及项目生命周期相关的主题,例如项目的发布和维护。
云数据存储是一个非常大的主题,因此使用多个章节介绍相关内容。从第6章开始,介绍了数据存储概念及与这些概念相关的Java API 。本书还使用一章介绍了可以和云数据存储一起使用的JPA 、标准接口以及可能访问数据存储器和对数据对象建模的层(第10 章)。
下面是本书各章节的主要内容:
第1章谷歌App引擎简介对在高层次上对谷歌App引擎及其组件、工具和主要特征进行了概述,并且从整体上介绍了谷歌云平台。
第2章创建应用程序本章为使用Java 语言的简要教程,介绍了创建开发环境、使用模板引擎创建网页、创建账号和域名以及在App 引擎上部署应用程序。教程中的应用程序展示了数个App 引擎特征的使用谷歌账号(Google Accounts )、数据存储和高速缓存,实现了许多网络应用程序共用的模式:存储和恢复用户首选项。
第3章配置应用程序本章描述了App 引擎如何处理进来的请求,以及如何配置这些行为。本章介绍了App 引擎的架构、前端的各种特征、App服务器和静态文件服务器。本章说明了前端如何将请求路由至App服务器和静态文件服务器,以及如何管理安全连接和谷歌账号认证和授权。本章还讨论了配额和限制,以及如何通过设置预算来对其进行提升。
第4章请求处理器和实例本章介绍了更深入地检测App 引擎如何运行用户的代码。App 引擎将进入的网络请求路由至请求处理器。请求处理器长期运行被称为实例的容器。App引擎创建并销毁实例,以适应用户流量的需求。用户可以通过编写线程安全代码并利用多线程特征更好地利用自己的实例。用户可以将自己的App架构组织成模块,每个模块可以单独地将实例集中起来,其中每个实例运行自己的代码和配置。
第5章使用模块模块的方式使得用户可以将自己的应用程序创建成部件的集合,其中每个部件都具有自己的扩展属性和性能特征。本章全面介绍模块相关内容,包括各种扩展选项、配置以及用户用于维护自己App模块的工具和API。
第6章数据存储实体本书使用了好几章的篇幅介绍云数据存储,本章是第1章。所谓云数据存储是指可扩展对象数据存储系统,其支持本地事务和一致性保证的两种模式(强模式和最终模式)。本章介绍了数据项、键和属性,以及从App引擎创建、更新和删除数据项的Java API。
第7章数据存储查询本章介绍了云数据存储查询和索引,以及用于查询的Java API。本章详细描述了查询引擎的特征,以及每个特征如何使用索引。本章还讨论了如何为自己的应用程序查询定义和管理索引。本章还涉及一些高级特征,如查询游标和投影查询。
第8章数据存储事务本章介绍如何使用事务保持数据的一致性。云数据存储在可扩展环境中使用本地事务。用户App采用事务性单元的形式(被称为数据项群组)布置其数据项。本章全面地说明数据存储如何更新数据,以及如何设计用户数据和用户App才能更好地利用这些特征。
第9章数据存储管理本章介绍如何管理和发展用户App数据存储数据。云控制台、SDK工具体和管理API 为用户数据提供了无数种视图以及与用户数据相关的信息(元数据和统计信息)。用户可以编写程序访问这些信息中的绝大部分,因此用户可以创建自己的管理程序。本章还讨论了如何使用远程API,即创建管理工具的代理,它运行在本地计算机上,但可以访问用户App可用的服务。
第10章 Java持久化API 本章简要介绍Java持久化API(JPA ),如何将其概念转换成数据存储,如何使用它对数据模式建模,以及如何使用它让用户应用程序更易于与其他环境接口。JPA 是Java EE的标准接口。App引擎也支持被称为Java 数据对象(Java Data Objects,JDO)的其他标准的接口,但本书不介绍JDO的相关内容。本章还专门介绍了Java。
第11章在App Engine中使用Google Cloud SQL 谷歌云SQL对MySQL数据库实例进行全面管理。用户可以将云SQL作为App引擎应用程序的关系数据库使用。本章完整地介绍了创建SQL 实例、创建数据库、准备本地开发环境,并且从App引擎连接至云SQL。本章还讨论了云SQL的优秀特征(例如备份),以及导出和导入数据。云SQL 对云数据存储和云存储进行了补充,是持久性存储的新选择,特别是需要关系数据库的情况下,云SQL是一个高性能的选择。
第12章存储高速缓存本章介绍App引擎的存储高速缓存服务(存储高速缓存)以及其Java API 。积极高速缓存对于高性能网络应用程序是很重要的。
第13章获取URL和网络资源本章介绍如何通过使用URL获取(URL Fetch )服务经HTTP访问Internet上的其他资源。Java应用程序可以直接使用API以及通过Java标准库调用来调用这些服务。
第14章发送和接收Email消息本章介绍如何使用App引擎服务发送电子邮件。本章涉及通过使用请求处理器接收由App引擎中继的电子邮件。本章还讨论使用API中的工具创建并处理消息。
第15章使用XMPP发送和接收即时消息本章介绍如何使用App引擎服务向兼容XMPP的服务(例如,Google Talk )发送即时消息,以及如何通过请求处理器接收XMPP消息。本章讨论了多个主要的XMPP活动,包括管理表示(Presence)。
第16章任务队列和被调度的任务本章介绍如何通过使用任务队列执行用户请求之外的工作。任务队列通过在多个应用程序服务器上运行用户代码并行执行任务。也可以在不与用户交互的情况下按定期调度的方式执行任务。
第17章优化服务调用本章是对优化技术的总结。此外,还包括与运行异步服务调用相关的详细信息。如果使用异步服务调用,当服务在后台处理数据时,用户App可以继续完成自己的工作。本章还描述了AppStats,它是一种可视化用户App服务调用行为并查找性能瓶颈的重要工具。
第18章管理请求日志本章包括读者需要了解的与记录日志信息、在云控制台上浏览和搜索日志数据以及管理和下载日志数据相关全部信息。本章还介绍了日志API(Logs API ),用户可以用编程的方式在App内使用日志API管理日志。
第19章部署和管理应用程序本章介绍如何向App引擎上传用户App并在App引擎上运行用户App,如何使用App 版本更新并测试应用程序,以及如何管理和监测正在运行的应用程序。本章还介绍了云控制台的其他维护特征,包括计费。本章最后给出了一个网址列表,读者遇到问题可以到其中寻找帮助信息或者进一步深入阅读。
|
|