python项目报告模板_Python 微服务开发

译者序

近年来,“微服务”技术风靡全球。随着传统互联网和移动互联网的蓬勃发展,企业在快速迭代中积累了大规模服务化开发和运维经验。为通过提高 IT 的响应能力来提升竞争力,微服务架构成为传统企业的“救命稻草”。开发团队在变革中改造和重建技术架构,企业管理者们切实感受到微服务带来的巨大好处。

但不可否认,微服务架构带来了额外复杂性。对开发者提出了更高的要求,开发者不仅要编写业务代码,还需要具有部署和运维等能力。

十多年前,当 Ruby on Rails 和 Django 发布时,人们热衷于追逐包罗万象、开箱

即用的全栈式 Web 框架,只需要运行几行脚手架命令,就能快速编写一个包含 Web

页面和数据存储的 Todo List 应用。但时至今日,那些小巧灵便的框架变得越来越受欢

迎,开发者更愿意选择“微框架”,通过谨慎地综合运用不同工具来开发应用;随着开

发的进行,灵活地升级或替换其中的某些部分。Flask 即是这种微框架之一。

本书模拟真实场景,从一个单体 Flask 应用开始,提出问题,分析和比较方案,

作出权衡,最终解决问题(可能引出又一个“问题”——但并非当前的优先级),逐渐拆

分出多个微服务,解决随之而来的部署、监控、安全等新问题,在最后利用异步编程

优化性能。期间牵涉大量工具,但本书并未详细介绍它们,只是“点到为止”。本书内

容紧贴实用,面向想要开阔眼界和动手实践的开发者和架构师。通过阅读本书,读者

将能对微服务开发实践有系统性认识,以便在开发早期进行规划和技术选型。

本书内容

第 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 章中学到的知识。

第 1 章 理解微服务

1.1 SOA 的起源

1.2 单体架构

1.3 微服务架构

1.4 微服务的益处

1.4.1 分离团队的关注点

1.4.2 更小的项目

1.4.3 扩展和部署

1.5 微服务的缺陷

1.5.1 不合理的拆分

1.5.2 更多的网络交互

1.5.3 数据的存储和分享

1.5.4 兼容性问题

1.5.5 测试

1.6 使用 Python 实现微服务

1.6.1 WSGI标准

1.6.2 greenlet 和 gevent 模块

1.6.3 Twisted 和 Tornado模块

1.6.4 asyncio 模块

1.6.5 语言性能

1.7 本章小结

第 2 章 Flask 框架

2.1 选择 Python 版本

2.2 Flask 如何处理请求

2.2.1 路由匹配

2.2.2 请求

2.2.3 响应

2.3 Flask 的内置特性

2.3.1 Session 对象

2.3.2 全局值

2.3.3 信号

2.3.4 扩展和中间件

2.3.5 模板

2.3.6 配置

2.3.7 Blueprint

2.3.8 错误处理和调试

2.4 微服务应用的骨架

2.5 本章小结

第 3 章 良性循环:编码、测试和写文档

3.1 各种测试类型的差异

3.1.1 单元测试

3.1.2 功能测试

3.1.3 集成测试

3.1.4 负载测试

3.1.5 端到端测试

3.2 使用 WebTest

3.3 使用 pytest 和 Tox

3.4 开发者文档

3.5 持续集成

3.5.1 Travis-CI

3.5.2 ReadTheDocs

3.5.3 Coveralls

3.6 本章小结

第 4 章 设计 Runnerly

4.1 Runnerly 应用

4.2 单体设计

4.2.1 模型

4.2.2 视图与模板

4.2.3 后台任务

4.2.4 身份验证和授权

4.2.5 单体设计汇总

4.3 拆分单体

4.4 数据服务

4.5 使用 Open API 2.0

4.6 进一步拆分

4.7 本章小结

第 5 章 与其他服务交互

5.1 同步调用

5.1.1 在 Flask 应用中使用 Session

5.1.2 连接池

5.1.3 HTTP 缓存头

5.1.4 改进数据传输

5.1.5 同步总结

5.2 异步调用

5.2.1 任务队列

5.2.2 主题队列

5.2.3 发布/订阅模式

5.2.4 AMQP 上的RPC

5.2.5 异步总结

5.3 测试服务间交互

5.3.1 模拟同步调用

5.3.2 模拟异步调用

5.4 本章小结

第 6 章 监控服务

6.1 集中化日志

6.1.1 设置 Graylog

6.1.2 向 Graylog 发送日志

6.1.3 添加扩展字段

6.2 性能指标

6.2.1 系统指标

6.2.2 代码指标

6.2.3 Web 服务器指标

6.3 本章小结

第 7 章 保护服务

7.1 OAuth2 协议

7.2 基于令牌的身份验证

7.2.1 JWT 标准

7.2.2 PyJWT

7.2.3 基于证书的 X.509 身份验证

7.2.4 TokenDealer 微服务

7.2.5 使用 TokenDealer

7.3 Web 应用防火墙

7.4 保护代码

7.4.1 断言传入的数据

7.4.2 限制应用的范围

7.4.3 使用 Bandit linter

7.5 本章小结

第 8 章 综合运用

8.1 构建 ReactJS 仪表盘

8.1.1 JSX 语法

8.1.2 React 组件

8.2 ReactJS 与 Flask

8.2.1 使用 bower、npm 和 babel

8.2.2 跨域资源共享

8.3 身份验证与授权

8.3.1 与数据服务交互

8.3.2 获取 Strava 令牌

8.3.3 JavaScript 身份验证

8.4 本章小结

第 9 章 打包和运行 Runnerly

9.1 打包工具链

9.1.1 一些定义

9.1.2 打包

9.1.3 版本控制

9.1.4 发布

9.1.5 分发

9.2 运行所有微服务

9.3 进程管理

9.4 本章小结

第 10 章 容器化服务

10.1 何为Docker?

10.2 Docker 简介

10.3 在 Docker 中运行 Flask

10.4 完整的栈——OpenResty、Circus 和 Flask

10.4.1 OpenResty

10.4.2 Circus

10.5 基于Docker 的部署

10.5.1 Docker Compose

10.5.2 集群和初始化简介

10.6 本章小结

第 11 章 在 AWS 上部署

11.1 AWS 总览

11.2 路由:Route53、ELB 和 AutoScaling

11.3 执行:EC2 和 Lambda

11.4 存储:EBS、S3、RDS、ElasticCache和CloudFront

11.4.1 消息:SES、SQS 和 SNS

11.4.2 初始化资源和部署:CloudFormation 和ECS

11.5 在 AWS 上部署简介

11.5.1 创建 AWS 账号

11.5.2 使用 CoreOS 在 EC2 上部署

11.6 使用 ECS 部署

11.7 Route53

11.8 本章小结

第 12 章 接下来做什么?

12.1 迭代器和生成器

12.2 协同程序

12.3 asyncio 库

12.4 aiohttp 框架

12.5 Sanic

12.6 异步和同步

12.7 本章小结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值