【打怪升级】Spring响应式编程
文章平均质量分 95
享学IT
Enjoy learning IT !
展开
-
(2)响应式流——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要: 什么是响应式编程1.2 响应式流上一节留了一个坑——为啥不用Java Stream来进行数据流的操作? 原因在于,若将其用于响应式编程中,是有局限性的。比如如下两个需要面对的问题:Web 应用具有I/O密集的特点,I/O阻塞会带来比较大的性能损失或资源浪费,我们需要一种异步非阻塞的响应式的库,而Jav...原创 2018-03-07 09:21:32 · 21236 阅读 · 21 评论 -
(10)响应式宣言、响应式系统与响应式编程——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式编程 | 响应式流1.5 响应式系统1.5.1 响应式宣言关注“响应式”的朋友不难搜索到关于“响应式宣言”的介绍,先上图:这张图凝聚了许多大神的智慧和经验,见官网,中文版官网,如果你认可这个宣言的内容,还可以签下你的大名。虽然这些内容多概念而少实战,让人感觉是看教科书,但是字字千金,不时...原创 2018-03-10 11:57:52 · 7420 阅读 · 0 评论 -
(11)照虎画猫深入理解响应式流规范——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式流 | Reactor3快速上手2 响应式编程之法上一章本着“快速上手”的原则,介绍了响应式流的概念,以及Reactor 3的使用。这一章,我们基于Reactor 3的实现原理,从《响应式流规范》入手,深入了解响应式流开发库。2.1 响应式流规范现代软件对近乎实时地处理数据的需求越来越强烈,...原创 2018-03-11 11:19:52 · 9581 阅读 · 13 评论 -
(1)什么是响应式编程——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。响应式编程之道1.1 什么是响应式编程?在开始讨论响应式编程(Reactive Programming)之前,先来看一个我们经常使用的一款堪称“响应式典范”的强大的生产力工具——电子表格。举个简单的例子,某电商网站正在搞促销活动,任何单品都可以参加“满199减40”的活动,而且“满500包邮”。吃货小明有选择障碍(当然...原创 2018-03-06 10:54:22 · 43989 阅读 · 45 评论 -
(15)Reactor 3 Operators——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:Reactor3快速上手 | 深入理解响应式流规范 本文测试源码2.5 Reactor 3 Operators虽然响应式流规范中对Operator(以下均称作”操作符“)并未做要求,但是与RxJava等响应式开发库一样,Reactor也提供了非常丰富的操作符。2.5.1 丰富的操作符本系列...原创 2018-03-19 14:00:51 · 4724 阅读 · 9 评论 -
附2:Reactor 3 之选择合适的操作符——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:Reactor3快速上手 | 深入理解响应式流规范 | Reactor3操作符本节的内容来自我翻译的Reacto 3 参考文档——如何选择操作符。由于部分朋友打开github.io网速比较慢或上不去,贴出来方便大家查阅。 如果一个操作符是专属于 Flux 或 Mono 的,那么会给它注明前缀。 公共的操...原创 2018-03-19 14:04:06 · 14904 阅读 · 4 评论 -
(16)Reactor的测试——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:Reactor3快速上手 | 深入理解响应式流规范 本文测试源码2.6 测试在非常重视DevOps的今天,以及一些奉行TDD的团队中,自动化测试是保证代码质量的重要手段。要进行Reactor的测试,首先要确保添加reactor-test依赖。 reactor-test 用 Maven 配置 ...原创 2018-03-19 14:33:13 · 7083 阅读 · 1 评论 -
(17)Reactor的调试——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:Reactor3快速上手 | 深入理解响应式流规范 本文测试源码2.7 调试在响应式编程中,调试是块难啃的骨头,这也是从命令式编程到响应式编程的切换过程中,学习曲线最陡峭的地方。在命令式编程中,方法的调用关系摆在面上,我们通常可以通过stack trace追踪的问题出现的位置。但是在异步的响应式编程中...原创 2018-03-19 14:35:45 · 21422 阅读 · 0 评论 -
(18)Hot vs Cold——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式流 | Reactor3快速上手 | 深入理解响应式流规范 本文测试源码2.8 Hot vs Cold到目前为止,我们讨论的发布者,无论是Flux还是Mono,都有一个特点:订阅前什么都不会发生。当我们“创建”了一个Flux的时候,我们只是“声明”/“组装”了它,但是如果不调用.subscrib...原创 2018-03-20 09:11:27 · 3826 阅读 · 1 评论 -
(12)自定义数据流(实战Docker事件推送的REST API)——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式流 | Reactor3快速上手 | 深入理解响应式流规范2.2 自定义数据流这一小节介绍如何通过定义相应的事件(onNext、onError和onComplete) 创建一个 Flux 或 Mono。Reactor提供了generate、create、push和handle等方法,所有这些方法都使用 ...原创 2018-03-14 08:42:38 · 6381 阅读 · 16 评论 -
附1:多线程并发方案的不足——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 本篇内容是响应式流的附录。(以下接响应式流的1.2.1.1节,关于“CPU眼中的时间”的内容。请不要单独看这一篇内容,否则有些内容可能让你摸不着头脑 0..0)多线程的方式有其不完美之处,而且有些难以驾驭——一、耗时的上下文切换CPU先生不太乐意切换进程,每次换进程的时候都需要一个小时,因为每次切换进程的时候,办公...原创 2018-03-14 13:18:14 · 4356 阅读 · 12 评论 -
(19)Reactor Processors——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式流 | Reactor3快速上手 | 深入理解响应式流规范 2.9 ProcessorProcessor既是一种特别的发布者(Publisher)又是一种订阅者(Subscriber)。 所以你能够订阅一个Processor,也可以调用它们提供的方法来手动插入数据到序列,或终止序列。前面一直在聊响应...原创 2018-04-03 10:41:50 · 5640 阅读 · 2 评论 -
(9)异步Mongo驱动的性能测试——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:Spring WebFlux快速上手 | Spring WebFlux性能测试 | Spring WebClient性能测试1.4.4 同步与异步数据库驱动的性能对比许多数据库已陆续推出官方的异步驱动,在Spring Data Reactive中,已经集成了Mongo、Casandra、Redis、Couch...原创 2018-03-10 11:56:19 · 4324 阅读 · 3 评论 -
响应式Spring的道法术器(Spring WebFlux 教程)
Spring WebFlux 2小时快速入门Spring 5 之使用Spring WebFlux开发响应式应用。lambda与函数式(15min)Reactor 3 响应式编程库(60min)Spring Webflux和Spring Data Reactive开发响应式应用(45min)通过以上内容相信可以对Spring 5.0 推出的响应式开发有了初步的体会。如果希望有更加...原创 2018-03-07 09:38:37 · 46951 阅读 · 26 评论 -
响应式编程库Reactor 3 Reference Guide参考文档中文版
Project Reactor 是 Spring WebFlux 的御用响应式编程库,与 Spring 是兄弟项目。 关于如何基于Spring的组件进行响应式应用的开发,欢迎阅读我的系列文章《响应式Spring的道法术器》。官方参考文档地址:http://projectreactor.io/docs/core/release/reference/ 中文翻译文档地址:http://h...原创 2018-03-07 15:25:59 · 17958 阅读 · 4 评论 -
(3)lambda与函数式——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式编程 | 响应式流1.3 Hello,reactive world前面两篇文章介绍了响应式编程和响应式流的特性,一味讲概念终是枯燥,还是上手敲一敲代码实在感受一下响应式编程的“手感”吧。这一节,我们先了解一下lambda与函数式(已经了解的朋友可以直接跳到1.3.2),熟悉一下如何使用Reactor...原创 2018-03-08 09:51:37 · 29043 阅读 · 11 评论 -
(4)Reactor 3快速上手——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式流 | lambda与函数式1.3.2 ReactorReactor与Spring是兄弟项目,侧重于Server端的响应式编程,主要 artifact 是 reactor-core,这是一个基于 Java 8 的实现了响应式流规范 (Reactive Streams specification)的响应...原创 2018-03-08 09:54:18 · 46974 阅读 · 32 评论 -
(5)Spring WebFlux快速上手——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式流 | lambda与函数式 | Reactor快速上手1.3.3 Spring WebFluxSpring WebFlux是随Spring 5推出的响应式Web框架。1)服务端技术栈Spring提供了完整的支持响应式的服务端技术栈。如上图所示,左侧为基于spring-webmvc的技...原创 2018-03-08 09:57:11 · 159974 阅读 · 91 评论 -
(13)Reactor的backpressure策略——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式流 | Reactor3快速上手 | 深入理解响应式流规范 | Reactor3自定义数据流2.3 不同的回压策略 许多地方也叫做“背压”、“负压”,我在《Reactor参考文档》中是翻译为“背压”的,后来在看到有“回压”的翻译,忽然感觉从文字上似乎更加符合。这一节讨论回压的问题,有两个前提:...原创 2018-03-15 08:54:29 · 6922 阅读 · 2 评论 -
(6)Spring WebFlux性能测试——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:Reactor快速上手 | Spring WebFlux快速上手 本文源码1.4 从负载测试看异步非阻塞的优势前面总是“安利”异步非阻塞的好处,下面我们就实实在在感受一下响应式编程在高并发环境下的性能提升。异步非阻塞的优势体现在I/O操作方面,无论是文件I/O、网络I/O,还是数据库读写,都可能存在阻塞的情...原创 2018-03-09 08:46:04 · 30428 阅读 · 40 评论 -
(14)Reactor调度器与线程模型——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:Reactor3快速上手 | 深入理解响应式流规范 | Reactor3自定义数据流 本文测试源码2.4 调度器与线程模型在1.3.2节简单介绍了不同类型的调度器Scheduler,以及如何使用publishOn和subscribeOn切换不同的线程执行环境。下边使用一个简单的例子再回忆一下: ...原创 2018-03-16 09:22:24 · 8372 阅读 · 7 评论 -
(7)Spring WebClient与RestTemplate性能对比——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:Spring WebFlux快速上手 | Spring WebFlux性能测试 本文源码1.4.2 调用带有延迟的服务负载分析由于微服务架构的盛行,大型系统内服务间基于HTTP API进行调用的会相当频繁。Netflix的系统有500+的微服务,感受一下~我们的测试如下图所示,服务A调用服务B的API,...原创 2018-03-10 11:35:04 · 21992 阅读 · 8 评论 -
(20)操作符熔合——响应式Spring的道法术器
本系列其他文章见:《响应式Spring的道法术器》。 前情提要:响应式流 | Reactor3快速上手 | 深入理解响应式流规范 2.10 操作符熔合操作符熔合是响应式编程领域比较前沿的研究话题,目的在于通过将多个操作符以某种方式熔合起来,以达到优化的效果,进而降低开销(比如执行时间,内存)。 以下部分内容参考了 Dávid Karnok 的 Operator-fus...原创 2018-04-03 10:43:30 · 3713 阅读 · 8 评论