课程背景
Spring 5 的发布为响应式编程普及和发展带来了红利,基于 Spring 5 内嵌的响应式 Web 框架、响应式数据访问、响应式通信等多种响应式组件,开发者可以轻松构建一个具备及时响应性和弹性的响应式系统。
如今,响应式编程已被国内诸如阿里、腾讯等一线大厂广泛应用,可以说它代表了一种技术发展和演进的趋势。紧跟这一趋势,对于提升开发者的职业层级是一个很好的加分项。
你会学到什么?
专栏分成六大篇章,共22讲,基于 Spring 5 的框架,对响应式编程的各个组件进行详细讲解,并结合实战案例,帮你更快上手响应式编程:
基本概念篇
专栏将讲解响应式系统和响应式编程的基本概念以及应用场景,并分析响应式编程模型中所包含的响应式流和背压机制,学了这些,你便掌握了实现系统弹性的关键。
此外,这一部分也会讲解 Spring 框架中的响应式编程技术方案,用一个 ReactiveSpringCSS 案例贯穿整个学习过程,为你后面学习响应式Web、响应式数据访问、响应式消息通信和响应式测试等内容做铺垫。
编程框架篇
Project Reactor 是 Spring 5 内置的响应式编程框架。它可以使用 Flux 或 Mono 对象来构建响应式数据流,并提供了高效的响应式操作符。它有多种组合方式、完善的异常处理机制,以及面对背压时候的处理机制、重试机制。因此,成为业界领先的响应式编程框架。学完这一部分,你将懂得如何从开发框架和代码编写上提高系统及时响应性。
技术组建篇-响应式 Web 服务
WebFlux 是 Spring 中全新的 Web 开发框架,相比于传统的 Web 框架,它是一个典型非阻塞异步的框架,它可以运行在诸如 Netty、Undertow 等容器上,因此它的运行环境的可选择性要比传统 Web 框架多得多。
这部分将带你用 WebFlux 来构建响应式 RESTful 服务。并为你讲解如何使用支持响应式流的 WebClient 工具类调用响应式服务以及针对网络通信,如何使用全新的 RSocket 协议来实现响应式数据传输。
学完这一部分,你将掌握构建 Web 服务的系统方法,学会创建响应式系统中 Web 层组件。
技术组件篇-响应式数据访问
传统的 JDBC 并不支持响应式编程模式,而 Spring 家族也专门提供了 Spring Data R2DBC 框架来解决这一问题。这部分会讲解如何使用 Spring Data Reactive 组件来构建响应式数据访问层,并结合案例分别对MongoDB 和 Redis这两款 NoSQL 数据库实现数据操作。
学完这一部分,你可以掌握使用响应式编程技术实现数据访问层的系统方法,并学会在响应式系统中嵌入 MongoDB、Redis 等主流 NoSQL 技术的实现过程。
技术组件篇-响应式消息通信
这部分会讲解如何构建响应式消息通信层。首先,我们将使用 Spring Cloud Stream 框架的响应式版本来实现消息的发布和消费。另外,关于消息通信,专栏也会介绍一系列高级开发主体,为你提供满足日常开发需要的开发技巧。
学完这一模块,你就会使用 Spring Cloud Stream 框架实现跨服务之间的响应式消息通信,同时也会掌握 RabbitMQ 这款消息中间件的使用方法。
技术组件篇-响应式测试
专栏首先会为你详细讲解关于 Project Reactor 的测试方法和工具,然后手把手带你对 Web 层和数据访问层中的响应式组件进行系统测试。学完这一模块,你便掌握了验证各个响应式编程组件的正确性的系统方法,并学会使用 Spring Boot 中提供的各种测试注解完成对 Web 服务层、消息通信层和数据访问层的集成测试。
课程目录
开篇词
开篇词 | 响应式编程:紧跟技术趋势,提升系统弹性
基本概念篇
01 | 追本溯源:响应式编程究竟是一种什么样的技术体系?
02 | 背压机制:响应式流为什么能够提高系统的弹性?
03 | 场景应用:响应式编程能够应用于哪些具体场景?
04 | 案例驱动:如何基于 Spring 框架来学习响应式编程?
编程框架篇
05 | 顶级框架:Spring 为什么选择 Reactor 作为响应式编程框架?
06 | 流式操作:如何使用 Flux 和 Mono 高效构建响应式数据流?
07 | Reactor 操作符(上):如何快速转换响应式流?
08 | Reactor 操作符(下):如何多样化裁剪响应式流?
技术组件篇-响应式 Web 服务
09 | 框架升级:WebFlux 比 Web MVC 到底好在哪里?
10 | WebFlux(上):如何使用注解编程模式构建异步非阻塞服务?
11 | WebFlux(下):如何使用函数式编程模型构建异步非阻塞服务?
12 | WebClient:如何实现非阻塞式的跨服务远程调用?
13 | RSocket:一种新的高性能网络通信协议
技术组件篇-响应式数据访问
14 | 响应式全栈:响应式编程能为数据访问过程带来什么样的变化?
15 | MongoDB 集成:如何在响应式应用中访问 NoSQL 数据库?
16 | Redis 集成:如何实现对 Redis 的响应式数据访问?
17 | R2DBC:关系型数据库能具备响应式数据访问特性吗?
技术组件篇-响应式消息通信
18 | 消息驱动:Spring Cloud Stream 如何为系统提升伸缩性?
19 | 消息发布:如何以响应式的编程方式发送消息?
20 | 消息消费:如何选择可用的高级开发技巧?
技术组件篇-响应式测试
21 | 测试方案:如何验证响应式编程组件的正确性?
22 | 测试集成:响应式 Web 应用程序如何进行测试?
结束语
结束语 | 以终为始:响应式编程是一种银弹吗?
讲师介绍
鉴湘,创业公司 CTO
10 年以上大型 Java EE 和分布式系统构建和优化的经验,曾带领百人团队完成基于 Spring 家族技术体系的亿级用户规模互联网应用系统的建设工作,对基于 Spring 框架进行系统开发和维护有着丰富的实践经验。