图书目录

目    录

第1章  微服务的前世今生 1

1.1  软件架构的演化之路 1

1.2  什么是微服务 4

1.3  为什么需要微服务 7

1.4  微服务与单体、SOA的区别 9

1.5  什么场景适合微服务 11

1.6  微服务架构的形态 11

1.7  本章小结 15

第2章  Spring Cloud概述 16

2.1  Spring Cloud简介 16

2.1.1  什么是Spring Cloud 16

2.1.2  Spring Cloud的发展前景 17

2.1.3  Spring Cloud与Dubbo的对比 18

2.2  Spring Cloud的版本 21

2.2.1  Spring Cloud的版本发布规则 21

2.2.2  Spring Cloud的项目组成 22

2.2.3  Spring Cloud与Spring Boot版本之间的对应关系 23

2.3  Spring Cloud的核心组件和架构 24

2.3.1  Spring Cloud的架构 24

2.3.2  Spring Cloud的核心组件 25

2.4  本章小结 28

第3章  Spring Boot基础 29

3.1  Spring Boot概述 29

3.1.1  什么是Spring Boot 29

3.1.2  Spring、Spring Boot和Spring Cloud之间的关系 30

3.2  构建Spring Boot应用helloworld 31

3.2.1  创建第一个Spring Boot工程 32

3.2.2  创建RESTful API服务 33

3.3  Web开发基础 35

3.3.1  @Controller和@RestController 35

3.3.2  @RequestMapping 37

3.3.3  @ResponseBody 37

3.4  优雅的数据返回 38

3.4.1  为什么要统一返回值 38

3.4.2  统一数据返回 39

3.4.3  全局异常处理 44

3.5  系统配置文件 46

3.5.1  application.properties 46

3.5.2  application.yml 48

3.5.3  实战:自定义系统的启动图案 50

3.6  实战:实现系统多环境配置 52

3.6.1  多环境配置 52

3.6.2  系统环境切换 53

3.7  本章小结 55

3.8  本章练习 55

第4章  Eureka注册中心 56

4.1  Eureka简介 56

4.1.1  什么是注册中心 56

4.1.2  为什么需要注册中心 57

4.1.3  什么是Eureka 58

4.1.4  Eureka的架构原理 58

4.1.5  Eureka还是ZooKeeper 60

4.2  搭建Eureka注册中心 63

4.2.1  搭建Eureka注册中心 64

4.2.2  构建服务提供者 66

4.2.3  构建服务消费者 68

4.3  玩转Eureka 71

4.3.1  自我保护模式 71

4.3.2  如何优雅地停服 73

4.3.3  安全认证 74

4.3.4  健康检查 75

4.4  高可用Eureka注册中心(Eureka集群) 78

4.4.1  Eureka集群架构原理 78

4.4.2  搭建高可用的Eureka集群 79

4.5  本章小结 81

4.6  本章练习 81

第5章  Ribbon实现客户端负载均衡 82

5.1  Ribbon简介 82

5.1.1  什么是Ribbon 82

5.1.2  Ribbon的核心组件 84

5.1.3  Ribbon的工作原理 84

5.2  Ribbon的使用 85

5.2.1  使用Ribbon实现负载均衡 85

5.2.2  超时机制 87

5.2.3  重试机制 88

5.2.4  饥饿加载 90

5.3  Ribbon负载均衡策略 90

5.3.1  负载均衡算法 91

5.3.2  配置负载均衡算法 92

5.3.3  自定义负载均衡算法 93

5.4  本章小结 94

5.5  本章练习 95

第6章  Feign服务调用 96

6.1  Feign简介 96

6.1.1  Feign是什么 96

6.1.2  Feign用于解决什么问题 97

6.1.3  Feign的工作原理 98

6.2  Feign的使用 99

6.2.1  使用Feign调用服务 99

6.2.2  @FeignClient注解参数 101

6.2.3  Feign的自定义配置 102

6.3  Feign的拦截器、编解码器和异常处理 103

6.3.1  Feign的拦截器 103

6.3.2  Feign的编码器 104

6.3.3  Feign的解码器 104

6.3.4  Feign的异常处理 105

6.4  实际工程中的Feign实践 105

6.4.1  超时设置 105

6.4.2  开启日志 106

6.4.3  使用OKHttp3提升性能 106

6.4.4  开启GZIP压缩 107

6.5  本章小结 107

6.6  本章练习 108

第7章  Hystrix的限流、降级和熔断 109

7.1  Hystrix简介 109

7.1.1  什么是服务雪崩效应 109

7.1.2  什么是Hystrix 110

7.1.3  Hystrix的功能特性 111

7.1.4  什么是服务的限流、降级和熔断 112

7.2  Hystrix的设计原理 112

7.2.1  Hystrix的工作流程 112

7.2.2  Hystrix的熔断设计 114

7.2.3  Hystrix的隔离设计 114

7.2.4  Hystrix的超时机制设计 115

7.3  Hystrix的使用 116

7.3.1  Hystrix的常用注解 116

7.3.2  使用@HystrixCommand注解实现服务容错 118

7.3.3  Hystrix实现服务资源隔离 120

7.3.4  Hystrix与Feign结合使用 121

7.4  Hystrix Dashboard服务监控 123

7.4.1  Hystrix Dashboard简介 123

7.4.2  搭建Hystrix Dashboard监控服务 124

7.4.3  使用Hystrix Dashboard服务监控平台 125

7.5  本章小结 127

7.6  本章练习 127

第8章  构建微服务网关Spring Cloud Gateway 128

8.1  微服务网关简介 128

8.1.1  什么是微服务网关 128

8.1.2  为什么需要微服务网关 129

8.1.3  微服务网关的核心功能 130

8.1.4  微服务网关与传统API网关的区别 131

8.1.5  当前流行的微服务网关 131

8.2  使用Spring Cloud Gateway构建微服务网关 133

8.2.1  Spring Cloud Gateway简介 133

8.2.2  Spring Cloud Gateway的工作流程 134

8.2.3  搭建Spring Cloud Gateway微服务网关 135

8.2.4  使用Java Bean配置Gateway路由 137

8.3  路由和断言 137

8.3.1  服务名路由转发 137

8.3.2  断言 138

8.4  过滤器 139

8.4.1  什么是过滤器 139

8.4.2  使用过滤器实现权限验证 139

8.5  本章小结 141

8.6  本章练习 142

第9章  配置中心Spring Cloud Config 143

9.1  配置中心简介 143

9.1.1  什么是配置中心 143

9.1.2  配置中心的作用 144

9.1.3  为什么需要配置中心 145

9.1.4  当前流行的微服务配置中心 146

9.2  Spring Cloud Config简介 147

9.2.1  什么是Spring Cloud Config 147

9.2.2  Spring Cloud Config的工作原理 148

9.3  使用Spring Cloud Config构建配置中心 149

9.3.1  创建配置中心服务端 149

9.3.2  创建配置中心客户端 152

9.3.3  配置文件命名规则 153

9.4  实现配置动态刷新 154

9.4.1  技术方案 155

9.4.2  Spring Cloud Bus简介 155

9.4.3  使用Spring Cloud Bus实现配置动态刷新 156

9.5  本章小结 158

9.6  本章练习 158

第10章  微服务的统一认证和授权 159

10.1  微服务安全概览 159

10.1.1  认证和授权在微服务中的重要性 159

10.1.2  微服务下认证和授权的挑战 160

10.1.3  常见的认证和授权解决方案 161

10.2  OAuth 2.0简介 165

10.2.1  什么是OAuth 2.0 165

10.2.2  OAuth 2.0的使用场景 166

10.2.3  OAuth 2.0的基本流程 167

10.2.4  OAuth 2.0的授权模式 168

10.3  Spring Cloud如何实现认证和授权 168

10.3.1  实现方案 168

10.3.2  准备工作 170

10.3.3  搭建认证和授权服务 170

10.3.4  网关集成认证和授权 175

10.3.5  搭建订单管理服务 179

10.3.6  测试验证 181

10.4  本章小结 184

10.5  本章练习 184

第11章  集成Prometheus+Grafana监控服务 185

11.1  监控系统简介 185

11.1.1  什么是监控系统 185

11.1.2  监控系统的作用 185

11.1.3  监控系统的架构组件 186

11.1.4  当前流行的监控系统 187

11.2  使用Prometheus+Grafana搭建监控系统 190

11.2.1  Prometheus的组件结构 190

11.2.2  安装Prometheus Server 191

11.2.3  安装Node Exporter 191

11.2.4  安装Grafana 194

11.3  使用Prometheus监控Spring Boot的应用 198

11.3.1  如何监控Spring Boot应用 198

11.3.2  Spring Boot集成Micrometer实现数据采集 199

11.3.3  Prometheus收集应用数据并展示到Grafana 200

11.3.4  Spring Boot自定义监控指标 204

11.4  使用Grafana实现配置监控告警 206

11.4.1  告警的实现方式 206

11.4.2  配置Grafana告警 207

11.5  使用Alertmanager实现监控告警 211

11.5.1  Alertmanager的配置和安装 211

11.5.2  实现Alertmanager告警 213

11.6  本章小结 216

11.7  本章练习 216

第12章  微服务全链路跟踪SkyWalking 217

12.1  全链路追踪简介 217

12.1.1  什么是全链路追踪 217

12.1.2  为什么需要全链路追踪 218

12.1.3  全链路追踪的实现原理 219

12.1.4  当前流行的全链路追踪组件 220

12.2  SkyWalking简介 223

12.2.1  什么是SkyWalking 223

12.2.2  为什么要选择SkyWalking 224

12.2.3  SkyWalking的组件架构 225

12.3  搭建SkyWalking系统 225

12.3.1  搭建SkyWalking服务端 226

12.3.2  SkyWalking的使用及指标参数 228

12.4  Spring Boot项目如何接入SkyWalking 236

12.4.1  Agent简介 236

12.4.2  下载Agent 237

12.4.3  如何使用Agent 238

12.4.4  Spring Boot集成SkyWalking 239

12.5  本章小结 240

12.6  本章练习 241

第13章  使用Docker和Docker Compose实现容器化部署 242

13.1  Docker入门 242

13.1.1  Docker简介 242

13.1.2  Docker的常用命令 244

13.1.3  Spring Boot项目添加Docker支持 246

13.1.4  构建、运行Docker镜像 248

13.2  Docker Compose入门 249

13.2.1  Docker Compose简介 250

13.2.2  Docker Compose的安装 250

13.2.3  Docker Compose的常用命令 251

13.2.4  Docker Compose配置文件 252

13.3  使用Docker Compose编排Spring Cloud微服务 254

13.3.1  准备工作 254

13.3.2  打包Docker镜像 254

13.3.3  Docker Compose运行镜像 255

13.4  本章小结 257

13.5  本章练习 257

第14章  项目实战:从零开始实现图书管理系统 258

14.1  项目介绍 258

14.1.1  项目背景 258

14.1.2  项目目标 259

14.2  系统架构 259

14.2.1  技术选型 259

14.2.2  架构设计 260

14.2.3  功能模块说明 260

14.2.4  服务拆分和划分 261

14.3  搭建系统框架 261

14.3.1  项目结构 262

14.3.2  创建父工程 262

14.3.3  创建注册中心 264

14.3.4  创建微服务网关 265

14.3.5  创建配置中心 266

14.4  实现模块功能 268

14.4.1  创建认证和授权服务 268

14.4.2  创建系统管理服务 272

14.4.3  创建图书管理服务 274

14.4.4  创建借书管理服务 276

14.5  系统演示 279

14.6  本章小结 282