Python中文网

Python微服务开发

cnpython960

Python微服务开发这本书,是由清华大学出版社在2019-03-01月出版的,本书著作者是 [法] 塔里克·齐亚德(Tarek Ziadé) 著,此次本版是第1次印刷发行, 国际标准书号(ISBN):9787302524120,品牌为清华大学出版社(TSINGHUA UNIVERSITY PRESS), 这本书的包装是16开平装,所用纸张为胶版纸,全书共有284页字数35万8000字, 是一本非常不错的Python编程书籍。

此书内容摘要

使用Python工具生态系统降低微服务复杂性的实用方法

Web应用经常部署到云服务器,应用代码需要与诸多第三方服务交互。从理论上讲,可使用微服务架构来高效地构建此类应用,但在实际中,考虑到各部分间的交互难度,构建微服务架构并非易事。

《Python微服务开发》将指导你采用1佳的、成熟的构建方式,避开常见陷阱,克服问题,1终开发出多个较小的标准单元,将其组合成Web应用。本书紧贴实用,将指导你理解和运用TDD原则,使用Python 3及其卓越的工具生态系统来构建一切。

通过学习本书,你将遵循1佳策略,使用Flask和Tox等工具来构建服务,实现服务之间的安全连接,在nginx中编写Lua脚本来构建Web应用防火墙功能(如速率限制),熟悉Docker在微服务中扮演的角色,并用Docker容器和AWS来部署服务。

1终,你将开发出一个基于微服务的完整Python应用,并精通掌握构建、设计、测试和部署Python微服务的基本原理。


● 探讨微服务的含义和设计方式

● 合理使用Python 3、Flask和Tox等工具来构建服务

● 使用TDD方法

● 探讨编写微服务文档的方式

● 配置和打包代码的1佳方式

● 与其他服务交互的方式以及相关挑战

● 服务的安全性,以及服务的监控和扩展

● 用Docker容器和AWS部署服务

关于此书作者

Tarek Ziade,是一位Python 开发人员,在Mozilla的服务团队工作,已使用法语和英语撰写多本Python书籍。Tarek创建了一个名为Afpy的法国Python用户组,现居住在法国第戎市郊区。在工作之余,Tarek不忘陪伴家人。他另有两个爱好:跑步和吹小号。

可访问Tarek的个人博客(Fetchez le Python),并在Twitter上关注他(@tarek_ziade)。还可在亚马上找到他撰写的另一本书Expert Python Programming,该书已由Packt出版。

感谢Packt团队,以及帮助过我的以下技术精英:Stéfane Fermigier、William Kahn-Greene、Chris Kolosiwsky、Julien Vehent和Ryan Kelly。

感谢Amina、Milo、Suki和Freya给予我的爱和耐心支持。

希望在阅读时,你能享受到和我写本书时同样的乐趣!

编辑们的推荐

使用Python工具生态系统降低微服务复杂性的实用方法

Web应用经常部署到云服务器,应用代码需要与诸多第三方服务交互。从理论上讲,可使用微服务架构来高效地构建此类应用,但在实际中,考虑到各部分间的交互难度,构建微服务架构并非易事。

《Python微服务开发》将指导你采用1佳的、成熟的构建方式,避开常见陷阱,克服问题,1终开发出多个较小的标准单元,将其组合成Web应用。本书紧贴实用,将指导你理解和运用TDD原则,使用Python 3及其卓越的工具生态系统来构建一切。

通过学习本书,你将遵循1佳策略,使用Flask和Tox等工具来构建服务,实现服务之间的安全连接,在nginx中编写Lua脚本来构建Web应用防火墙功能(如速率限制),熟悉Docker在微服务中扮演的角色,并用Docker容器和AWS来部署服务。

1终,你将开发出一个基于微服务的完整Python应用,并精通掌握构建、设计、测试和部署Python微服务的基本原理。


● 探讨微服务的含义和设计方式

● 合理使用Python 3、Flask和Tox等工具来构建服务

● 使用TDD方法

● 探讨编写微服务文档的方式

● 配置和打包代码的1佳方式

● 与其他服务交互的方式以及相关挑战

● 服务的安全性,以及服务的监控和扩展

● 用Docker容器和AWS部署服务

Python微服务开发图书的目录

目 录
第 1 章 理解微服务 1
1.1 SOA的起源 2
1.2 单体架构 2
1.3 微服务架构 5
1.4 微服务的益处 7
1.4.1 分离团队的关注点 7
1.4.2 更小的项目 8
1.4.3 扩展和部署 8
1.5 微服务的缺陷 9
1.5.1 不合理的拆分 9
1.5.2 更多的网络交互 9
1.5.3 数据的存储和分享 10
1.5.4 兼容性问题 10
1.5.5 测试 10
1.6 使用Python实现微服务 11
1.6.1 WSGI标准 12
1.6.2 greenlet和gevent模块 13
1.6.3 Twisted和Tornado模块 15
1.6.4 asyncio模块 16
1.6.5 语言性能 18
1.7 本章小结 20
第 2 章 Flask框架 21
2.1 选择Python版本 22
2.2 Flask如何处理请求 23
2.2.1 路由匹配 26
2.2.2 请求 30
2.2.3 响应 32
2.3 Flask的内置特性 33
2.3.1 Session对象 34
2.3.2 全局值 34
2.3.3 信号 35
2.3.4 扩展和中间件 37
2.3.5 模板 38
2.3.6 配置 40
2.3.7 Blueprint 42
2.3.8 错误处理和调试 43
2.4 微服务应用的骨架 47
2.5 本章小结 49
第 3 章 良性循环:编码、测试和写文档 51
3.1 各种测试类型的差异 52
3.1.1 单元测试 53
3.1.2 功能测试 56
3.1.3 集成测试 58
3.1.4 负载测试 59
3.1.5 端到端测试 61
3.2 使用WebTest 62
3.3 使用pytest和Tox 64
3.4 开发者文档 67
3.5 持续集成 71
3.5.1 Travis-CI 72
3.5.2 ReadTheDocs 73
3.5.3 Coveralls 73
3.6 本章小结 75
第 4 章 设计Runnerly 77
4.1 Runnerly应用 77
4.2 单体设计 79
4.2.1 模型 80
4.2.2 视图与模板 80
4.2.3 后台任务 84
4.2.4 身份验证和授权 88
4.2.5 单体设计汇总 92
4.3 拆分单体 93
4.4 数据服务 94
4.5 使用Open API 2.0 95
4.6 进一步拆分 97
4.7 本章小结 98
第 5 章 与其他服务交互 101
5.1 同步调用 102
5.1.1 在Flask应用中使用Session 103
5.1.2 连接池 107
5.1.3 HTTP缓存头 108
5.1.4 改进数据传输 111
5.1.5 同步总结 115
5.2 异步调用 116
5.2.1 任务队列 116
5.2.2 主题队列 117
5.2.3 发布/订阅模式 122
5.2.4 AMQP上的RPC 122
5.2.5 异步总结 122
5.3 测试服务间交互 123
5.3.1 模拟同步调用 123
5.3.2 模拟异步调用 124
5.4 本章小结 127
第 6 章 监控服务 129
6.1 集中化日志 129
6.1.1 设置Graylog 131
6.1.2 向Graylog发送日志 134
6.1.3 添加扩展字段 136
6.2 性能指标 137
6.2.1 系统指标 138
6.2.2 代码指标 140
6.2.3 Web服务器指标 142
6.3 本章小结 143
第 7 章 保护服务 145
7.1 OAuth2协议 146
7.2 基于令牌的身份验证 147
7.2.1 JWT标准 148
7.2.2 PyJWT 150
7.2.3 基于证书的X.509身份验证 151
7.2.4 TokenDealer微服务 154
7.2.5 使用TokenDealer 157
7.3 Web应用防火墙 160
7.4 保护代码 166
7.4.1 断言传入的数据 166
7.4.2 限制应用的范围 170
7.4.3 使用Bandit linter 171
7.5 本章小结 174
第 8 章 综合运用 175
8.1 构建ReactJS仪表盘 176
8.1.1 JSX语法 176
8.1.2 React组件 177
8.2 ReactJS与Flask 181
8.2.1 使用 bower、npm和babel 182
8.2.2 跨域资源共享 185
8.3 身份验证与授权 188
8.3.1 与数据服务交互 188
8.3.2 获取Strava令牌 189
8.3.3 JavaScript身份验证 191
8.4 本章小结 192
第 9 章 打包和运行Runnerly 195
9.1 打包工具链 196
9.1.1 一些定义 196
9.1.2 打包 197
9.1.3 版本控制 204
9.1.4 发布 206
9.1.5 分发 208
9.2 运行所有微服务 210
9.3 进程管理 213
9.4 本章小结 216
第 10 章 容器化服务 217
10.1 何为Docker? 218
10.2 Docker简介 219
10.3 在Docker中运行Flask 221
10.4 完整的栈——OpenResty、Circus和Flask 223
10.4.1 OpenResty 224
10.4.2 Circus 226
10.5 基于Docker的部署 228
10.5.1 Docker Compose 230
10.5.2 集群和初始化简介 231
10.6 本章小结 233
第 11 章 在AWS上部署 235
11.1 AWS总览 236
11.2 路由:Route53、ELB和AutoScaling 237
11.3 执行:EC2和Lambda 237
11.4 存储:EBS、S3、RDS、ElasticCache和CloudFront 238
11.4.1 消息:SES、SQS和SNS 240
11.4.2 初始化资源和部署:CloudFormation和ECS 241
11.5 在AWS上部署简介 242
11.5.1 创建AWS账号 242
11.5.2 使用CoreOS在EC2上部署 244
11.6 使用ECS 部署 247
11.7 Route53 251
11.8 本章小结 253
第 12 章 接下来做什么? 255
12.1 迭代器和生成器 256
12.2 协同程序 259
12.3 asyncio库 260
12.4 aiohttp框架 262
12.5 Sanic 262
12.6 异步和同步 264
12.7 本章小结 265

部分内容试读

前 言
为将Web应用部署到云,代码需要与很多第三方服务进行交互。使用微服务架构,可构建能管理这些交互的大型应用。但这带来一系列挑战,每项挑战都有独特的复杂性。这本通俗易懂的指南旨在帮助你克服这些挑战。书中将介绍如何以最合理的方式设计、开发、测试和部署微服务,紧贴实用的示例将帮助 Python 开发者用最高效的方式创建Python微服务。阅读完《Python微服务开发》,读者将掌握基于小型标准单元构建大型应用的技能。《Python微服务开发》将使用成熟的最佳实践,并分析如何规避常见陷阱。此外,对于正将单体设计转换成新型“微服务”开发范式的社区开发者来说,《Python微服务开发》也颇具价值。
《Python微服务开发》内容
第1章“理解微服务”定义什么是微服务,以及微服务在现代Web应用中扮演的角色。还介绍Python,并解释为什么用Python构建微服务是上佳之选。
第2章“Flask框架”介绍Flask的主要特性。通过一个Web应用示例来展示这个框架,Flask是构建微服务的基础。
第3章“良性循环:编程、测试和写文档”,介绍测试驱动开发方法和持续集成方法,以及在构建和打包Flask应用的实践中如何使用这些方法。
第4章“设计Runnerly”基于应用特性和用户案例,首先构建一个单体应用,然后讲述如何将其拆解成微服务,并实现微服务之间的数据交互。还将介绍用来描述HTTP API的Open API 2.0(ex-Swagger)规范。
第5章“与其他服务交互”介绍一个服务如何与后台服务进行交互,如何处理网络拆分问题,以及其他交互问题,另外介绍如何独立地测试一个服务。
第6章“监控服务”介绍如何在代码中添加日志和指标,清晰地掌控全局,确定发生了什么,并能追查问题和了解服务利用率。
第7章“保护服务”介绍如何保护微服务,如何处理用户身份验证、服务间身份验证以及用户管理。还介绍针对服务的欺诈和滥用,以及如何缓解这些问题。
第8章“综合运用”描述在终端用户界面中,如何设计和构建一个使用微服务的JavaScript应用。
第9章“打包和运行Runnerly”描述如何打包、构建和运行整个应用。开发者必须能够将应用打包到一个开发环境中,确保所有部分都可以运行。
第10章“容器化服务”解释什么是虚拟化,如何使用Docker,如何将服务做成Docker镜像。
第11章“在AWS上部署”首先介绍当前的云服务厂商和AWS世界。然后演示如何使用AWS来实例化一个基于微服务架构的应用。另外介绍CoreOS,这是一个专门用于在云上发布Docker容器的Linux分支。
第12章“接下来做什么?”总结全书,在如何构建独立于云厂商和虚拟化技术的微服务问题上,给出一些提示来避免将鸡蛋放入同一个篮子里。还将帮助你巩固第9章中学到的知识。
阅读《Python微服务开发》需要准备什么
要执行《Python微服务开发》的命令和应用,系统需要安装Python 3.x、virtualenv 1.x和Docker CE。正文中也会根据需要详细列出安装说明。
读者对象
作为一名开发者,如果你了解Python基本概念、命令行,以及基于HTTP的应用设计原则,并想学习如何构建、测试、扩展和管理Python 3微服务,那么《Python微服务开发》适合你。阅读《Python微服务开发》,你不必具有用Python编写微服务的任何经验。
《Python微服务开发》约定
代码块按以下样式显示:
import time
def application(environ, start_response):
headers = [('Content-type', 'application/json')]
start_response('200 OK', headers)
return bytes(json.dumps({'time': time.time()}), 'utf8')
会用粗体来显示需要重点关注的代码:
from greenlet import greenlet
def test1(x, y):
z = gr2.switch(x+y)
print(z)
任何命令行的输入或输出都按以下样式显示:
docker-compose up
警告或重要注释会这样显示。
提示和技巧会这样显示。
读者反馈
欢迎读者提出反馈意见,这样我们能了解你对《Python微服务开发》的看法,喜欢什么或不喜欢什么。反馈意见很重要,能帮助我们开发读者真正想了解的主题。只需要发邮件给feedback@packpub.com,并在邮件标题中提及《Python微服务开发》,即可将反馈意见发给我们。
如果你是某个主题的专家,有兴趣写书,或愿意为写书做贡献,请到www.packtpub.com/authors页面查阅作者指南。
下载示例代码
《Python微服务开发》相关的代码放在GitHub上,网址是https://github.com/PacktPublishing/Python- Microservices-Development。还有其他代码包和视频,欢迎通过https://github.com/ PacktPublishing/页面下载。
另外,读者可扫描《Python微服务开发》封底的二维码直接下载代码。
下载文件后,用以下工具的最新版本来解压缩:
● 在Windows系统中使用WinRAR /7-Zip。
● 在Mac系统中使用Zipeg /iZip /UnRarX。
● 在Linux系统中使用7-Zip /PeaZip。
勘误
尽管我们已经非常小心地确保内容的准确性,但还是会发生失误。如果你在书中发现了错误,可能是文本错误或代码错误,你能向我们报告此事,我们将不胜感激。通过这样做,可减少其他读者的阅读痛苦,并帮助我们改进《Python微服务开发》的后续版本。如果你发现任何勘误,请访问 http://www.packtpub.com/submit-errata页面来报告它们,选择你购买的书,单击Errata Submission Form链接,输入勘误的详细信息。一旦填写的勘误被确认,你的提交将被接受,然后勘误将被上传到我们的网站上,或添加到任何现有的勘误列表中。现有的勘误列表位于Errata标题的下面。
要查看之前提交的勘误,可访问https://www.packtpub.com/books/content/support,然后在查找输入框内输入书名。要查找的信息会显示在Errata下面。
盗版行为
互联网上的盗版行为是所有媒体一直头疼的问题。在Packt,我们将尽力处理盗版问题。我们会非常认真地对待版权和许可证的保护。如果你在互联网上遇到任何我们作品的非法拷贝,请立即向我们提供网址或网站名称,以便我们能采取补救措施。
请通过 copyright@packtpub.com 联系我们,并附带上有侵权嫌疑的材料。
非常感激你能帮助保护我们的作者以及我们的工作。这样我们可持续为你带来有价值的内容。

关于此书评价

暂无.

书摘内容

暂无.

Python微服务开发最新最全的试读、书评、目录、简介信息由Python中文网整理提供。