内容简介
第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.50 9身份验证
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 本章小结