Python微服务开发 资料配套源码
应用Python小工具生态体系减少微服务多元性的好用方式
Web运用常常布署到云主机,运用编码必须与众多第三方平台服务项目互动。从基础理论上讲,可应用分布式架构来高效率地搭建该类运用,但在具体中,充分考虑各一部分间的互动难度系数,搭建分布式架构并非易事。
《Python微服务开发》将具体指导你选用*的、成熟期的搭建方法,绕开普遍圈套,摆脱难题,*终开发出好几个较小的标准单元,将其组成Web运用。这书紧靠好用,将具体指导你了解和应用TDD标准,应用Python 3以及非凡的小工具生态体系来搭建任何。根据学习培训这书,你将遵照*对策,应用Flask和Tox等小工具来搭建服务项目,保持服务项目中间的安全性联接,在nginx中撰写Lua脚本制作来搭建Web运用服务器防火墙作用(如速度限定),了解Docker在微服务中饰演的人物角色,合用Docker器皿和AWS来布署服务项目。
*终,你将开发出1个应用场景微服务的详细Python运用,并熟练把握搭建、设计构思、检测和布署Python微服务的基本概念。
● 讨论微服务的含意和设计构思方法
● 有效应用Python 3、Flask和Tox等小工具来搭建服务项目
● 应用TDD方式
● 讨论撰写微服务文本文档的方法
● 配备和装包编码的*方法
● 与别的服务项目互动的方法及其有关挑戰
● 服务项目的安全系数,及其服务项目的监控器和拓展
● 用Docker器皿和AWS布署服务项目
全书共12章,內容包含:了解微服务、应用flask、测试驱动开发与文本文档化、设计构思Forrest、与别的服务项目互动、维护服务项目安全性、应用微服务、装包Forrest、将服务项目Docker化、在AWS上布署、超前的逻辑思维等。
目录
- 第 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