Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >响应式编程

响应式编程

作者头像
春哥大魔王
发布于 2019-11-19 04:50:51
发布于 2019-11-19 04:50:51
1.5K0
举报

写在前面

之前发了一篇Reactor到WebFlux,WebFlux整套技术栈是由Spring提供的,Pivotal致力于解决java在云平台上的工作负载。

erlang这种80年代的语言就提出了响应式编程模型,为什么最近流行起来了?

原因有:硬件多核cpu,虚拟化云计算,软件系统可以轻易获得更高性能,系统需要更快的响应,系统规模变得超载,需要更好的利用系统资源。

响应式宣言:更灵活的系统,能够容忍失败,更好地处理失败事件,更有效。

响应式编程特点

响应式编程不会让你的系统更快,但可以让你的系统更加高效,是一种非阻塞编程模型,面向未来的编程模型。

响应式编程在进行同步操作时,不会占用线程,在传统的servlet模型时,在进行跨服务调用时,等待响应结果时,依然会占用线程,对于内存而言线程是沉重的。

在同一条线程中需要等待和返回或者在不切换线程情况下执行一系列操作,这种场景下响应式编程会比较高效,框架会优化尽量让你的操作在一个线程上执行。

异步编程和响应式编程的区别:他们应用于相同领域,不同在于响应式编程有pull,push,和背压。

响应式真正意义在于打破servlet api的单线程连接,响应式编程在web层的意义在于能更合理的使用线程。

响应式编程和函数式编程一样,应该在合适的地方运用而不是强行使用它。

为了解决背压在网络中的应用,和Rsocket进行了合作,Rsocket是为了替代http信息和指令的异步传递。

响应式编程框架思想

rxJava2和Spring Reactor开发是一拨人,rxJava是对于2014年响应式编程标准的实现,Spring Reactor是对于2017年响应式编程标准的实现,rxJava推荐1.8之前使用,也只部分支持响应式编程,Spring Reactor推荐1.8+使用,Spring Reactor是真正的非阻塞响应式编程。

Mono和Flux类似于一个小票,在调用服务得到结果之前,不会阻塞,可以异步在完成任务之后通过小票获取结果返回响应。

响应式编程四种角色:publisher,subscriber,processor,subscription。

publisher发消息 —> subscription订阅消息 —> subscriber消费消息。

面对失败,传统方式通过try catch,响应式编程将失败看作一个事件,需要响应处理,其他任务还需要继续。

响应式编程中发布的事件只有对他感兴趣的订阅者才会处理,消息驱动是先订阅再处理。

设计模式的选择:观察者模式,迭代器模式,状态管理和持久模式,流程模式,消息流模式等。

响应式和微服务关系:利用消息驱动,异步非阻塞性质。

背压就是断路器。

写在后面

响应式编程是面向未来的编程模式,未来的世界是过载的,通过响应式编程可以最大限度的发挥系统的资源能力。

数据库存储还没有支持响应式,因为他们还是具体响应式io实现,jdbc是一种阻塞命令式的api,没法在异步编程中使用,社区有R2DBC响应式的jdbc。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
我对响应式编程中Mono和Flux的理解
很多同学反映对响应式编程中的Flux和Mono这两个Reactor中的概念有点懵逼。但是目前Java响应式编程中我们对这两个对象的接触又最多,诸如Spring WebFlux、RSocket、R2DBC。我开始也对这两个对象头疼,所以今天我们就简单来探讨一下它们。
码农小胖哥
2020/09/01
3K0
我对响应式编程中Mono和Flux的理解
重学SpringBoot3-Spring WebFlux之Reactive-Streams规范
随着现代系统对高吞吐量、低延迟和可扩展性需求的增加,响应式编程逐渐成为处理异步数据流的重要范式。上一篇文章介绍了 Reactor核心概念,而 Reactor 的基础就是 Reactive-Streams 规范,它定义了一套标准化的异步数据处理接口,用于在不同的响应式编程框架和库之间实现兼容性。
CoderJia
2024/10/23
1810
重学SpringBoot3-Spring WebFlux之Reactive-Streams规范
Spring Boot从入门到精通-使用WebFlux进行响应式编程(1)
例如,在以往的编程方式中,定义了一个变量a=b+c。b和c在以后的程序中发生了变化,但是a的值却还是开始的值;但是在响应式编程中a的值却依然可以根据b和c进行改变。
我的小熊不见了丶
2019/05/22
1.8K0
Spring-webflux 响应式编程
Spring 提供了两个并行堆栈。一种是基于带有 Spring MVC 和 Spring Data 结构的 Servlet API。另一个是完全反应式堆栈,它利用了 Spring WebFlux 和 Spring Data 的反应式存储库。在这两种情况下,Spring Security 都提供了对两种堆栈的支持。
鱼找水需要时间
2023/02/16
1.6K0
Spring-webflux 响应式编程
响应式编程——Reactor
Spring5更新后,其中有一个号称是可以替代SpringMVC的功能——Spring WebFlux,其是一个响应式变成框架。WebFlux是Spring5封装的Reactor框架。Reactor 是一个用于JVM的完全非阻塞的响应式编程框架,具备高效的需求管理(即对 “背压(backpressure)”的控制)能力。它与 Java 8 函数式 API 直接集成,比如 CompletableFuture, Stream, 以及 Duration。它提供了异步序列 API Flux(用于[N]个元素)和 Mono(用于 [0|1]个元素),并完全遵循和实现了“响应式扩展规范”(Reactive Extensions Specification)。
黑洞代码
2021/01/14
1.7K0
响应式编程——Reactor
深度长文:从bio到nio到aio,再到响应式编程
要问计算机系统里,有哪些概念比较折腾人,nio绝对能算上一个。配合着多是异的网络编程,nio加上多线程一般能够完成双杀。
xjjdog
2021/08/25
7950
Reactor响应式编程 之 简介
Reactor 项目始于 2012 年。 经过长时间的内部孵化,于 2013 年发布 Reactor 1.x 版本。 Reactor 1 在各种架构下都能成功部署,包括开源的(如 Meltdown)和商业的(如 Pivotal RTI)。2014年,通过与一些新兴的响应式数据流规范合作,重新设计并于 2015 年 4 月发布 Reactor 2.0 版本。
伍六七AI编程
2022/11/02
1.3K0
Java一分钟之-Spring WebFlux:响应式编程
在Java的世界里,Spring框架一直扮演着举足轻重的角色。随着技术的演进,Spring也与时俱进地推出了支持响应式编程模型的Spring WebFlux框架。本文将带你快速入门Spring WebFlux,探讨其核心概念、常见问题、易错点及规避策略,并通过代码示例让你直观感受响应式编程的魅力。
Jimaks
2024/06/16
4390
Spring Boot 中的响应式编程和 WebFlux 入门
Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕。
纯洁的微笑
2019/05/06
3.9K0
Spring Boot 中的响应式编程和 WebFlux 入门
从Reactor到WebFlux
为了应对高并发场景下到服务端编程需求,微软最先提出了一种异步编程到方案Reactive Programming,也就是反应式编程。
春哥大魔王
2019/11/06
4.8K0
什么是响应式流?
本文来源:https://blog.csdn.net/get_set/article/details/79466402
Java3y
2019/10/17
2.4K0
今日榜首|10年高级技术专家用7000字带你详解响应式技术框架
对于响应式编程来说,响应式流是一种非阻塞、响应式、异步流处理、支持背压的技术标准,包括运行时环境(JVM和JavaScript)及网络协议。JDK 9发布的Flow API(java.util.concurrent.Flow)和响应式流规范呼应,成为响应式编程事实上的标准。
愿天堂没有BUG
2022/10/28
1.6K0
今日榜首|10年高级技术专家用7000字带你详解响应式技术框架
一文读懂响应式编程到底是什么?
本文作者知秋,节选自《Java编程方法论:响应式Spring Reactor 3设计与实现》一书。 -------
博文视点Broadview
2023/05/19
1.1K0
一文读懂响应式编程到底是什么?
浅谈java响应式编程以及Reactor 3框架
Reactor 3是一个围绕Reactive Streams规范构建的库,它在JVM上引入了响应式编程的一个范例。目前Spring5 引入的Webflux就是reactor 3实现的一个响应式web框架。Spring Cloud Gateway是Webflux的一个网关场景实践。想学好上面这两项技术必须搞明白响应式编程以及Reactor 3。本篇文章中小胖哥将带你简单了解响应式编程和Reactor 3。
码农小胖哥
2019/12/08
1.5K0
外行人都能看懂的WebFlux,错过了血亏
如果有关注我公众号文章的同学就会发现,最近我不定时转发了一些比较好的WebFlux的文章,因为我最近在学。
Rude3Knife的公众号
2019/11/18
6640
响应式编程
在传统的请求响应模型中,每个客户端请求会分配一个线程,这些线程会一直等待直到请求完成,这可能导致资源的浪费和性能瓶颈。响应式编程使用异步非阻塞的方式,通过订阅和处理事件流来处理请求。
Jimmy_is_jimmy
2023/07/31
4800
响应式编程
想让系统更具有弹性?了解背压机制和响应式流的秘密!
从“流”的概念出发,并引入响应式流程规范,从而分析响应式编程中所包含的各个核心组件。
JavaEdge
2023/07/21
4950
想让系统更具有弹性?了解背压机制和响应式流的秘密!
为什么使用Reactive之反应式编程简介
前一篇分析了Spring WebFlux的设计及实现原理后,反应式编程又来了,Spring WebFlux其底层还是基于Reactive编程模型的,在java领域中,关于Reactive,有一个框架规范,叫【Reactive Streams】,在java9的ava.util.concurrent.Flow包中已经实现了这个规范。其他的优秀实现还有Reactor和Rxjava。在Spring WebFlux中依赖的就是Reactor。虽然你可能没用过Reactive开发过应用,但是或多会少你接触过异步Servlet,同时又有这么一种论调:异步化非阻塞io并不能增强太多的系统性能,但是也不可否认异步化后并发性能上去了。听到这种结论后在面对是否选择Reactive编程后,是不是非常模棱两可。因为我们不是很了解反应式编程,所以会有这种感觉。没关系,下面看看反应式编程集大者Reactor是怎么阐述反应式编程的。
kl博主
2023/11/18
4540
简单理解响应式编程
非阻塞的异步编程,映射在代码中本质就是回调函数,与响应式编程模型对应的是传统的 指令式编程 ;
eeaters
2021/12/07
8570
简单理解响应式编程
未来的趋势,什么是响应式编程?
这个表达式 其实就是一个新的语法糖,这里Java8主要是对语法做了简化,让我们java的代码更加的简洁
冷环渊
2021/12/15
1.2K0
未来的趋势,什么是响应式编程?
相关推荐
我对响应式编程中Mono和Flux的理解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档