# 目录

## 0、[前言](https://github.com/oopsguy/microservices-from-design-to-deployment-chinese/blob/master/0-foreword.md)

## [1、微服务简介](https://github.com/oopsguy/microservices-from-design-to-deployment-chinese/blob/master/1-introduction-to-microservices.md#1微服务简介)
- [1.1、构建单体应用](https://github.com/oopsguy/microservices-from-design-to-deployment-chinese/blob/master/1-introduction-to-microservices.md#11构建单体应用)
- [1.2、走向单体地狱](https://github.com/oopsguy/microservices-from-design-to-deployment-chinese/blob/master/1-introduction-to-microservices.md#12走向单体地狱)
- [1.3、微服务-解决复杂问题](https://github.com/oopsguy/microservices-from-design-to-deployment-chinese/blob/master/1-introduction-to-microservices.md#13微服务-解决复杂问题)
- [1.4、微服务的优点](https://github.com/oopsguy/microservices-from-design-to-deployment-chinese/blob/master/1-introduction-to-microservices.md#14微服务的优点)
- [1.5、微服务的缺点](https://github.com/oopsguy/microservices-from-design-to-deployment-chinese/blob/master/1-introduction-to-microservices.md#15微服务的缺点)
- 1.6、总结
- 1.7、微服务实战：NGINX作为反向代理服务器

## 2、使用API网关
- 2.1、简介
- 2.2、客户端与微服务直接通信
- 2.3、使用API网关
- 2.4、API网关的优点和缺点
- 2.5、实现API网关
- 2.6、性能与扩展
- 2.7、使用响应式编程模型
- 2.8、服务调用
- 2.9、服务发现
- 2.10、处理部分失败
- 2.11、总结
- 2.12、微服务实战：NGINX作为API网关

## 3、进程间通信
- 3.1、简介
- 3.2、交互风格
- 3.3、定义API
- 3.4、演变API
- 3.5、处理部分失败
- 3.6、IPC技术
- 3.7、异步，基于消息通信
- 3.8、同步，请求/响应 IPC
- 3.9、REST
- 3.10、Thrift
- 3.11、消息格式
- 3.12、总结
- 3.13、微服务实战：NGINX和应用架构

## 4、服务发现
- 4.1、为什么使用服务发现
- 4.2、客户端发现模式
- 4.3、服务端发现模式
- 4.4、服务注册表
- 4.5、服务注册选项
- 4.6、自注册模式
- 4.7、第三方注册模式
- 4.8、总结
- 4.9、微服务实战：NGINX的灵活性

## 5、微服务的事件驱动数据管理
- 5.1、微服务与分布式数据管理问题
- 5.2、事件驱动架构
- 5.3、实现原子性
- 5.4、使用本地事务发布事件
- 5.5、挖掘数据库事务日志
- 5.6、使用事件溯源
- 5.7、总结
- 5.8、微服务实战：NGINX与存储优化

## 6、选择微服务部署策略
- 6.1、动机
- 6.2、单主机多服务实例模式
- 6.3、单主机服务实例模式
- 6.4、单虚拟机服务实例模式
- 6.5、单容器服务实例模式
- 6.6、无服务部署
- 6.7、总结
- 6.8、微服务实战：部署微服务

## 7、用NGINX跨越不同的主机
- 7.1、重构单体为微服务
- 7.2、微服务重构概述
- 7.3、策略1：停止挖掘
- 7.4、策略2：分离前后端
- 7.5、策略3：提取服务
- 7.6、优先将哪些模块转为微服务
- 7.7、怎样提取模块
- 7.8、总结
- 7.9、微服务实战：用NGINX驯服单体应用
- 7.10、微服务与NGINX的相关资源