第1章 微服务概述 1
1.1 什么是微服务 2
1.2 为什么微服务 3
1.2.1 区别 4
1.2.2 从单体应用说起 5
1.2.3 第一步切分 5
1.2.4 服务化所带来的问题 6
1.2.5 微服务的可扩展性 8
1.2.6 微服务与SOA的区别 8
1.3 常见的微服务组件 9
1.4 常用的微服务框架 11
1.4.1 Spring顶级项目 11
1.4.2 背景 12
1.4.3 社区活跃度 14
1.4.4 架构完整度 16
1.4.5 总结 17
1.5 微服务架构设计模式 17
1.6 如何实施微服务 20
1.7 小结 20
第2章 微服务设计原则 21
2.1 设计原则之分层架构 22
2.2 设计原则之统一通信协议 24
2.3 设计原则之单一职责 25
2.4 设计原则之服务拆分 26
2.5 设计原则之前后端分离 28
2.6 设计原则之版本控制 29
2.7 设计原则之围绕业务构建 30
2.8 设计原则之并发流量控制 30
2.9 设计原则之CAP 31
2.10 设计原则之EDA事件驱动 32
2.11 设计原则之CQRS 33
2.12 设计原则之基础设施自动化 35
2.13 设计原则之数据一致性 35
2.14 设计原则之设计模式 36
2.15 设计原则之DevOps 39
2.16 设计原则之无状态服务 40
2.17 小结 41
第3章 微服务之Spring Boot 42
3.1 一切从简单开始 44
3.2 快速集成第三方的Starter 53
3.3 降低开发复杂度之面向切面 53
3.3.1 前置通知 55
3.3.2 后置返回通知 57
3.3.3 后置异常通知 58
3.3.4 后置最终通知 58
3.3.5 环绕通知 59
3.3.6 AOP总结 60
3.4 并不复杂的持久化 60
3.4.1 单数据源 61
3.4.2 多数据源 63
3.4.3 JOOQ 65
3.4.4 事务处理 69
3.4.5 整合Redis 72
3.4.6 整合队列 76
3.4.7 操作MongoDB 83
3.5 Web开发 85
3.6 懒人的接口文档管理 89
3.7 优化的调度 92
3.8 健康是永恒的主题 94
3.9 强强联合之整合Dubbo 96
3.10 小结 101
第4章 微服务之Docker 102
4.1 Docker原理 104
4.2 更轻量级的虚拟化 105
4.3 三个概念理解Docker 107
4.3.1 镜像(Image) 108
4.3.2 容器(Container) 110
4.3.3 仓库(Repository) 113
4.4 Dockerfile定制一切 113
4.4.1 Dockerfile语法 113
4.4.2 Dockerfile命令 114
4.4.3 Dockerfile构建过程 117
4.4.4 构建Java环境 118
4.4.5 Dockerfile小结 120
4.5 Docker网络 121
4.5.1 网络模式 121
4.5.2 link 121
4.5.3 跨主机访问 122
4.6 Docker数据卷 122
4.6.1 数据卷 122
4.6.2 数据卷容器 124
4.7 Spring Boot与Docker 124
4.8 搭建自己的镜像仓库 128
4.8.1 安装和启动 128
4.8.2 使用 132
4.9 Kubernetes 133
4.10 私有云整体架构 136
4.11 小结 137
第5章 微服务之Spring Cloud 139
5.1 注册中心 142
5.1.1 常用的注册中心 143
5.1.2 Eureka介绍 144
5.1.3 服务发现 145
5.1.4 简单注册 147
5.2 负载均衡 152
5.2.1 Spring Cloud的负载实现 154
5.2.2 Ribbon 155
5.2.3 Feign 158
5.2.4 加入core 161
5.3 微服务容错(Hystrix) 164
5.3.1 雪崩的形成 164
5.3.2 应对方案 164
5.3.3 降级和熔断 165
5.3.4 Hystrix 166
5.3.5 集中监控 170
5.4 分布式配置中心 172
5.5 API网关 177
5.5.1 为什么需要网关 178
5.5.2 Zuul 179
5.6 消息总线(Spring Cloud Bus) 184
5.7 小结 186
第6章 微服务之Spring C1oud其他框架 187
6.1 Spring Cloud Consul 188
6.2 Spring CloudZooKeeper 190
6.3 Spring Cloud archaius 192
6.4 Spring Cloud Task 193
6.5 Spring Cloud Security 194
6.5.1 HTTP Basic Authentication 195
6.5.2 JWT 196
6.5.3 OAuth2 203
6.5.4 Spring Cloud Security 204
6.6 Spring Cloud Sleuth 205
6.6.1 服务端 206
6.6.2 客户端 207
6.7 Spring Cloud Stream 208
6.8 Spring Cloud Data Flow 211
6.9 小结 212
第7章 微服务之自动化测试与质量管理 213
7.1 微服务测试 214
7.2 单元测试 216
7.2.1 单元测试及覆盖率评估 216
7.2.2 JUnit 217
7.2.3 Spring Boot单元测试 218
7.2.4 Mockito 220
7.3 API测试 222
7.3.1 Jmeter 224
7.3.2 压力测试 225
7.4 A/B测试 227
7.5 冒烟和回归测试 228
7.6 静态代码分析 229
7.6.1 Checkstyle 230
7.6.2 FindBugs 233
7.6.3 PMD 234
7.7 SonarQube质量监控 237
7.7.1 为什么使用 237
7.7.2 安装和使用 238
7.7.3 安装插件 240
7.7.4 运行流程 240
7.8 小结 241
第8章 微服务之JHipster 242
8.1 JHipster技术列表 243
8.1.1 客户端选项 243
8.1.2 服务端选项 245
8.1.3 部署选项 249
8.2 Angular简介 250
8.3 快速开始JHipster 251
8.3.1 安装 251
8.3.2 使用 252
8.3.3 构建单体应用 253
8.3.4 Entity sub-generator 255
8.3.5 开发和运行 258
8.3.6 插件安装 260
8.4 目录结构 260
8.5 构建微服务应用 261
8.5.1 注册中心 261
8.5.2 创建微服务网关 263
8.5.3 Traefik 266
8.5.4 JHipster UAA 266
8.5.5 构建微服务应用 269
8.6 基础配置 271
8.6.1 JHipster属性配置 271
8.6.2 作为Maven项目 274
8.6.3 数据库 274
8.6.4 DTO 275
8.6.5 分页 276
8.6.6 文档 277
8.7 小结 281
第9章 微服务之自动化部署 282
9.1 私有仓库搭建 283
9.1.1 Nexus介绍 283
9.1.2 安装与配置 284
9.1.3 在项目中使用 285
9.2 Ansible 287
9.3 持续集成 289
9.3.1 持续集成流程 290
9.3.2 Jenkins介绍与安装 291
9.3.3 Maven介绍 293
9.3.4 Jenkins系统设置 294
9.3.5 集成 Sonar 295
9.3.6 构建工程 297
9.3.7 配置测试 299
9.4 灰度发布 299
9.5 小结 302
第10章 微服务之日志收集与监控 303
10.1 ELK搜集与分析 305
10.1.1 工作流程 306
10.1.2 日志格式 306
10.1.3 平台搭建 307
10.2 系统监控 310
10.2.1 监控策略和监控对象 310
10.2.2 进程监控 311
10.2.3 数据波动监控 312
10.2.4 常用监控命令 312
10.3 运维监控 316
10.3.1 Zabbix 316
10.3.2 Open-Falcon 321
10.4 APM监控 323
10.4.1 Pinpoint 323
10.4.2 SkyWalking 325
10.4.3 Zipkin 326
10.4.4 CAT 328
10.5 Pinpoint的安装与使用 330
10.5.1 Pinpoint的安装 330
10.5.2 Pinpoint的使用 332
10.5.3 Pinpoint实现邮件告警 335
10.6 小结 338
第11章 完整示例 339
11.1 安装Lom 340
11.2 PiggyMetrics 341
11.3 整体架构 342
11.3.1 配置Spring Cloud Config 343
11.3.2 授权服务 344
11.3.3 API网关 345
11.3.4 服务发现 345
11.3.5 负载均衡器、断路器和HTTP客户端 346
11.3.6 监控仪表盘 347
11.3.7 日志分析 348
11.4 安装和运行 348
11.4.1 配置Maven并导入工程 348
11.4.2 安装 350
11.4.3 使用 352
11.4.4 如何变成自己的项目 354
11.5 小结 355
第12章 微服务核心功能推荐 356
12.1 工作流引擎 357
12.1.1 Activiti 357
12.1.2 UFLO 358
12.2 规则引擎 360
12.2.1 Drools 360
12.2.2 URule 361
12.3 调度系统 362
12.4 消息推送 365
12.5 网关中间件 368
12.5.1 Orange 368
12.5.2 Kong 369
12.5.3 Zuul 369
12.6 分库分表中间件 370
12.6.1 Sharding-JDBC 370
12.6.2 MyCat 373
12.7 报表引擎 374
12.8 数据处理 375
12.8.1 Spring Batch 376
12.8.2 Kettle 378
12.9 并发编程 379
12.10 分布式配置 380
12.10.1 Disconf 380
12.10.2 Apollo 381
12.11 CAS 383
12.12 WebFlux 384
12.13 小结 388