SpringCloud、Nginx高并发核心编程 【2020年11月新书 】

时间:2022-06-19 00:22:40

文章太长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源:


特别说明: 此书属于 《Java高并发三部曲》 的3卷之一

SpringCloud、Nginx高并发核心编程 【2020年11月新书 】


读者评价

SpringCloud、Nginx高并发核心编程 【2020年11月新书 】

为什么要读此书 ?

5G、IOT、多屏合一、万物互联时代来了,SpringCloud+Nginx分布式微服务架构已经成为Java后端应用的主流架构,但是对于SpringCloud RPC底层原理、Nginx底层原理等核心知识,广大的Java开发同学们相对欠缺,而且市面上这方面的书也较少。

目前 SpringCloud + Nginx 架构已经是目前的 Java 主流,但是,无论对 SpringCloud微服务的核心原理,还是对 Nginx 的核心知识,大量的开发同学们还不是了解较少,更多的是处于怎么使用、配置的阶段。

前段时间,笔者在多场 Java 资深工程师、架构师的面试中,问了几个稍微基础一点的问题,大致如下:

问题1 : 请介绍一下 SpringCloud 的 RPC 流程?

答案总结:

大部分候选人的答案,仅仅涉及到 Eureka、Zuul、Hystix 断路器等基本概念和浅层次的知识,大部分的候选人,对于 Feign 内部 RPC 原理,以及 Feign 和 Hystix 之间的内部关系,根本不了解。

问题2 :有关 SpringCloud 性能,有哪些优化点?

答案总结:

大部分候选人,会涉及到 缓冲、加节点等基本的处理,不会涉及到 Feign 连接池、Hystix 线程池等组件的高性能配置,也没有涉及到 HTTP 长连接等更加底层的配置。

问题3: 请介绍一下 Hystix 中的滑动窗口?

答案总结:

有的候选人,竟然为完全的不知道。

问题4: 请说一说对 Nginx 的原理?

答案总结:

大部分候选人,仅仅介绍了一下 Nginx 的简单配置,对于其基础结构和 HTTP 请求处理流程,根本没有接触过,更加不知道如何进行高性能的应用开发。

重点:回答以上问题的候选人,有一位,竟然是有过10多年的开发经验的资深Java工程师。 毫无疑问,这位有着10多年经验的资深 Java 工程师,对 SpringCloud 和Nginx 核心知识如此欠缺,显然不大可能架构出高性能的 Java 应用,当然,也是胜任不了 Java 架构师岗位的。

而实际上,通过笔者的交流了解,对于 SpringCloud 和 Nginx 核心知识的缺乏,不是以上面试候选人的个性问题,笔者周围的很多的熟悉的工程师,都存在这个问题。

总之,对 SpringCloud 和 Nginx 架构的核心知识的缺乏深入的了解和掌握,目前来说是一个涉及面较广的共性问题

《SpringCloud、Nginx高并发核心编程》的初衷,为大家顺利成长为优秀的 Java 工程师甚至架构师尽一份绵薄之力。

此书价值 ?

初衷:为大家奉上一本Spring Cloud、Nginx“原理级”“思想级”经典图书,为帮助大家顺利进入互联网大厂、成为Java核心架构师尽一份绵薄之力。

目标非常明确:助力大家进入大厂、进入大厂、进入大厂, 或者助力大家成为架构师、成为架构师、成为架构师

作者是谁 ?

钻研Java近20载、有N年架构经验Java老中医的尼恩(疯狂创客圈发起人),独创了自己的写作方式——“尼恩笔法”,从设计模式和基础知识入手,抽丝剥茧,将高深莫测、复杂难懂的高并发核心知识介绍得娓娓道来、浅显易懂。并使用“尼恩笔法”为大家奉上了两本书:《Netty、Zookeeper、Redis高并发实战》《SpringCloud、Nginx高并发核心编程》。

此书特色 ?

本书内容主要包括以下三大方面:

  • 本书从Java静态代理、动态代理模式入手,抽丝剥茧得解读了Spring Cloud全家桶中RPC核心原理和执行过程,这是高级Java工程师面试必备的基础知识。
  • 本书从Reactor反应器模式入手,抽丝剥茧得解读了Nginx核心思想和各配置项的底层知识和原理,这是高级Java工程师、架构师面试必须掌握的基础知识。
  • 本书从观察者模式入手,抽丝剥茧得解读了RxJava、Hystrix核心思想和使用方法,这也是高级Java工程师、架构师面试必须掌握的基础知识。

读者评价 ?

下面的读者评价来自于{疯狂创客圈}社群小伙伴,基于“尼恩笔法”编写的第一本书《Netty、Zookeeper·、Redis高并发实战》有还不错的评价,部分如下:

社群小伙伴 @感觉

关于Netty的书我买了4本,只有这本看了4遍以上,其他的书没怎么翻过。要是当初没有入手这本书,估计我的项目就蹦了。现在市面上的书,很少有作者这么良心了。

社群小伙伴 @我朝你看

书的内容很详细,很容易理解。老师通知我们每一个人人手一本。是学分布式和并发的必备书籍。

社群小伙伴 @empty

书的内容非常好,对现在不懂的领域有了很详细的人生,豁然开朗的感觉

社群小伙伴 @夜月魂

买了多本Netty方面的书,这本书比其他的书讲得更清楚

社群小伙伴 @老孟无敌

读了你的Netty的书,感觉好爽啊,期待你的新书哦。

社群小伙伴 @only_one

书的内容非常好,很实用,帮助理清楚了很多的思路。

社群小伙伴 @堕落小子

书的内容还是非常好的,比较系统,比较全面,知识点也比较细,我是极力给小伙伴推荐的。

社群小伙伴 @蒲公英

第一次真的明白阻塞IO、同步IO是怎么回事,很感谢这本书

交流方式 ?

尼恩编写的系列图书《SpringCloud、Nginx高并发核心编程》《Netty、Zookeeper·、Redis高并发实战》的交流方式:

高并发研习社群——疯狂创客圈社群 QQ群:104131248

海报 ?

SpringCloud、Nginx高并发核心编程 【2020年11月新书 】

目录 ?

  • 第1章 Spring Cloud+Nginx 高并发核心编程的学习准备 ........................ 1

    1.1 Spring Cloud+Nginx架构的主要组件 ........................................ 1

    1.2 Spring Cloud和Spring Boot的版本选择 ........................................ 3

    1.3 Spring Cloud微服务开发所涉及的中间件..................................... 4

    1.4 Spring Cloud微服务开发和自验证环境 ........................................ 6

    1.4.1 开发和自验证环境的系统选项和环境变量配置........................................ 6

    1.4.2 使用Fiddler工具抓包和查看报文........................................ 7

    1.5 crazy-springcloud微服务开发脚手........................................ 9

    1.6 以秒杀作为Spring Cloud+Nginx的实战案例 ........................................ 10

  • 第2章 Spring Cloud入门实战 ........................................ 12

    2.1 Eureka服务注册与发现 ........................................ 13

    2.1.1 什么是服务注册与发现 ........................................ 13

    2.1.2 Eureka Server注册中心 ........................................ 14

    2.1.3 服务提供者的创建和配置 ........................................ 19

    2.1.4 服务提供者的续约(心跳) ........................................ 22

    2.1.5 服务提供者的健康状态 ........................................ 24

    2.1.6 Eureka自我保护模式与失效Provider的快速剔除 .................................... 28

    2.2 Config配置中心 ........................................ 32

    2.2.1 config-server服务端组件 ........................................ 32

    2.2.2 config-client客户端组件 ........................................ 35

    2.3 微服务的RPC远程调用 ........................................ 36

    2.3.1 RESTful风格简介 ........................................ 36

    2.3.2 RestTemplate远程调用 ........................................ 37

    2.3.3 Feign远程调用 ........................................ 38

    2.4 Feign+Ribbon实现客户端负载均衡 ........................................ 40

    2.4.1 Spring Cloud Ribbon基础 ........................................ 41

    2.4.2 Spring Cloud Ribbon的负载均衡策略 ........................................ 43

    2.4.3 Spring Cloud Ribbon的常用配置 ........................................ 45

    2.5 Feign+Hystrix实现RPC调用保护 ........................................ 50

    2.5.1 Spring Cloud Hystrix失败回退 ........................................ 51

    2.5.2 分布式系统面临的雪崩难题 ........................................ 55

    2.5.3 Spring Cloud Hystrix熔断器 ........................................ 56

  • 第3章 Spring Cloud RPC远程调用核心原理 ........................................ 61

    3.1 代理模式与RPC客户端实现类 ........................................ 61

    3.1.1 客户端RPC远程调用实现类的职责 ........................................ 61

    3.1.2 简单的RPC客户端实现类 ........................................ 63

    3.1.3 从基础原理讲起:代理模式与RPC客户端实现类 ........................................ 67

    3.1.4 使用动态代理模式实现RPC客户端类 ........................................ 70

    3.1.5 JDK动态代理机制的原理 ........................................ 74

    3.2 模拟Feign RPC动态代理的实现 ........................................ 77

    3.2.1 模拟Feign的方法处理器MethodHandler ........................................ 78

    3.2.2 模拟Feign的调用处理器InvocationHandler ...................................... 80

    3.2.3 模拟Feign的动态代理RPC的执行流程 ........................................ 83

    3.2.4 模拟动态代理RPC远程调用的测试 ........................................ 83

    3.2.5 Feign弹性RPC客户端实现类 ........................................ 85

    3.3 Feign弹性RPC客户端的重要组件 ........................................ 86

    3.3.1 演示用例说明 ........................................ 86

    3.3.2 Feign的动态代理RPC客户端实例 ........................................ 88

    3.3.3 Feign的调用处理器InvocationHandler ........................................ 89

    3.3.4 Feign的方法处理器MethodHandler ........................................ 91

    3.3.5 Feign的客户端组件 ........................................ 94

    3.4 Feign的RPC动态代理实例的创建流程 ........................................ 97

    3.4.1 Feign的整体运作流程 ........................................ 98

    3.4.2 RPC动态代理容器实例的FactoryBean工厂类 ........................................ 99

    3.4.3 Feign.Builder建造者容器实例 ........................................ 102

    3.4.4 默认的RPC动态代理实例的创建流程 ........................................ 105

    3.4.5 Contract远程调用协议规则类 ........................................ 108

    3.5 Feign远程调用的执行流程 ........................................ 110

    3.5.1 与FeignInvocationHandler相关的远程调用执行流程 ................................... 110

    3.5.2 与HystrixInvocationHandler相关的远程调用执行流程 ................................. 111

    3.5.3 Feign远程调用的完整流程及其特性 ........................................ 114

    3.6 HystrixFeign动态代理实例的创建流程 ........................................ 115

    3.6.1 HystrixFeign.Builder建造者容器实例 ........................................ 115

    3.6.2 配置HystrixFeign.Builder建造者容器实例 ...................................... 116

    3.7 feign.Client客户端容器实例 ........................................ 117

    3.7.1 装配LoadBalancerFeignClient负载均衡容器实例 ................................ 117

    3.7.2 装配ApacheHttpClient负载均衡容器实例 ........................................ 119

    3.7.3 装配OkHttpClient负载均衡容器实例 ........................................ 121

    3.7.4 装配Client.Default负载均衡容器实例 ................................ 122

  • 第4章 RxJava响应式编程框架 ........................................ 124

    4.1 从基础原理讲起:观察者模式 ........................................ 124

    4.1.1 观察者模式的基础原理 ........................................ 124

    4.1.2 观察者模式的经典实现 ........................................ 125

    4.1.3 RxJava中的观察者模式 ........................................ 127

    4.1.4 RxJava的不完整回调........................................ 130

    4.1.5 RxJava的函数式编程........................................ 132

    4.1.6 RxJava的操作符........................................ 134

    4.2 创建型操作符 ........................................ 134

    4.2.1 just操作符 ........................................ 135

    4.2.2 from操作符 ........................................ 135

    4.2.3 range操作符 ........................................ 136

    4.2.4 interval操作符 ........................................ 137

    4.2.5 defer操作符 ........................................ 138

    4.3 过滤型操作符 ........................................ 139

    4.3.1 filter操作符 ........................................ 139

    4.3.2 distinct操作符 ........................................ 140

    4.4 转换型操作符 ........................................ 141

    4.4.1 map操作符 ........................................ 141

    4.4.2 flatMap操作符 ........................................ 142

    4.4.3 scan操作符 ........................................ 144

    4.5 聚合操作符 ........................................146

    4.5.1 count操作符 ........................................ 146

    4.5.2 reduce操作符 ........................................ 147

    4.6 其他操作符 ........................................ 149

    4.6.1 take操作符 ........................................ 149

    4.6.2 window操作符 ........................................ 150

    4.7 RxJava的Scheduler调度器........................................ 153

    4.8 背压 ........................................ 155

    4.8.1 什么是背压问题 ........................................ 155

    4.8.2 背压问题的几种应对模式 ........................................ 158

  • 第5章 Hystrix RPC保护的原理 ........................................ 162

    5.1 RPC保护的目标 ........................................ 162

    5.2 HystrixCommand简介 ........................................ 162

    5.2.1 HystrixCommand的使用 ........................................ 163

    5.2.2 HystrixCommand的配置内容和方式 ........................................ 166

    5.3 HystrixCommand命令的执行方法 ........................................ 168

    5.3.1 execute()方法 ........................................ 168

    5.3.2 queue()方法 ........................................ 170

    5.3.3 observe()方法 ........................................ 172

    5.3.4 toObservable()方法 ........................................ 173

    5.3.5 HystrixCommand的执行方法之间的关系 ........................................ 175

    5.4 RPC保护之舱壁模式 ........................................ 176

    5.4.1 什么是舱壁模式 ........................................ 176

    5.4.2 Hystrix线程池隔离 ........................................ 178

    5.4.3 Hystrix线程池隔离配置 ........................................ 182

    5.4.4 Hystrix信号量隔离 ........................................ 184

    5.5 RPC保护之熔断器模式 ........................................ 188

    5.5.1 熔断器状态变化的演示实例 ........................................ 189

    5.5.2 熔断器和滑动窗口的配置属性 ........................................ 193

    5.5.3 Hystrix命令的执行流程 ........................................ 198

    5.6 RPC监控之滑动窗口的实现原理 ........................................ 199

    5.6.1 Hystrix健康统计滑动窗口的模拟实现........................................ 200

    5.6.2 Hystrix滑动窗口的核心实现原理 ........................................ 205

  • 第6章 微服务网关与用户身份识别 ........................................ 210

    6.1 Zuul的基础使用 ........................................ 211

    6.2 创建Zuul网关服务 ........................................ 211

    6.2.1 Zuul路由规则配置 ........................................ 212

    6.2.2 过滤敏感请求头部 ........................................ 214

    6.2.3 路径前缀的处理 ........................................ 215

    6.3 Zuul过滤器 ........................................ 216

    6.3.1 Zuul网关的过滤器类型 ........................................ 216

    6.3.2 实战:用户的黑名单过滤 ........................................ 217

    6.4 Spring Security原理和实战 ........................................ 221

    6.4.1 Spring Security核心组件 ........................................ 221

    6.4.2 Spring Security的请求认证处理流程 ........................................ 224

    6.4.3 基于数据源的认证流程 ........................................ 231

    6.5 JWT+Spring Security进行网关安全认证 ........................................ 237

    6.5.1 JWT安全令牌规范详解 ........................................ 238

    6.5.2 JWT+Spring Security认证处理流程 ........................................ 243

    6.5.3 Zuul网关与UAA微服务的配合 ........................................ 250

    6.5.4 使用Zuul过滤器添加代理请求的用户标识 ........................................ 254

    6.6 服务提供者之间的会话共享关系 ........................................ 256

    6.6.1 分布式Session的起源和实现方案 ........................................ 257

    6.6.2 Spring Session的核心组件和存储细节 ........................................ 258

    6.6.3 Spring Session的使用和定制........................................ 259

    6.6.4 通过用户身份标识查找Session ID ..................................... 261

    6.6.5 查找或创建分布式Session ........................................ 263

    6.6.6 加载高速访问数据到分布式Session ........................................ 265

  • 第7章 Nginx/OpenResty详解 ........................................ 268

    7.1 Nginx简介 ........................................ 268

    7.1.1 正向代理与反向代理 ........................................ 269

    7.1.2 Nginx的启动与停止 ........................................ 270

    7.1.3 Nginx的启动命令和参数详解 ........................................ 271

    7.1.4 Linux下OpenResty的启动、停止脚本 ........................................ 271

    7.1.5 Windows下OpenResty的启动、停止脚本 ........................................ 273

    7.2 Nginx的核心原理 ........................................ 274

    7.2.1 Reactor模型 ........................................ 274

    7.2.2 Nginx的两类进程 ........................................ 275

    7.2.3 Nginx的模块化设计 ........................................ 276

    7.2.4 Nginx配置文件上下文结构 ........................................ 278

    7.2.5 Nginx的请求处理流程 ........................................ 280

    7.2.6 HTTP请求处理的11个阶段 ........................................ 281

    7.3 Nginx的基础配置 ........................................ 286

    7.3.1 events事件驱动配置 ........................................ 286

    7.3.2 虚拟主机配置 ........................................ 287

    7.3.3 错误页面配置 ........................................ 289

    7.3.4 长连接相关配置 ........................................ 290

    7.3.5 访问日志配置 ........................................ 290

    7.3.6 Nginx核心模块内置变量 ........................................ 291

    7.4 location路由规则配置详解 ........................................ 293

    7.4.1 location语法详解 ........................................ 293

    7.4.2 常用的location路由配置 ........................................ 296

    7.5 Nginx的rewrite模块指令 ........................................ 297

    7.5.1 set指令 ........................................ 298

    7.5.2 rewrite指令 ........................................ 298

    7.5.3 if条件指令 ........................................ 301

    7.5.4 add_header指令 ........................................ 303

    7.5.5 指令的执行顺序 ........................................ 304

    7.6 反向代理与负载均衡配置 ........................................ 305

    7.6.1 演示环境说明 ........................................ 305

    7.6.2 proxy_pass反向代理指令 ........................................ 306

    7.6.3 proxy_set_header请求头设置指令 ................................... 308

    7.6.4 upstream上游服务器组 ........................................ 309

    7.6.5 upstream的上游服务器配置 ........................................ 311

    7.6.6 upstream的负载分配方式 ........................................ 313

  • 第8章 Nginx Lua编程 ........................................ 315

    8.1 Nginx Lua编程的主要应用场景 ........................................ 315

    8.2 Nginx Lua编程简介 ........................................ 315

    8.2.1 ngx_lua简介 ........................................ 315

    8.2.2 Nginx Lua项目的创建 ........................................ 316

    8.2.3 Lua项目的工程结构 ........................................ 317

    8.2.4 Lua项目的启动 ........................................ 318

    8.3 Lua开发基础 ........................................ 319

    8.3.1 Lua模块的定义和使用 ........................................ 319

    8.3.2 Lua模块的使用 ........................................ 320

    8.3.3 Lua的数据类型 ........................................ 322

    8.3.4 Lua的字符串 ........................................ 325

    8.3.5 Lua的数组容器 ........................................ 326

    8.3.6 Lua的控制结构 ........................................ 328

    8.3.7 Lua的函数定义 ........................................ 331

    8.3.8 Lua的面向对象编程 ........................................ 332

    8.4 Nginx Lua编程基础 ........................................ 333

    8.4.1 Nginx Lua的执行原理 ........................................ 334

    8.4.2 Nginx Lua的配置指令 ........................................ 335

    8.4.3 Nginx Lua的内置常量和变量 ........................................ 339

    8.5 Nginx Lua编程实例 ........................................ 341

    8.5.1 Lua脚本获取URL中的参数 ........................................ 341

    8.5.2 Nginx Lua的内置方法 ........................................ 342

    8.5.3 通过ngx.header设置HTTP响应头 ........................................ 344

    8.5.4 Lua访问Nginx变量 ........................................ 347

    8.5.5 Lua访问请求上下文变量 ........................................ 349

    8.6 重定向与内部子请求 ........................................ 350

    8.6.1 Nginx Lua内部重定向 ........................................ 350

    8.6.2 Nginx Lua外部重定向 ........................................ 352

    8.6.3 ngx.location.capture子请求 ........................................ 355

    8.6.4 ngx.location.capture_multi并发子请求 .......................................359

    8.7 Nginx Lua操作Redis ........................................ 361

    8.7.1 Redis的CRUD基本操作 ........................................ 361

    8.7.2 实战:封装一个操作Redis的基础类 ........................................ 364

    8.7.3 在Lua中使用Redis连接池 ........................................ 367

    8.8 Nginx Lua编程实战案例 ........................................ 369

    8.8.1 Nginx+Redis进行分布式访问统计 ........................................ 369

    8.8.2 Nginx+Redis+Java容器实现高并发访问 ........................................ 370

    8.8.3 Nginx+Redis实现黑名单拦截 ........................................ 375

    8.8.4 使用Nginx Lua共享内存 ........................................ 378

  • 第9章 限流原理与实战 ........................................ 380

    9.1 限流策略原理与参考实现 ........................................ 380

    9.1.1 3种限流策略:计数器、漏桶和令牌桶 ........................................ 380

    9.1.2 计数器限流原理和Java参考实现 ........................................ 381

    9.1.3 漏桶限流原理和Java参考实现 ........................................ 384

    9.1.4 令牌桶限流原理和Java参考实现 ........................................ 386

    9.2 分布式计数器限流 ........................................ 390

    9.2.1 实战:Nginx Lua分布式计数器限流 ........................................ 390

    9.2.2 实战:Redis Lua分布式计数器限流 ........................................ 394

    9.3 Nginx漏桶限流详解 ........................................ 397

    9.4 实战:分布式令牌桶限流 ........................................ 399

    9.4.1 分布式令牌桶限流Lua脚本 ........................................ 399

    9.4.2 Java分布式令牌桶限流 ........................................ 402

    9.4.3 Java分布式令牌桶限流的自验证 ........................................ 406

  • 第10章 Spring Cloud+Nginx秒杀实战 ........................................ 409

    10.1 秒杀系统的业务功能和技术难点 ........................................ 409

    10.1.1 秒杀系统的业务功能 ........................................ 409

    10.1.2 秒杀系统面临的技术难题 ........................................ 410

    10.2 秒杀系统的系统架构 ........................................ 411

    10.2.1 秒杀的分层架构 ........................................ 411

    10.2.2 秒杀的限流架构 ........................................ 413

    10.2.3 秒杀的分布式锁架构 ........................................ 414

    10.2.4 秒杀的削峰架构 ........................................ 415

    10.3 秒杀业务的参考实现 ........................................ 416

    10.3.1 秒杀的功能模块和接口设计 ........................................ 416

    10.3.2 数据表和PO实体类设计 ........................................ 420

    10.3.3 使用分布式ID生成器 ........................................ 423

    10.3.4 秒杀的控制层设计 ........................................ 424

    10.3.5 service层逻辑:获取秒杀令牌 ........................................ 426

    10.3.6 service层逻辑:执行秒杀下单 ........................................ 429

    10.3.7 秒杀的Lua脚本设计 ........................................ 434

    10.3.8 BusinessException定义 ........................................ 436

    10.4 Zuul内部网关实现秒杀限流 ........................................ 439

    10.5 Nginx高性能秒杀和限流 ...................................... 444

    10.5.1 Lua脚本:获取秒杀令牌 ........................................ 445

    10.5.2 Lua脚本:执行令牌桶限流 ........................................ 448

  • 前言

      Spring Cloud+Nginx系统架构毫无疑问是当今的主流技术之一。分布式Spring Cloud微服务框架和高性能的Nginx反向代理Web服务的优秀组合,满足了各大产品和项目的可扩展、高可用、高性能架构的需求。然而根据笔者摸查,很多Java开发人员对Spring Cloud微服务、反向代理Nginx核心知识的掌握不够,仅停留在Spring Cloud+Nginx基础配置、API使用的初级使用阶段。

      本书从基础设计模式、基础原理出发,理论与实战相结合,对Spring Cloud + Nginx高并发编程的核心原理做了非常系统和详尽的介绍。本书旨在帮助初、中、高级开发工程师弥补在Spring Cloud微服务、Nginx反向代理核心知识方面的短板,为广大开发人员顺利成长为优秀的Java高级工程师、系统架构师提供帮助。

      本书内容

      本书内容分为10章,分别说明如下:

      第1章介绍Spring Cloud+Nginx高并发核心编程的学习准备,包括知识背景、开发和自验证环境的准备。

      第2章介绍Spring Cloud入门实战,包括注册中心、配置中心、微服务提供者的入门开发和配置。

      第3章介绍Spring Cloud RPC远程调用的核心原理,从设计模式的代理模式开始,抽丝剥茧、层层递进地揭秘Spring Cloud Feign的底层RPC远程调用的核心原理。

      第4章介绍RxJava响应式编程框架。在Spring Cloud框架中涉及Ribbon和Hystrix两个重要的组件,它们都用到了RxJava响应式编程框架。作为非常重要的编程基础知识,本书特意设立本章对RxJava的原理和使用进行详细介绍。

      第5章介绍Hystrix RPC保护的原理,从RxJava响应式编程框架的应用开始,溯本求源、循序渐进地揭秘Spring Cloud Hystrix的底层 RPC保护的核心原理。

      第6章介绍微服务网关与用户身份识别。微服务网关是微服务架构中不可或缺的部分,它统一解决Provider路由、负载均衡、权限控制等问题。

      第7章详解Nginx/OpenResty,从高性能传输模式Reactor模型入手,寻踪觅源、由浅入深地揭秘Nginx反向代理Web服务器的核心知识,包括Reactor模型、Nginx的模块化设计、Nginx的请求处理流程等。

      第8章介绍Nginx Lua编程。在高并发场景下,Nginx Lua编程是解决性能问题的利器,本章介绍Nginx Lua编程的基础知识。

      第9章介绍限流原理与实战。高并发系统用三把利器—缓存、降级和限流来保护系统,本章介绍计数器、令牌桶、漏桶这三大限流策略的原理和实现。

      第10章介绍Spring Cloud+Nginx秒杀实战,通过这个综合性的实战案例说明缓存、降级和限流的应用。

源码网址: Java 高并发研习社群博客园 总入口