第1章 轻量级的微服务
1.1 微服务将变得轻量级
1.1.1 架构与架构师
1.1.2 架构演进过程
1.1.3 微服务架构发展趋势
1.2 微服务架构前期准备
1.2.1 认识微服务架构冰山模型
1.2.2 冰山下的微服务基础设施
1.2.3 根据业务切分微服务边界
1.3 轻量级微服务架构图
1.3.1 轻量级微服务部署架构
1.3.2 轻量级微服务运行架构
1.3.3 轻量级微服务全局架构
1.4 本章小结
第2章 微服务日志
2.1 使用Spring Boot日志框架
2.1.1 使用Spring Boot Logging插件
2.1.2 集成Log4J日志框架
2.1.3 将日志输出到Docker容器外
2.2 使用Docker容器日志
2.2.1 Docker日志驱动
2.2.2 Linux日志系统:Syslog
2.2.3 Docker日志架构
2.3 搭建应用日志中心
2.3.1 开源日志中心:ELK
2.3.2 日志存储系统:Elasticsearch
2.3.3 日志收集系统:Logstash
2.3.4 日志查询系统:Kibana
2.3.5 搭建ELK日志中心
2.4 本章小结
第3章 微服务监控
3.1 使用Spring Boot监控系统
3.1.1 Spring Boot自带的监控功能
3.1.2 Spring Boot Admin开源监控系统
3.2 搭建系统监控中心
3.2.1 时序数据收集系统:cAdvisor
3.2.2 时序数据存储系统:InfluxDB
3.2.3 时序数据分析系统:Grafana
3.2.4 集成InfluxDB + cAdvisor + Grafana
3.3 搭建调用追踪中心
3.3.1 开源调用追踪中心:Zipkin
3.3.2 追踪微服务调用链
3.3.3 追踪数据库调用链
3.4 本章小结
第4章 微服务通信
4.1 使用HTTP实现同步调用
4.1.1 使用Spring Boot开发服务端
4.1.2 使用Spring RestTemplate开发客户端
4.1.3 使用OkHttp开发客户端
4.1.4 使用Retrofit开发客户端
4.2 使用RPC实现同步调用
4.2.1 RPC通信原理
4.2.2 初步体验gRPC
4.2.3 Spring Boot集成gRPC
4.3 搭建分布式RPC框架
4.3.1 架构设计
4.3.2 搭建模块代码框架
4.3.3 开发RPC服务端
4.3.4 开发RPC客户端
4.4 本章小结
第5章 微服务解耦
5.1 使用MQ实现异步调用
5.1.1 使用ActiveMQ实现JMS异步调用
5.1.2 使用RabbitMQ实现AMQP异步调用
5.2 使用请求应答模式实现RPC调用
5.2.1 请求应答模式简介
5.2.2 使用RabbitMQ实现RPC调用
5.2.3 封装RabbitMQ的RPC代码框架
5.3 解决分布式事务问题
5.3.1 什么是Event-Sourcing
5.3.2 使用Event-Sourcing与MQ实现分布式事务控制
5.4 本章小结
第6章 微服务测试
6.1 使用Spring Boot单元测试
6.1.1 搭建待测应用程序框架
6.1.2 测试Service层
6.1.3 测试REST API
6.2 搭建REST API自动化测试框架
6.2.1 使用Postman手工测试REST API
6.2.2 使用Newman批量测试REST API
6.2.3 搭建REST API自动化测试框架
6.3 自动生成REST API文档
6.3.1 使用Swagger生成REST API文档
6.3.2 REST API文档的另一选择:apiDoc
6.4 本章小结
第7章 微服务配置
7.1 Ansible入门与实战
7.1.1 Ansible是什么
7.1.2 准备Ansible实战环境
7.1.3 Ansible实战
7.2 搭建服务配置中心
7.2.1 如何管理微服务中的配置
7.2.2 设计Ansible配置中心
7.2.3 动手实现自动化部署框架
7.3 自注册服务配置
7.3.1 目前服务注册存在的问题
7.3.2 使用Registrator实现服务自注册
7.3.3 微服务平滑升级解决方案
7.4 本章小结