《Spring Cloud微服务和 分布式系统实践》即将印刷和出版

我经过一年多的沉寂,

我的新书《Spring Cloud微服务和分布式系统实践》即将发版,预计这个月底可以销售了

全书大约514页,还算一本挺厚的书籍,不过价格未定,按人邮出版社的估计大约是118到138元之间。

给个封面看看呗,和我的《深入浅出Spring Boot 2.x》也是接近的,编辑说作为捆绑为一套一起卖好了。

写得很累,Spring Cloud学习真心累,主要是版本更新很快,东西也很多,我用的是采用的Spring Boot版本为2.1.0,Spring Cloud的版本为Greenwich.RELEASE。到现在又过时了,最新是Spring Boot 2.2.5和Spring Cloud Hoxton.SR3。但是没办法跟官网节奏,编完稿件到出版还是需要4个月左右,这段时间官网又更新新版本。

内容主要是常用的Spring Cloud组件,组件太多,真心学不完,只能介绍主要的。主要组件介绍详实,次要组件适当介绍,这就是书的特色。主要是服务注册发现(Eureka)、服务调用(Ribbon和OpenFeign)、断路器(Hystrix和Resilience4j )、网关(Zuul和Gateway)、配置(Config)、全链路监控(Sleuth)和Spring Boot检测(Admin)。

据说Hystrix停止新功能开发,我就自己学了Resilience4j ,然后搞进书里,感觉它比Hystrix简单和灵活,也是Spring Cloud官方推荐新的短路工具。

书里加入了一些常见分布式的内容,毕竟微服务是分布式的一种,必然会带有分布式的缺陷。为了更好的让大家学习,解决一些实践问题,书里加入了不少分布式的内容,接近200页的内容,而且尽量给出源码,而不是只空谈理论。毕竟很多码农也不容易,搞完微服务,还要考虑分布式数据库,缓存和会话等,不如这本书就一起囊括了,这样应该更贴近大家的需要吧。内容包含:

发号机制、分布式数据库和分布式数据库事务(强一致性和弱一致性)、分布式缓存(Redis实现)、分布式会话和权限,远程过程调用(RPC,主要讲Apache Thrift)。

写这本书 内容是自己感兴趣的,只是累觉不爱,版本更新快,内容多,又复杂,不过很多微服务和分布式的思想还是很值得我们参考的。

我当前在做什么?

目前我在更新我的大砖头《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》,这是一本行业基础书。当前修复旧版更新到Spring 5的版本,更新MyBatis最新版本和Redis版本,并且加入Spring微服务(Spring Boot和Spring Cloud)的内容,跟上时代。全书大修30%-40%的内容。由于很厚,所以需要半年左右时间,搞了4个多月了,也快到了收官的阶段,可以肯定地说胜利就在前方。到时候再搞点课程,嘿嘿。

最后给一下新书的目录:

目  录

第一部分  概述和基础

第1章  分布式和微服务概述 3

1.1  互联网系统的特征 4

1.2  分布式系统概述 4

1.2.1  分布式的切分方法 5

1.2.2  分布式系统所面临的问题 8

1.2.3  分布式的衡量标准 9

1.3  分布式系统的设计原则 10

1.3.1  CAP原则 10

1.3.2  BASE理论 11

1.4  微服务架构 12

1.4.1  概述 12

1.4.2  微服务的风格 12

1.4.3  微服务和分布式系统的关系 15

1.5  Spring Cloud 15

1.5.1  Spring Cloud的各个组件的简介 16

1.5.2  Spring Cloud版本说明 16

1.6  微服务系统样例简介 17

第2章  技术基础 19

2.1  Spring Boot 19

2.1.1  创建Spring Boot工程 19

2.1.2  Spring Boot开发简介 21

2.1.3  多文件配置 25

2.1.4  打包和运行 27

2.1.5  Spring Boot监控 28

2.1.6  Spring Boot小结 29

2.2  REST风格简介 29

2.2.1  REST风格概述 30

2.2.2  REST风格端点开发 31

2.2.3  状态码和响应头 35

2.2.4  客户端RestTemplate的使用 38

第二部分  Spring Cloud微服务

第3章  服务治理——Eureka 43

3.1  服务治理中心 43

3.1.1  搭建Eureka服务治理中心 43

3.1.2  服务发现 47

3.1.3  多个服务治理中心实例 51

3.2  Eureka治理机制 54

3.2.1  基础架构 54

3.2.2  服务治理中心工作原理 57

3.2.3  Region和Zone 60

3.2.4  Eureka关键源码解读 62

3.2.5  Eureka使用注意点 69

3.3  Eureka配置 69

3.3.1  客户端服务注册配置 70

3.3.2  客户端服务实例配置 71

第4章  客户端负载均衡——Ribbon 73

4.1  负载均衡概述 73

4.2  初识Ribbon 74

4.2.1  Ribbon概述 74

4.2.2  Ribbon是如何实现负载
均衡的 75

4.3  Ribbon负载均衡器和策略 80

4.3.1  负载均衡器 80

4.3.2  负载均衡策略 84

4.4  Ribbon服务实例清单维护 93

4.4.1  获取服务实例清单 94

4.4.2  更新服务实例清单 96

4.4.3  服务实例的心跳监测 97

4.4.4  IPing接口 99

4.5  自定义Ribbon客户端 100

4.5.1  全局配置 101

4.5.2  局部定义 101

4.6  Ribbon使用实践 103

第5章  断路器——Hystrix 105

5.1  概述 105

5.1.1  熔断的概念 105

5.1.2  服务降级 107

5.1.3  Hystrix的功能简介 108

5.2  入门实例 108

5.3  Hystrix工作原理 112

5.3.1  Hystrix命令 113

5.3.2  缓存 114

5.3.3  断路器 115

5.3.4  隔离 119

5.4  Hystrix实践 122

5.4.1  使用Hystrix命令 123

5.4.2  请求缓存 129

5.4.3  请求合并 137

5.4.4  线程池划分 145

5.5  仪表盘 146

5.5.1  单体监控 147

5.5.2  Turbine聚合监控 151

5.6  Hystrix属性配置 153

5.6.1  命令属性配置 154

5.6.2  线程池属性配置 157

第6章  新断路器——Resilience4j 158

6.1  断路器(CircuitBreaker) 160

6.1.1  断路器配置和注册机 160

6.1.2  断路器的状态 162

6.1.3  使用断路器的实例 162

6.1.4  异常处理 165

6.1.5  拾遗 166

6.2  限速器(RateLimiter) 168

6.2.1  使用实践 168

6.2.2  拾遗 170

6.3  舱壁隔离(Bulkhead) 171

6.3.1  使用舱壁隔离 171

6.3.2  拾遗 173

6.4  重试器(Retry) 173

6.4.1  使用重试机制 173

6.4.2  拾遗 175

6.5  缓存(Cache) 176

6.5.1  使用Resilience4j缓存 176

6.5.2  拾遗 178

6.6  时间限制器(TimeLimiter) 178

6.7  组件混用 179

6.8  使用Spring Boot 2的配置方式 181

6.8.1  通过配置创建断路器 181

6.8.2  通过配置创建限速器 183

第7章  声明式调用——OpenFeign 185

7.1  OpenFeign的使用 186

7.1.1  入门实例 186

7.1.2  常见的传参场景 188

7.1.3  OpenFeign客户端接口的
继承 190

7.1.4  OpenFeign客户端的配置 191

7.1.5  OpenFeign的全局配置 197

7.2  配置Hystrix 199

7.2.1  使用服务降级 200

7.2.2  Hystrix中关于OpenFeign的
其他配置 203

7.2.3  使用建议 204

7.3  使用Resilience4j调用OpenFeign
接口 204

第8章  旧API网关——Zuul 207

8.1  什么是网关 208

8.2  Zuul入门实例 209

8.3  Zuul原理——过滤器 211

8.3.1  过滤器设计和责任链 211

8.3.2  开发过滤器 214

8.3.3  Zuul自动装配的过滤器 218

8.4  限流 220

8.4.1  Resilience4j限速器限流 220

8.4.2  spring-cloud-zuul-ratelimit限速 222

8.5  动态路由 224

8.5.1  动态路由原理 224

8.5.2  动态路由实例 226

8.6  灰度发布(金丝雀发布) 230

8.6.1  标记微服务是否为灰色发布 230

8.6.2  网关过滤 231

8.7  使用Hystrix熔断 232

第9章  新网关——Spring Cloud
         Gateway 235

9.1  认识Gateway 236

9.1.1  入门实例 237

9.1.2  Gateway执行原理 238

9.2  断言(Predicate) 242

9.2.1  Before路由断言工厂 242

9.2.2  After路由断言工厂 243

9.2.3  Between路由断言工厂 244

9.2.4  Cookie路由断言工厂 245

9.2.5  Header路由断言工厂 246

9.2.6  Host路由断言工厂 246

9.2.7  Method路由断言工厂 247

9.2.8  Path路由断言工厂 248

9.2.9  Query路由断言工厂 249

9.2.10  RemoteAddr路由断言工厂 250

9.2.11  Weight路由断言工厂 250

9.3  过滤器(Filter)概述 253

9.4  内置过滤器工厂 253

9.4.1  AddRequestHeader过滤器工厂 254

9.4.2  AddRequestParameter过滤器
工厂 254

9.4.3  AddResponseHeader过滤器
工厂 255

9.4.4  Retry过滤器工厂 256

9.4.5  Hystrix过滤器工厂 258

9.4.6  RequestRateLimiter过滤器
工厂 259

9.4.7  StripPrefix过滤器工厂 262

9.4.8  RewritePath过滤器工厂 263

9.4.9  SetStatus过滤器工厂 264

9.4.10  小结 265

9.5  自定义过滤器 265

9.5.1  自定义过滤器——使用
Resilience4j限流 265

9.5.2  全局过滤器——转发token 268

9.5.3  过滤器的顺序 269

9.6  Gateway知识补充 273

9.6.1  基于服务发现的路由 273

9.6.2  度量和动态更新路由 274

第10章  配置——Spring Cloud Config 277

10.1  入门实例——使用Git仓库 277

10.1.1  服务端开发 278

10.1.2  客户端开发 280

10.1.3  验证配置 281

10.1.4  小结 282

10.2  使用其他方式实现配置 282

10.2.1  使用本地文件 282

10.2.2  使用SVN配置 283

10.2.3  使用数据库 284

10.3  服务端的使用详解 286

10.3.1  敏感配置加密和解密 286

10.3.2  查看配置文件和监控端点 289

10.3.3  安全认证 291

10.3.4  高可用的Config配置 293

第11章  Spring Cloud Sleuth全链路追踪 295

11.1  链路追踪的基本概念 295

11.2  Spring Cloud Sleuth和Zipkin 297

11.3  实例 298

11.3.1  搭建Zipkin服务器 298

11.3.2  搭建服务提供者和服务消费者 300

11.3.3  搭建网关服务 303

11.3.4  查看全链路追踪 304

11.3.5  在链路中自定义样本标记属性 306

11.4  持久化 308

11.4.1  在数据库中存储链路样本 308

11.4.2  在Elasticsearch中存储链路
  样本 309

第12章  微服务的监控——
          Spring Boot Admin 312

12.1  本章实例简介 313

12.2  URL注册方式 313

12.2.1  Admin服务端开发 313

12.2.2  Admin客户端开发 314

12.2.3  查看Admin服务端监测平台 315

12.3  服务发现注册方式 316

12.4  使用Spring Security保护Admin
  服务端 319

第三部分  分布式技术

第13章  生成唯一的ID——发号机制 323

13.1  生成ID的常见办法 323

13.1.1  使用UUID 324

13.1.2  为什么不用UUID 324

13.1.3  数据库自增长 325

13.1.4  使用Redis生成ID 327

13.1.5  时钟算法 329

13.1.6  变异时钟算法——SnowFlake
  算法 331

13.1.7  小结 334

13.2  自定义发号机制 334

第14章  分布式数据库技术 337

14.1  基础知识 337

14.1.1  数据库的分表、分库和分区的
  概念 337

14.1.2  Spring多数据源支持 339

14.2  开发环境搭建 341

14.2.1  SSM框架整合 342

14.2.2  配置多数据源 345

14.3  分片算法 350

14.3.1  哈希分片之求余算法 351

14.3.2  一致性哈希算法 352

14.3.3  热点分配法 357

14.4  分片中间件ShardingSphere 358

14.4.1  概述 358

14.4.2  ShardingSphere的重要概念 359

14.4.3  ShardingSphere的分片 360

14.4.4  实例 361

14.4.5  结束语 363

第15章  分布式数据库事务 364

15.1  强一致性事务 364

15.1.1  两阶段提交协议——XA协议 365

15.1.2  三阶段提交协议 371

15.1.3  为什么微服务不适合使用强
  一致性事务 372

15.2  弱一致性事务 373

15.2.1  本节样例模型和冲正交易的
  概念 374

15.2.2  使用状态表 375

15.2.3  使用可靠消息源——
  RabbitMQ 376

15.2.4  提高尝试次数和幂等性 380

15.2.5  TCC补偿事务 381

15.2.6  小结 383

15.3  分布式事务应用的实践理论 383

15.3.1  什么时候使用分布式事务 383

15.3.2  数据修复思路 384

第16章  分布式缓存——Redis 387

16.1  Redis的高可用 388

16.1.1  哨兵模式 389

16.1.2  Redis集群 394

16.2  使用一致性哈希(ShardedJedis) 401

16.3  分布式缓存实践 403

16.3.1  大对象的缓存 403

16.3.2  缓存穿透、并发和雪崩 404

16.3.3  缓存实践的一些建议 406

第17章  分布式会话 407

17.1  分布式会话的几种方式 407

17.2  粘性会话 408

17.3  服务器会话复制 408

17.4  使用缓存(spring-session-data-
  redis) 409

17.5  持久化到数据库 411

第18章  分布式系统权限验证 412

18.1  Spring Security 412

18.1.1  简单使用Spring Security 413

18.1.2  使用自定义用户验证 415

18.1.3  使用缓存共享实现分布式
  权限 421

18.1.4  跨站点请求伪造(CSRF)
  攻击 423

18.1.5  使用自定义页面 425

18.2  自定义微服务权限控制 427

18.2.1  基础包开发 428

18.2.2  开发Eureka客户端 432

18.2.3  网关开发 434

18.2.4  服务调用 438

18.3  OAuth 2.0概述 441

18.3.1  OAuth的概念和流程 441

18.3.2  使用JWT进行安全认证 443

18.3.3  spring-security-oauth2 444

18.4  Spring Cloud Security 445

18.4.1  构建认证服务器 446

18.4.2  开发SSO客户端 450

18.4.3  测试 453

第四部分  微服务系统实践

第19章  远程调用 459

19.1  远程调用 459

19.1.1  REST风格服务调用性能测试 459

19.1.2  RPC入门 460

19.1.3  RPC和REST风格服务调用的
  对比 461

19.2  Thrift简介 462

19.2.1  配置Thrift 462

19.2.2  Thrift的数据结构和服务接口 463

19.2.3  开发业务逻辑 464

19.2.4  启动Thrift服务器 465

19.2.5  Thrift客户端 466

19.2.6  使用断路器保护服务调用 468

19.3  RPC小结 469

第20章  微服务设计和高并发实践 470

20.1  微服务设计原则 470

20.1.1  服务拆分方法 470

20.1.2  微服务的设计原则 471

20.1.3  微服务架构 471

20.2  高并发系统的一些优化经验 472

20.2.1  提高性能 473

20.2.2  服务高可用 479

20.3  简易微服务系统实例 488

20.3.1  服务治理中心(ms-eureka) 489

20.3.2  搭建产品微服务
 (ms-product) 490

20.3.3  网关微服务开发(ms-zuul) 498

20.3.4  资金微服务(ms-fund) 508

20.3.5  服务实例监测平台
 (ms-admin) 510

20.3.6  Hystrix仪表盘
 (ms-dashboard) 511

20.3.7  服务链路追踪(ms-sleuth) 512

 

猜你喜欢

转载自blog.csdn.net/ykzhen2015/article/details/104949383