1. Spring WebFlux 2小时快速入门

Spring 5 之使用Spring WebFlux开发响应式应用。

  1. lambda与函数式(15min)
  2. Reactor 3 响应式编程库(60min)
  3. Spring Webflux和Spring Data Reactive开发响应式应用(45min)

通过以上内容相信可以对Spring 5.0 推出的响应式开发有了初步的体会。如果希望有更加深入的了解,欢迎阅读下边的系列文章——

2. 响应式Spring的道法术器

这个系列的文章是为了记录下自己学习Spring响应式编程的所得,也希望能够帮助到更多的朋友。

原谅我标题党了,希望能从道、法、术、器四个层面尽量全面地学习和介绍关于Spring响应式编程的方方面面。

【道】响应式编程的概念、原则、特性与方法

  • 1.1 什么是响应式编程:响应式编程=数据流+变化传递+声明式;
  • 1.2 响应式流:响应式流的异步非阻塞和回压(也有翻译为“背压”、“负压”的)特性,分析与多线程并发方案以及基于回调和CompletableFuture的异步开发方式的不同;
  • 1.3 Hello,reactive world,通过实例学习用lambda、Reactor 3、Spring Webflux和Spring Data Reactive开发响应式应用的方法和技巧;
  • 1.4 异步非阻塞有多给力,使用gatling对基于Spring Webmvc和Spring Webflux的Web服务端应用进行负载测试,通过Spring WebClient与RestTemplate的性能对比并结合Netflix的案例了解异步Http客户端的性能提升,然后使用YCSB对MongoDB的同步和异步驱动进行负载测试,通过测试数据分析异步非阻塞的性能优势;
  • 1.5 响应式系统,介绍响应式宣言,以及响应式编程和响应式系统的区别与联系。

【法】系统介绍响应式编程库的使用与原理

  • 2.1 照虎画猫深入理解响应式流规范,介绍响应式流规范及响应式开发核心接口,通过自己动手编写响应式开发库,了解内部实现机制,是理解本章后续内容的基础,重要。
  • 2.2 自定义数据流,在Reactor 3中如何通过generatecreate等方法生成自定义的数据流,是命令式编程与响应式编程的桥梁。然后通过实现一个docker事件推送的例子进一步熟悉它。
  • 2.3 Reactor的backpressure(背压/回压)策略,介绍Reactor3中的几种回压策略,及其在生成和消费数据流的时候如何起作用。
  • 2.4 Reactor调度器与线程模型,从原理角度分析Reactor 3的调度器以及subscribeOnpublishOn的作用原理,最后介绍用于并行执行的ParallelFlux
  • 2.5 Reactor 3 operators,Reactor 3提供了丰富的操作符,介绍如何选择合适的操作符,以及如何进行操作符的打包。
  • 2.6 测试,介绍使用StepVerifierPublisherProbeTestPublisher三种工具进行自动化测试的方法。
  • 2.7 调试,介绍基于hook的全局调试模式、基于checkpoint()的局部调试模式的调试方法,以及之前用过的log()操作符观察内部执行情况。
  • 2.8 Hot vs Cold,介绍使用Reactor 3 操作“热序列”的方法。
  • 2.9 Processor,介绍Reactor 3内置的几种Processor的实现。
  • 2.10 操作符熔合,介绍操作符熔合的优化思路。

【术】响应式关键技术与底层机制
预告:看网上关于Actor/Reactor/Preactor模型、异步I/O的内容很详细也很棒,我就不赘述了,初步考虑直接通过模仿reactor-netty项目,从零编写一套基于Netty的响应式服务器和客户端,相信无论是对于我自己还是对于关注本系列文章的朋友来说,都是一次不错的提升Netty和响应式编程的尝试,也是为下一章做铺垫。这样一套基于Netty的响应式服务器和客户端工具是Spring WebFlux与Netty之间的适配层,用于将Netty的入站和出站数据进行响应式转换。
(最近事情有点多,会稍迟些发出来,还是有点难的,光读源码就读了两周,囧)

【器】实例了解Spring各种响应式组件
系统了解Spring中支持响应式的组件,如Spring WebFlux、Spring Data Reactive、Spring Security Reactive,以及使用Spring Boot 2和Spring Cloud构建响应式系统的方法。
(学习中)

系列文章目录

相关源码见:https://github.com/get-set/get-reactive。
Reactor3 Reference Guide参考文档中文版(跟随版本更新):http://blog.csdn.net/get_set/article/details/79471861。

  • (1)什么是响应式编程
  • (2)响应式流
  •  ——附1:多线程并发方案的不爽
  • (3)lambda与函数式
  • (4)Reactor快速上手
  • (5)Spring WebFlux快速上手(五个例子,含响应式数据访问、服务端推送)
  • (6)Spring WebFlux服务端性能测试
  • (7)WebClient与RestTemplate性能对比
  • (8)案例:Netflix对API网关的异步化改造
  • (9)异步Mongo驱动的性能测试
  • (10)响应式宣言、响应式系统、响应式编程
  • (11)DIY了解响应式流实现原理
  • (12)自定义数据流(实战Docker事件推送的REST API)
  • (13)Reactor的backpressure策略
  • (14)Reactor调度器与线程模型
  • (15)Reactor 3 Operators
  •  ——附2:Reactor 3 之选择合适的操作符
  • (16)Reactor的测试——响应式Spring的道法术器
  • (17)Reactor的调试——响应式Spring的道法术器
  • (18)Hot vs Cold——响应式Spring的道法术器
  • (19)Reactor Processors——响应式Spring的道法术器
  • (20)操作符熔合——响应式Spring的道法术器

(未完待续)


2017年9月,Spring Framework 5发布了其GA版本,这是自2013年12月以来的又一个大版本升级。除了一些人们期待已久的改进,最令人兴奋的新特性是它提供了完整的端到端响应式编程的支持。这是一种不同于Servlet的全新的编程范式和技术栈,它基于异步非阻塞的特性,能够借助EventLoop以少量线程应对高并发的访问,对微服务架构也颇有助益。不夸张的说,Spring 5使得Java世界拥有了Node.js那样骨骼惊奇的神器。

2018年3月1号,Spring Boot 2.0如约发布,也是一个大版本升级。

从这个图就可以看出对支持Spring 5的Spring Boot 2.0来说,新加入的响应式技术栈是其主打核心特性。具体来说,Spring Boot 2支持的响应式技术栈包括如下:

  • Spring Framework 5提供的非阻塞web框架Spring Webflux;
  • 遵循响应式流规范的兄弟项目Reactor;
  • 支持异步I/O的Netty、Undertow等框架,以及基于Servlet 3.1+的容器(如Tomcat 8.0.23+和Jetty 9.0.4+);
  • 支持响应式的数据访问Spring Data Reactive Repositories;
  • 支持响应式的安全访问控制Spring Security Reactive;
  • 等。

响应式Spring的道法术器(Spring WebFlux 快速上手 + 全面介绍)相关推荐

  1. SpringBoot2.1.15(26) WebFlux快速上手——响应式Spring的道法术器

    SpringBoot2.1.15(26) WebFlux快速上手--响应式Spring的道法术器 Spring WebFlux Spring WebFlux是随Spring 5推出的响应式Web框架. ...

  2. (19)Reactor Processors——响应式Spring的道法术器

    本系列文章索引<响应式Spring的道法术器> 前情提要 响应式流 | Reactor 3快速上手 | 响应式流规范 2.9 Processor Processor既是一种特别的发布者(P ...

  3. (12)自定义数据流(实战Docker事件推送的REST API)——响应式Spring的道法术器...

    本系列文章索引<响应式Spring的道法术器> 前情提要 Reactor 3快速上手 | Spring WebFlux快速上手 | 响应式流规范 本文 测试源码 | 实战源码 2.2 自定 ...

  4. (4)Reactor 3快速上手——响应式Spring的道法术器

    本系列其他文章见:<响应式Spring的道法术器>. 前情提要:响应式流 | lambda与函数式 1.3.2 Reactor Reactor与Spring是兄弟项目,侧重于Server端 ...

  5. 响应式Spring的道法术器(Spring WebFlux 教程)

    Spring WebFlux 2小时快速入门 Spring 5 之使用Spring WebFlux开发响应式应用. lambda与函数式(15min) Reactor 3 响应式编程库(60min) ...

  6. (6)Spring WebFlux性能测试——响应式Spring的道法术器

    本系列其他文章见:<响应式Spring的道法术器>. 前情提要:Reactor快速上手 | Spring WebFlux快速上手 本文源码 1.4 从负载测试看异步非阻塞的优势 前面总是& ...

  7. (11)照虎画猫深入理解响应式流规范——响应式Spring的道法术器

    本系列其他文章见:<响应式Spring的道法术器>. 前情提要:响应式流 | Reactor3快速上手 2 响应式编程之法 上一章本着"快速上手"的原则,介绍了响应式流 ...

  8. (3)lambda与函数式——响应式Spring的道法术器

    本系列文章索引:<响应式Spring的道法术器> 前情提要: 什么是响应式编程 | 响应式流 本文源码 1.3 Hello,reactive world 前面两篇文章介绍了响应式编程和响应 ...

  9. Spring WebFlux快速上手——响应式Spring的道法术器

    [url=https://blog.csdn.net/get_set/article/details/79480233]Spring WebFlux快速上手--响应式Spring的道法术器[/url]

最新文章

  1. Redis设计与实现
  2. 自动配置原理精讲||@Conditional ||怎么知道哪些自动配置类生效? 启用debug=true属性(在配置文件配置);
  3. 征战蓝桥 —— 2014年第五届 —— C/C++A组第4题——史丰收速算
  4. linux网络编程九:splice函数,高效的零拷贝
  5. 深度学习--Keras总结
  6. 黑夜主权个人团队html源码 简单修改即可使用
  7. jqueryAjax在客户端发送请求的方式(摘抄!)
  8. android截屏方法是黑屏,Android截屏SurfaceView黑屏问题的解决办法
  9. Invalid argument: Subshape must have computed start >= end since stride is negative, but is 0 and 2
  10. java-php-python-ssm基于智能选课系统的设计与实现计算机毕业设计
  11. 发布、发版、上线流程
  12. 青岛新媒体运营教程:教你玩转抖音企业号,6步玩转抖音蓝v号
  13. Rabbitmq 定时任务
  14. source insight 4.0 使用make命令编译
  15. 软件工程之制定计划①(可行性研究报告、项目开发计划)
  16. JSON和byte[]
  17. 引用Bootstrap无法显示样式,可能是安装的版本和参考的文档不相符
  18. Java判断某特殊字符串结尾的2种方法
  19. webservice 天气预报的接口
  20. 汽车仪表盘上的学问:识别各种指示灯

热门文章

  1. 能力是被逼出来的!!有压力才有动力
  2. tinymce引入后未显示_tinyMCE使用方法与心得详解
  3. 4、特征选择(filter):卡方检验特征筛选
  4. Linux字符界面字符颜色显示
  5. HTML使川锚标签,HTML属性标签大全..doc
  6. 什么是软件性能测试?你真的了解性能测试吗?
  7. 堆栈区别java总结_java 堆栈的区分,区别
  8. python pip如何upgrade
  9. win7 与 ubuntu双系统 ubuntu系统无法启动问题
  10. 华为Vs爱立信:非卫翰思无能 而是任正非太厉害