《重新定义Spring Cloud实战》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:许进,叶志远,钟尊发,蔡波斯,方志明,郭芳碧,朱德明著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111609391
  • 页数:636 页
图书介绍:本书涵盖了Spring Cloud微服务体系中的常用组件,如:Eureka、Config、Ribbon、Zuul、Hystrix、Consul、Feign等,从入门到实战,再从实战到精通,步步为营,引导读者完全掌握。此外,本书基于最新版本Finchley,还特别介绍了全新的基于Netty的网关项目Spring Cloud Gateway,以及Spring Cloud与gRPC的整合方式、版本控制与灰度发布、容器化、认证与鉴权、Dubbo到Spring Cloud的迁移、分布式事务、领域驱动等生产级实用解决方案,为IT企业在微服务化的道路中保驾护航。

第1章 微服务与Spring Cloud 1

1.1 微服务架构概述 1

1.1.1 应用架构的发展 1

1.1.2 微服务架构 3

1.1.3 微服务解决方案 4

1.2 Spring Cloud与中间件 5

1.2.1 中间件概述 5

1.2.2 什么是Spring Cloud 5

1.2.3 Spring Cloud项目模块 5

1.2.4 Spring Cloud与服务治理中间件 6

1.2.5 Spring Cloud与配置中心中间件 6

1.2.6 Spring Cloud与网关中间件 8

1.2.7 Spring Cloud与全链路监控中间件 9

1.3 Spring Cloud增强生态 10

1.3.1 Spring Cloud分布式事务 10

1.3.2 Spring Cloud与领域驱动 10

1.3.3 Spring Cloud与gRPC 11

1.3.4 Spring Cloud与Dubbo生态融合 11

1.4 本章小结 11

第2章 Spring Cloud Eureka上篇 12

2.1 服务发现概述 12

2.1.1 服务发现由来 12

2.1.2 Eureka简介 14

2.1.3 服务发现技术选型 15

2.2 Spring Cloud Eureka入门案例 16

2.3 Eureka Server的REST API简介 20

2.3.1 REST API列表 20

2.3.2 REST API实例 20

2.4 本章小结 26

第3章 Spring Cloud Eureka下篇 27

3.1 Eureka的核心类 27

3.1.1 InstanceInfo 27

3.1.2 LeaseInfo 28

3.1.3 ServiceInstance 29

3.1.4 InstanceStatus 29

3.2 服务的核心操作 30

3.2.1 概述 30

3.2.2 LeaseManager 30

3.2.3 LookupService 31

3.3 Eureka的设计理念 31

3.3.1 概述 31

3.3.2 AP优于CP 32

3.3.3 Peer to Peer架构 33

3.3.4 Zone及Region设计 34

3.3.5 SELF PRESERVATION设计 36

3.4 Eureka参数调优及监控 36

3.4.1 核心参数 36

3.4.2 参数调优 39

3.4.3 指标监控 41

3.5 Eureka实战 42

3.5.1 Eureka Server在线扩容 42

3.5.2 构建Multi Zone Eureka Server 47

3.5.3 支持Remote Region 52

3.5.4 开启HTTP Basic认证 58

3.5.5 启用https 61

3.5.6 Eureka Admin 66

3.5.7 基于metadata路由实例 67

3.6 Eureka故障演练 69

3.6.1 Eureka Server全部不可用 69

3.6.2 Eureka Server部分不可用 71

3.6.3 Eureka高可用原理 73

3.7 本章小结 74

第4章 Spring Cloud Feign的使用扩展 75

4.1 Feign概述 75

4.1.1 什么是Feign 75

4.1.2 Feign的入门案例 76

4.1.3 Feign的工作原理 78

4.2 Feign的基础功能 79

4.2.1 FeignClient注解剖析 79

4.2.2 Feign开启GZIP压缩 79

4.2.3 Feign支持属性文件配置 80

4.2.4 Feign Client开启日志 81

4.2.5 Feign的超时设置 82

4.3 Feign的实战运用 83

4.3.1 Feign默认Client的替换 83

4.3.2 Feign的Post和Get的多参数传递 86

4.3.3 Feign的文件上传 90

4.3.4 解决Feign首次请求失败问题 92

4.3.5 Feign返回图片流处理方式 93

4.3.6 Feign调用传递Token 93

4.4 venus-cloud-feign设计与使用 94

4.4.1 venus-cloud-feign的设计 94

4.4.2 venus-cloud-feign的使用 96

4.5 本章小结 98

第5章 Spring Cloud Ribbon实战运用 99

5.1 Spring Cloud Ribbon概述 99

5.1.1 Ribbon与负载均衡 99

5.1.2 入门案例 100

5.2 Spring Cloud Ribbon实战 105

5.2.1 Ribbon负载均衡策略与自定义配置 105

5.2.2 Ribbon超时与重试 107

5.2.3 Ribbon的饥饿加载 108

5.2.4 利用配置文件自定义Ribbon客户端 108

5.2.5 Ribbon脱离Eureka的使用 108

5.3 Spring Cloud Ribbon进阶 109

5.3.1 核心工作原理 109

5.3.2 负载均衡策略源码导读 113

5.4 本章小结 114

第6章 Spring Cloud Hystrix实战运用 115

6.1 Spring Cloud Hystrix概述 115

6.1.1 解决什么问题 116

6.1.2 设计目标 117

6.2 Spring Cloud Hystrix实战运用 118

6.2.1 入门示例 118

6.2.2 Feign中使用断路器 120

6.2.3 Hystrix Dashboard 121

6.2.4 Turbine聚合Hystrix 124

6.2.5 Hystrix异常机制和处理 126

6.2.6 Hystrix配置说明 128

6.2.7 Hystrix线程调整和计算 129

6.2.8 Hystrix请求缓存 130

6.2.9 Hystrix Request Collapser 134

6.2.10 Hystrix线程传递及并发策略 137

6.2.11 Hystrix命令注解 142

6.3 本章小结 144

第7章 Spring Cloud Zuul基础篇 145

7.1 Spring Cloud Zuul概述 145

7.2 Spring Cloud Zuul入门案例 146

7.3 Spring Cloud Zuul典型配置 149

7.3.1 路由配置 149

7.3.2 功能配置 152

7.4 本章小结 154

第8章 Spring Cloud Zuul中级篇 155

8.1 Spring Cloud Zuul Filter链 155

8.1.1 工作原理 155

8.1.2 Zuul原生Filter 158

8.1.3 多级业务处理 160

8.1.4 使用Groovy编写Filter 165

8.2 Spring Cloud Zuul权限集成 168

8.2.1 应用权限概述 168

8.2.2 Zuul+OAuth2.0+JWT实战 169

8.3 Spring Cloud Zuul限流 176

8.3.1 限流算法 176

8.3.2 限流实战 177

8.4 Spring Cloud Zuul动态路由 179

8.4.1 动态路由概述 179

8.4.2 动态路由实现原理剖析 180

8.4.3 基于DB的动态路由实战 182

8.5 Spring Cloud Zuul灰度发布 185

8.5.1 灰度发布概述 185

8.5.2 灰度发布实战之一 186

8.6 Spring Cloud Zuul文件上传 189

8.6.1 文件上传实战 189

8.6.2 文件上传乱码解决 191

8.7 Spring Cloud Zuul实用小技巧 192

8.7.1 饥饿加载 192

8.7.2 请求体修改 192

8.7.3 使用okhttp替换HttpClient 193

8.7.4 重试机制 194

8.7.5 Header传递 195

8.7.6 整合Swagger2调试源服务 195

8.8 本章小结 197

第9章 Spring Cloud Zuul高级篇 198

9.1 Spring Cloud Zuul多层负载 198

9.1.1 痛点场景 198

9.1.2 解决方案 198

9.2 Spring Cloud Zuul应用优化 200

9.2.1 概述 200

9.2.2 容器优化 201

9.2.3 组件优化 202

9.2.4 JVM参数优化 203

9.2.5 内部优化 204

9.3 Spring Cloud Zuul原理&核心源码解析 205

9.3.1 工作原理与生命周期 205

9.3.2 Filter装载与Filter链实现 208

9.3.3 核心路由实现 210

9.4 本章小结 213

第10章 Spring Cloud基础综合案例 214

10.1 基础框架 214

10.1.1 搭建说明 214

10.1.2 技术方案 214

10.1.3 具体实现 215

10.2 实战扩展 217

10.2.1 公共包(对象,拦截器,工具类等) 218

10.2.2 用户上下文对象传递 218

10.2.3 Zuul的Fallback机制 221

10.3 生产环境各组件参考配置 222

10.3.1 Eureka推荐配置 222

10.3.2 Ribbon推荐配置 223

10.3.3 Hystrix推荐配置 223

10.3.4 Zuul推荐配置 223

10.4 本章小结 224

第11章 Spring Cloud Config上篇 225

11.1 Spring Cloud Config配置中心概述 225

11.1.1 什么是配置中心 225

11.1.2 Spring Cloud Config 227

11.1.3 Spring Cloud Config入门案例 228

11.2 刷新配置中心信息 234

11.2.1 手动刷新操作 234

11.2.2 结合Spring Cloud Bus热刷新 237

11.3 本章小结 244

第12章 Spring Cloud Config下篇 245

12.1 服务端Git配置详解与实战 245

12.1.1 Git多种配置详解概述 245

12.1.2 Git中URI占位符 245

12.1.3 模式匹配和多个存储库 250

12.1.4 路径搜索占位符 251

12.2 关系型数据库的配置中心的实现 251

12.2.1 Spring Cloud Config基于MySQL的配置概述 251

12.2.2 Spring Cloud Config与MySQL结合案例 252

12.3 非关系型数据库的配置中心的实现 255

12.3.1 Spring Cloud Config基于MongoDB的配置概述 255

12.3.2 Spring Cloud Config MongoDB案例 256

12.4 Spring Cloud Config使用技能 259

12.5 Spring Cloud Config功能扩展 260

12.5.1 客户端自动刷新 260

12.5.2 客户端回退功能 264

12.5.3 客户端的安全认证机制JWT 270

12.6 高可用部分 285

12.6.1 客户端高可用 285

12.6.2 服务端高可用 293

12.7 Spring Cloud与Apollo配置使用 300

12.7.1 Apollo简介 300

12.7.2 Apollo具备功能 300

12.7.3 Apollo总体架构模块 300

12.7.4 客户端设计 301

12.7.5 Apollo运行环境方式 302

12.8 Spring Cloud与Apollo结合使用实战 303

12.8.1 Apollo环境的要求 303

12.8.2 Apollo基础数据导入 303

12.8.3 创建config-client-apollo 307

12.8.4 创建gateway-zuul-apollo 310

12.9 本章总结 316

第13章 Spring Cloud Consul上篇 317

13.1 Consul简介 317

13.1.1 什么是Consul 317

13.1.2 Consul能做什么 317

13.1.3 Consul的安装 318

13.1.4 Consul启动 318

13.1.5 Consul UI 319

13.1.6 Consul实用接口 319

13.2 Spring Cloud Consul简介 319

13.2.1 Spring Cloud Consul是什么 319

13.2.2 Spring Cloud Consul能做什么 320

13.2.3 Spring Cloud Consul入门案例 320

13.3 本章小节 324

第14章 Spring Cloud Consul下篇 325

14.1 Spring Cloud Consul深入 325

14.1.1 Spring Cloud Consul的模块介绍 325

14.1.2 Spring Cloud Consul Discovery 325

14.1.3 Spring Cloud Consul Config 332

14.2 Spring Cloud Consul功能重写 335

14.2.1 重写ConsulDiscoveryClient 335

14.2.2 重写Consul ServerList 338

14.3 常见问题排查 343

14.3.1 版本兼容的那些坑 343

14.3.2 Spring Cloud Consul的一些问题 344

14.4 本章小节 346

第15章 Spring Cloud认证和鉴权 347

15.1 微服务安全与权限 347

15.2 Spring Cloud认证与鉴权方案 348

15.2.1 单体应用下的常用方案 348

15.2.2 微服务下SSO单点登录方案 348

15.2.3 分布式Session与网关结合方案 349

15.2.4 客户端Token与网关结合方案 349

15.2.5 浏览器Cookie与网关结合方案 350

15.2.6 网关与Token和服务间鉴权结合 350

15.3 Spring Cloud认证鉴权实战案例 351

15.3.1 创建Spring Cloud Gateway及关联信息 351

15.3.2 核心的公共工程core-service 353

15.3.3 服务提供方工程provider-service 355

15.3.4 客户端工程client-service 356

15.3.5 运行结果 356

15.4 本章小结 358

第16章 Spring Cloud全链路监控 359

16.1 全链路监控概述 359

16.1.1 链路监控的原理来源 359

16.1.2 Sleuth原理介绍 360

16.1.3 Brave和Zipkin 360

16.2 Sleuth基本用法 362

16.2.1 Sleuth对Feign的支持 365

16.2.2 Sleuth对RestTemplate的支持 366

16.2.3 Sleuth对多线程的支持 367

16.3 Sleuth深入用法 367

16.3.1 TraceFilter 367

16.3.2 Baggage 367

16.3.3 案例 367

16.4 Spring Cloud与SkyWalking 369

16.4.1 Skywalking概述 369

16.4.2 SkyWalking提供主要功能 370

16.4.3 SkyWalking主要特性 370

16.4.4 SkyWalking整体架构 370

16.5 Spring Cloud与Skywalking实战 370

16.5.1 父工程创建 371

16.5.2 创建eureka-server-skywalking工程 372

16.5.3 创建zuul-skywalking 373

16.5.4 创建service-a 375

16.5.5 创建service-b 377

16.5.6 SkyWalking Collector基础环境安装 378

16.5.7 使用Agent启动服务和监控查看 382

16.5.8 总结 385

16.6 Spring Cloud与Pinpoint 386

16.6.1 Pinpoint概述 386

16.6.2 Pinpoint架构模块 386

16.6.3 Pinpoint的数据结构 386

16.6.4 Pinpoint兼容性 387

16.7 Spring Cloud与Pinpoint实战 389

16.7.1 Pinpoint基础环境 389

16.7.2 Collector和Web部署 391

16.7.3 Agent启动应用 392

16.7.4 Ul浏览指标 394

16.7.5 总结 397

16.8 本章总结 398

第17章 Spring Cloud Gateway上篇 399

17.1 Spring Cloud Gateway概述 399

17.1.1 什么是Spring Cloud Gateway 399

17.1.2 Spring Cloud Gateway的核心概念 399

17.2 Spring Cloud Gateway的工作原理 400

17.3 Spring Cloud Gateway入门案例 401

17.4 Spring Cloud Gateway的路由断言 404

17.4.1 After路由断言工厂 404

17.4.2 Before路由断言工厂 406

17.4.3 Between路由断言工厂 406

17.4.4 Cookie路由断言工厂 407

17.4.5 Header路由断言工厂 408

17.4.6 Host路由断言工厂 410

17.4.7 Method路由断言工厂 411

17.4.8 Query路由断言工厂 411

17.4.9 RemoteAddr路由断言工厂 412

17.5 Spring Cloud Gateway的内置Filter 413

17.5.1 AddRequestHeader过滤器工厂 413

17.5.2 AddRequestParameter过滤器 413

17.5.3 RewritePath过滤器 414

17.5.4 AddResponseHeader过滤器 415

17.5.5 StripPrefix过滤器 416

17.5.6 Retry过滤器 417

17.5.7 Hystrix过滤器 418

17.6 本章小结 420

第18章 Spring Cloud Gateway下篇 421

18.1 Gateway基于服务发现的路由规则 421

18.1.1 Gateway的服务发现路由概述 421

18.1.2 服务发现的路由规则案例 422

18.2 Gateway Filter和Global Filter 425

18.2.1 Gateway Filter和Global Filter概述 425

18.2.2 自定义Gateway Filter案例 425

18.2.3 自定义Global Filter案例 427

18.3 Spring Cloud Gateway实战 428

18.3.1 Spring Cloud Gateway权重路由 428

18.3.2 Spring Cloud Gateway中Https的使用技巧 431

18.3.3 Spring Cloud Gateway集成Swagger 436

18.3.4 Spring Cloud Gateway限流 442

18.3.5 Spring Cloud Gateway的动态路由 450

18.4 Spring Cloud Gateway源码篇 458

18.4.1 Spring Cloud Gateway的处理流程 458

18.4.2 Gateway中ServerWebExchange构建分析 459

18.4.3 DispatcherHandler源码分析 460

18.4.4 RoutePredicateHandlerMapping源码分析 461

18.4.5 FilteringWebHandler源码分析 462

18.4.6 执行Filter源码分析 463

18.5 本章小结 465

第19章 Spring Cloud与gRPC上篇 466

19.1 Spring Cloud为什么需要gRPC 466

19.2 gRPC简介 468

19.3 gRPC的一些核心概念 469

19.3.1 服务定义 469

19.3.2 使用API 470

19.3.3 同步vs异步 470

19.4 RPC的生命周期 470

19.5 gRPC依赖于Protocol Buffers 472

19.5.1 Protocol Buffers的特点 472

19.5.2 使用Protocol Buffers的Maven插件 472

19.5.3 Proto Buffer语法介绍 475

19.6 gRPC基于HTTP2 476

19.7 gRPC基于Netty进行IO处理 477

19.8 gRPC案例实战 478

19.9 本章小结 481

第20章 gRPC在Spring Cloud与gRPC下篇 482

20.1 gRPC Spring Boot Starter介绍 482

20.2 gRPC Spring Boot Starter架构设计 482

20.3 gRPC Spring Boot Starter源码分析 483

20.3.1 gRPC Server Spring Boot Starter源码解析 483

20.3.2 gRPC Client Spring Boot Starter源码解析 486

20.4 案例实战 489

20.4.1 注册中心 489

20.4.2 链路追踪服务端 490

20.4.3 gRPC的lib工程 490

20.4.4 gRPC服务端 491

20.4.5 gRPC客户端 494

20.5 本章小结 497

第21章 Spring Cloud版本控制与灰度发布 498

21.1 背景 498

21.2 常见发布方式 499

21.2.1 蓝绿发布 499

21.2.2 滚动发布 500

21.2.3 灰度发布 500

21.2.4 对比 501

21.3 版本控制与灰度发布实战 502

21.3.1 Discovery项目 503

21.3.2 实战案例 504

21.3.3 实战测试 505

21.4 本章小结 509

第22章 Spring Cloud容器化 510

22.1 Java服务Docker化 510

22.1.1 基础镜像选择 510

22.1.2 Dockerfile编写 511

22.1.3 镜像构建插件 514

22.1.4 JDK8+的Docker支持 516

22.1.5 JDK9+镜像优化 517

22.2 Spring Cloud组件的Docker化 519

22.2.1 Docker化配置 519

22.2.2 config-server的Docker化 520

22.2.3 eureka-server的Docker化 522

22.2.4 gateway的Docker化 524

22.2.5 turbine的Docker化 526

22.2.6 Spring Admin的Docker化 528

22.2.7 biz-service的Docker化 530

22.2.8 网卡选择 532

22.2.9 小结 532

22.3 使用Kubernetes管理 532

22.3.1 概述 532

22.3.2 本地安装Kubernetes 533

22.3.3 部署到Kubernetes 536

22.3.4 一键伸缩 544

22.3.5 滚动升级 547

22.4 本章小结 552

第23章 Dubbo向Spring Cloud迁移 553

23.1 将Dubbo服务纳入Spring Cloud体系中 553

23.1.1 将 Dubbo项目改造成Spring Boot项目 553

23.1.2 集成Spring Cloud组件 554

23.1.3 将Dubbo服务暴露为RESTful API 555

23.2 将Spring Cloud服务Dubbo化 556

23.2.1 服务注册中心 556

23.2.2 服务提供者 556

23.2.3 服务消费者 558

23.2.4 Spring Cloud Dubbo框架原理 561

23.3 本章小结 562

第24章 Spring Cloud与分布式事务 563

24.1 概述 563

24.1.1 ACID 563

24.1.2 X/Open DTP模型与XA接口 564

24.1.3 CAP与BASE定理 567

24.2 解决方案 567

24.2.1 Java事务编程接口JTA 567

24.2.2 分布式事务TCC模式 568

24.2.3 分布式事务SAGA模式 570

24.3 实战 572

24.3.1 Atomikos JTA 572

24.3.2 TCC for REST 580

24.3.3 Servicecomb SAGA 594

24.4 本章小结 603

第25章 Spring Cloud与领域驱动实践 604

25.1 领域驱动概述 604

25.1.1 Spring Cloud与领域驱动 604

25.1.2 为什么需要领域建模 605

25.2 领域驱动核心概念 606

25.2.1 实体概述 606

25.2.2 值对象概述 606

25.2.3 领域服务 607

25.2.4 聚合及聚合根 607

25.2.5 边界上下文 608

25.2.6 工厂 609

25.2.7 仓储/资源库 609

25.2.8 CQRS架构 610

25.2.9 领域事件 610

25.2.10 领域驱动模型的设计步骤 611

25.3 Halo框架的设计 611

25.3.1 DDD应用框架的意义 611

25.3.2 领域驱动框架现状 612

25.3.3 Halo框架概述 612

25.3.4 Halo框架分层设计 613

25.3.5 Halo框架中的CQRS设计 615

25.3.6 Command与Command Bus设计 616

25.3.7 Event与Event Bus设计 619

25.3.8 Extend扩展点设计 621

25.3.9 业务身份设计 623

25.3.10 规范设计 624

25.4 Spring Cloud与Halo实战 625

25.4.1 事件风暴寻找模型和聚合 625

25.4.2 Spring Cloud与Halo实战案例 626

25.4.3 新建二方包工程模块 627

25.4.4 新建DDD基础设施层 629

25.4.5 新建DDD领域层 630

25.4.6 新建DDD应用层 632

25.4.7 启动测试 634

25.5 本章小结 634