当前位置:网站首页>图书 > 正文 >>

Python架构模式:精通基于Python的API设计、事件驱动架构和包管理

图书信息

作者(爱尔兰)詹姆·布尔塔(Jaime Buelta)
出版社机械工业出版社
ISBN9787111742876
出版时间2024-01-03
字数26.4万
分类科技,计算机,网络,计算机理论与教程

读书简介

本书讲解软件架构系统各方面的内容,从顶层设计到用于支持高层功能的低层细节。本书首先介绍软件架构的含义并给出简单的设计示例,之后分为四个部分涵盖软件发生命周期中的各个阶段:讨论构成系统的每个组成单元的一般性原则及其核心内容;重介绍一些成功的架构模式,包括它们的优势和局限性;阐述如何行软件测试以及如何构建和共享代码;讲解持续运维,涵盖日志、系统度量、性能分析、代码调试和架构调整等内容。

目录

译者序

前言

关于作者

关于审校者

第1章 软件架构简介

1.1 设计软件系统的架构

1.2 划分为较小的单元

1.3 康威定律:对软件架构的影响

1.4 应用示例:概述

1.5 软件架构安全

1.6 小结

第一部分 设计

第2章 API设计

2.1 抽象

2.1.1 使用合适的抽象

2.1.2 抽象失效

2.1.3 资源与操作抽象

2.2 RESTful接口

2.2.1 实用性定义

2.2.2 HTTP头部及状态

2.2.3 资源设计

2.2.4 资源与参数

2.2.5 分页

2.2.6 RESTful API流程设计

2.2.7 使用Open API规范

2.3 认证

2.3.1 HTML接口认证

2.3.2 RESTful接口认证

2.4 API版本管理

2.4.1 为何需要版本管理

2.4.2 内部版本与外部版本

2.4.3 语义化版本管理

2.4.4 简单的版本管理

2.5 前端与后端

2.6 HTML接口

2.6.1 传统HTML接口

2.6.2 动态页面

2.6.3 单页应用程序

2.6.4 混合模式

2.7 API设计示例

2.7.1 端点

2.7.2 设计及实现审查

2.8 小结

第3章 数据建模

3.1 数据库的类型

3.1.1 关系数据库

3.1.2 非关系数据库

3.1.3 小型数据库

3.2 数据库事务

3.3 分布式关系数据库

3.3.1 主库/副本

3.3.2 分片

3.3.3 分片的优势和劣势

3.4 数据库模式设计

3.4.1 模式规范化

3.4.2 去规范化

3.5 数据索引

3.6 小结

第4章 数据层

4.1 模型层

4.1.1 DDD

4.1.2 使用ORM

4.1.3 工作单元模式及数据封装

4.1.4 CQRS使用不同的读写模型

4.2 数据库迁移

4.2.1 向后兼容性

4.2.2 关系数据库迁移

4.2.3 非关系数据库迁移

4.3 处理遗留数据库

4.3.1 检测数据库模式

4.3.2 同步现有模式至ORM

4.4 小结

第二部分 架构模式

第5章 十二要素App方法论

5.1 十二要素App简介

5.2 CI

5.3 可扩展性

5.4 配置

5.5 十二要素

5.5.1 一次构建,多次运行

5.5.2 依赖项和配置

5.5.3 可扩展性

5.5.4 监控和管理

5.6 容器化的十二要素App

5.7 小结

第6章 Web服务器架构

6.1 请求-响应架构

6.2 Web架构

6.3 Web服务器

6.3.1 由外部提供静态内容

6.3.2 反向代理

6.3.3 日志

6.3.4 高级用法

6.4 uWSGI

6.4.1 WSGI应用程序

6.4.2 与Web服务器交互

6.4.3 进程

6.4.4 进程生命周期

6.5 Python Worker

6.5.1 Django MVT架构

6.5.2 将请求路由到视图

6.5.3 视图

6.5.4 中间件

6.5.5 Django REST框架

6.6 外部层

6.7 小结

第7章 事件驱动架构

7.1 发送事件

7.2 异步任务

7.3 任务细分

7.4 计划任务

7.5 队列机制

7.5.1 统一Worker代码

7.5.2 云队列和Worker

7.6 Celery

7.6.1 配置Celery

7.6.2 Celery Worker

7.6.3 触发任务

7.6.4 联调

7.6.5 计划任务

7.6.6 Celery Flower

7.6.7 Flower的HTTP API

7.7 小结

第8章 高级事件驱动架构

8.1 流式事件

8.2 管道

8.2.1 准备

8.2.2 基础任务

8.2.3 图像任务

8.2.4 视频任务

8.2.5 连接任务

8.2.6 运行任务

8.3 定义总线

8.4 更复杂的系统

8.5 测试事件驱动系统

8.6 小结

第9章 微服务与单体

9.1 单体架构

9.2 微服务架构

9.3 架构选择

9.4 关键因素:团队沟通

9.5 从单体迁移到微服务

9.5.1 迁移面临的挑战

9.5.2 四步迁移

9.6 服务容器化

9.6.1 构建并运行镜像

9.6.2 构建并运行Web服务

9.7 容器编排与Kubernetes

9.8 小结

第三部分 实现

第10章 测试与TDD

10.1 代码测试

10.2 不同级别的测试

10.2.1 单元测试

10.2.2 集成测试

10.2.3 系统测试

10.3 测试理念

10.3.1 如何设计好的测试

10.3.2 构建测试

10.4 TDD

10.4.1 将TDD引入新团队

10.4.2 问题和局限性

10.4.3 TDD过程示例

10.5 Python中的单元测试

10.5.1 Python unittest

10.5.2 Pytest

10.6 测试外部依赖

10.6.1 模拟

10.6.2 依赖注入

10.6.3 OOP中的依赖注入

10.7 pytest高级用法

10.7.1 分组测试

10.7.2 使用测试固件

10.8 小结

第11章 包管理

11.1 创建新包

11.2 Python中的简单包操作

11.3 Python包管理生态

11.3.1 PyPI

11.3.2 虚拟环境

11.3.3 环境准备

11.3.4 Python包

11.4 创建软件包

11.4.1 开发模式

11.4.2 纯Python包

11.5 Cython

11.6 包含二进制代码的Python包

11.7 将包上传到PyPI

11.8 创建私有仓库

11.9 小结

第四部分 持续运维

第12章 日志

12.1 日志基础知识

12.2 用Python生成日志

12.3 通过日志检测问题

12.3.1 检测预期错误

12.3.2 捕获非预期错误

12.4 日志策略

12.5 开发过程中添加日志

12.6 日志的局限性

12.7 小结

第13章 度量

13.1 度量与日志

13.2 用Prometheus生成度量

13.2.1 环境准备

13.2.2 配置Django Prometheus

13.2.3 检查度量指标

13.2.4 启动Prometheus服务器

13.3 查询Prometheus

13.4 积极使用度量

13.5 告警

13.6 小结

第14章 性能分析

14.1 性能分析基础知识

14.2 性能分析工具的类型

14.3 代码耗时性能分析

14.3.1 使用内置的cProfile模块

14.3.2 逐行性能分析工具

14.4 局部性能分析

14.4.1 返回质数的Web服务器示例

14.4.2 过程性能分析

14.4.3 为每个请求生成性能分析文件

14.5 内存性能分析

14.5.1 使用memory_profiler

14.5.2 内存优化

14.6 小结

第15章 调试

15.1 检测并处理缺陷

15.2 生产环境分析

15.3 了解生产环境中的问题

15.3.1 记录请求ID

15.3.2 分析数据

15.3.3 增加日志记录

15.4 本地调试

15.5 Python自省工具

15.6 用日志进行调试

15.7 用断点进行调试

15.8 小结

第16章 持续架构

16.1 调整系统架构

16.2 计划内停机

16.3 事故

16.3.1 事后分析

16.3.2 事前分析

16.4 负载测试

16.5 版本管理

16.6 向后兼容性

16.6.1 渐进式变更

16.6.2 不中断式部署

16.7 功能标志

16.8 变更中的团队合作

16.9 小结

推荐阅读