Spring 响应式编程,真香!!!_世界观热点

2023-01-19 08:20:04 来源: 程序员客栈

一、前言

响应式编程是啥?


(资料图)

为啥要有响应式编程?

响应式流的核心机制是什么?

Spring 响应式编程能解决我们平时开发的什么痛点?

Spring 响应式编程有哪些应用场景?

Spring 响应式编程未来的趋势如何?

开篇六连问,等咱们熟悉完再来真香也不迟,我们废话少说,直接来畅游 Spring 响应式编程的世界。

二、响应式编程是啥?

在计算中,响应式编程或反应式编程(Reactive programming)是一种面向数据串流和变化传播的声明式编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

有点抽象?没有关系,老周这就来说道说道。核心的一点响应式编程是声明式编程范式,对命令式编程进行替代的一个范例,这种替代的存在是因为响应式编程解决了命令式编程的限制。大多数开发者都是命令式编程起步的,你写的代码就是一行接一行的指令,按照它们的顺序一次一条地出现。一个任务被执行,程序就需要等到它执行完了,才能执行下一个任务。每一步,数据都需要完全获取到了才能被处理,因此它需要作为一个整体来处理。

命令式编程有个最大的弊端是:当正在执行的任务被阻塞了,特别是一个 IO 任务,例如将数据写入到数据库或从远程服务器获取数据,那么调用该任务的线程将无法做任何事情,直到任务完成。说白了,阻塞的线程就是一种浪费,在如今的环境,线程的资源是那么的宝贵。

相反,响应式编程是函数式和声明式的。响应式编程涉及描述通过该数据流的 pipeline 或 stream,而不是描述的一组按顺序执行的步骤。响应式流处理数据时只要数据是可用的就进行处理,而不是需要将数据作为一个整体进行提供。

三、为啥要有响应式编程?

我们上面也说了命令式编程会线程阻塞,而响应式编程是声明式编程范式的,是对命令式编程进行替代的一个范例。

对于命令式编程的同步阻塞,其实业界是有一些处理方案的,比如在 Java 中,为了实现异步非阻塞,一般会采用回调和 Future 这两种机制,但这两种机制都存在一定局限性。

3.1 回调机制

我们来看下面这个图:

服务 B 的 methodB() 方法调用服务 A 的 methodA() 方法,然后服务 A 的 methodA() 方法执行完毕后,再主动调用服务 B 的 callback() 方法。

回调体现的是一种双向的调用方式,实现了服务 A 和服务 B 之间的解耦。在这个 callback 回调方法中,回调的执行是由任务的结果来触发的,所以我们就可以异步来执行某项任务,从而使得调用链路不发生任何的阻塞。

回调的最大问题是复杂性,一旦在执行流程中包含了多层的异步执行和回调,那么就会形成一种嵌套结构,给代码的开发和调试带来很大的挑战。所以回调很难大规模地组合起来使用,因为很快就会导致代码难以理解和维护,从而造成所谓的“回调地狱”问题。之前公司就遇到代码“回调地狱”问题,十几层的回调,后面的人进来维护估计会吐。

3.2 Future 机制

我们再来看看 Future 这种机制,有一个需要处理的任务,然后把这个任务提交到 Future,Future 就会在一定时间内完成这个任务,而在这段时间内我们可以去做其他事情。下面我们来看看来自 Doug Lea 大神在 Java 中的 Future 接口设计:

我们可以看到,大神在上面的设计来达到一定的异步执行效果。但从本质上讲,Future 以及由 Future 所衍生出来的 CompletableFuture 等各种优化方案就是一种多线程技术。多线程假设一些线程可以共享一个 CPU,而 CPU 时间能在多个线程之间共享,这一点就引入了“上下文切换”的概念。

如果想要恢复线程,就需要涉及加载和保存寄存器等一系列计算密集型的操作。因此,大量线程之间的相互协作同样会导致资源利用效率低下。

3.3 响应式编程实现方法3.3.1 数据流与响应式

数据流就是数据像水流一样源源不断的输入过来,而系统的响应能力就体现在对这些数据流的即时响应过程上。我们可以不采用传统的同步调用方式来处理数据,而是由处于数据库上游的各层组件自动来执行事件,从web到service再到dao层,这个过程就像水流一样,整个数据传递链路都应该是采用事件驱动的方式来进行运作的,这个过程都应该是异步非阻塞的,这就是响应式编程的核心特点。

相较传统开发所普遍采用的“拉”模式,在响应式编程下,基于事件的触发和订阅机制,这就形成了一种类似“推”的工作方式。说白了,就类似现在的 Kafka 等消息引擎,大部分都采用事件驱动的 pub/sub 模式的架构。这种模式的最大优势是生成事件和消费事件的过程是异步执行的,意味着资源之间的竞争关系较少,故服务器的响应能力也就越高。

3.3.2 响应式宣言

响应式宣言是一份构建现代云扩展架构的处方。这个框架主要使用消息驱动的方法来构建系统,在形式上可以达到弹性和韧性,最后可以产生响应性的价值。所谓弹性和韧性,通俗来说就像是橡皮筋,弹性是指橡皮筋可以拉长,而韧性指在拉长后可以缩回原样。

响应性: :只要有可能,系统就会及时地做出响应。即时响应是可用性和实用性的基石,而更加重要的是,即时响应意味着可以快速地检测到问题并且有效地对其进行处理。即时响应的系统专注于提供快速而一致的响应时间,确立可靠的反馈上限,以提供一致的服务质量。这种一致的行为转而将简化错误处理、建立最终用户的信任并促使用户与系统作进一步的互动。

韧性:系统在出现失败时依然保持即时响应性。这不仅适用于高可用的、任务关键型系统——任何不具备回弹性的系统都将会在发生失败之后丢失即时响应性。回弹性是通过复制、遏制、隔离以及委托来实现的。失败的扩散被遏制在了每个组件内部,与其他组件相互隔离,从而确保系统某部分的失败不会危及整个系统,并能独立恢复。每个组件的恢复都被委托给了另一个(外部的)组件,此外,在必要时可以通过复制来保证高可用性。(因此)组件的客户端不再承担组件失败的处理。

弹性:系统在不断变化的工作负载之下依然保持即时响应性。反应式系统可以对输入(负载)的速率变化做出反应,比如通过增加或者减少被分配用于服务这些输入(负载)的资源。这意味着设计上并没有争用点和中央瓶颈,得以进行组件的分片或者复制,并在它们之间分布输入(负载)。通过提供相关的实时性能指标,反应式系统能支持预测式以及反应式的伸缩算法。这些系统可以在常规的硬件以及软件平台上实现成本高效的弹性。

消息驱动:反应式系统依赖异步的消息传递,从而确保了松耦合、隔离、位置透明的组件之间有着明确边界。这一边界还提供了将失败作为消息委托出去的手段。使用显式的消息传递,可以通过在系统中塑造并监视消息流队列,并在必要时应用回压,从而实现负载管理、 弹性以及流量控制。使用位置透明的消息传递作为通信的手段, 得跨集群或者在单个主机中使用相同的结构成分和语义来管理失败成为了可能。非阻塞的通信使得接收者可以只在活动时才消耗资源,从而减少系统开销。

问题:消息驱动与上面提到的事件驱动有啥区别呢?

响应式宣言指出了两者的区别:“消息驱动”中消息数据被送往明确的目的地址,有固定导向;“事件驱动”是事件向达到某个给定状态的组件发出的信号,没有固定导向,只有被观察的数据。

在一个消息驱动系统中,可寻址的接收者等待消息的到来然后响应消息,否则保持休眠状态,消息驱动系统专注于可寻址的接收者。响应式系统更加关注分布式系统的通信和协作以达到解耦、异步的特性,满足系统的弹性和容错性,所以响应式系统更倾向于使用消息驱动模式。

在一个事件驱动系统中,通知的监听者被绑定到消息源上。这样当消息被发出时,它就会被调用,所以,响应式编程更倾向于事件驱动。

下一篇老周会来说下响应式流的核心机制是什么?敬请期待~


欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。

标签: 事件驱动 异步执行 消息传递

上一篇 :

下一篇 :

Spring 响应式编程,真香!!!_世界观热点

一、前言响应式编程是啥?为啥要有响应式编程?响应式流的核心机制是什么?Spring响应式编程能解决我们...

01-19 08:20:04

保持“双顺差” 我国外汇市场供求基本平衡——国家外汇管理局副局长、新闻发言人王春英谈当前外汇领域热点|世界速读

新华社北京1月18日电新华社记者刘开雄国家外汇管理局1月18日发布数据显示,2022年,银行结售汇顺差1073...

01-18 22:59:45

朱玲玲即使离婚也无法撼动在霍家的位置,离婚后遇到真爱

跳水皇后郭晶晶嫁入豪门,不想其他豪门一样会上演夺夫大战,郭晶晶稳坐豪门太太的位置,丈夫霍启刚也对...

01-18 18:09:30

热点!国内商品期货多数收涨 燃料油涨超5%

国内商品期货多数收涨,燃料油涨超5%,LU燃油涨超4%,原油、PTA、玻璃、沥青涨超3%,纸浆、菜粕、棉花、...

01-18 15:02:14

国家电网、江苏、上海电网公司8-9月处理47家不良电力供应商!

一、国家电网公司通报处罚39家不良电力供应商通知【电老虎网】摘录被国家电网公司在输变电项目2014年第...

01-18 11:50:49

大有期货-油脂-1月18日

国际原油期货回落,BMD毛棕榈油期货维持弱势,因为担心1月份出口疲软,林吉特坚挺也带来压力。整体马棕...

01-18 08:58:13

2022年福建省外贸进出口额达1.98万亿元

(记者龙敏)面对国际环境复杂严峻和外部需求不足等困难,福建2022年外贸进出口实现“逆势增长”。福州海...

01-17 23:51:31

2023年2月CFA一级考试题型如何?备考要注意哪些?

2023年2月CFA一级考试题型主要是单项选择题,设A、B和C三个选择,每道选择题分数均等第一场与第二场各90...

01-17 18:04:43

2023元氏春晚节目单

1、开场舞《花开盛世》表演:石家庄市东方茉莉艺术团2、歌曲《元氏行》演唱:范海静3、少儿舞蹈《常山少...

01-17 15:11:44

全省第一!常德创建171个省级充分就业社区(村)

红网时刻1月17日综合(常德日报记者姚懿容通讯员胡燕妮胡月)记者昨日从市就业服务中心获悉,自2022年3...

01-17 11:48:18

【独家焦点】力保群众温暖过冬过年(新春走基层·一线调研)

中石化华北油气分公司采气二厂东胜气田采气员工在进行气井维护作业。  张伟摄(人民视觉)  国网河...

01-17 08:55:24

上市航司披露12月数据 主要运营指标环比回升

去年12月,主要上市航司在运力投入、旅客周转量指标上同比继续下滑,但整体降幅有所收窄,且环比出现回...

01-16 22:22:43

2023年固安县惠民生电子消费券领取指南

2023年固安县惠民生电子消费券领取指南一、领取时间2022年12月8日至2023年2月8日,每天两次发放时间为8:...

01-16 16:54:12

世界微资讯!中牧股份:目前公司及所属子公司、分公司生产经营正常

每经AI快讯,有投资者在投资者互动平台提问:请问贵司生产经营情况如何?有是否继续增持计划?中牧股份(...

01-16 12:22:27

每日观察!华特达因(000915)1月13日主力资金净卖出47.64万元

截至2023年1月13日收盘,华特达因(000915)报收于44 8元,上涨2 85%,换手率1 07%,成交量2 5万手,成交额1 12亿元。

01-16 09:02:36

谢莉斯去世细节曝光:因感染新冠入住呼吸科,去世前遭受巨大痛苦

1月13日,音乐圈再传一则悲痛噩耗,知名歌唱家谢莉斯在北京不幸病逝,终年75岁,爱妻离世之后,谢莉斯的...

01-15 18:54:58

情暖春运|闻雪而动,湖北交投襄阳公司奏响除雪保畅“进行曲”

情暖春运|闻雪而动,湖北交投襄阳公司奏响除雪保畅“进行曲”---受强冷空气影响,从14日起未来三天内,...

01-15 07:42:01

微速讯:冬虫夏草可以放多久 冬虫夏草会发霉吗

冬虫夏草买回来的基本上都是用小盒子装着的,那么它的保存时间一般会是多久呢?冬虫夏草要是放的时间长...

01-14 16:06:19

焦点观察:祝铭震21+7陈盈骏19助攻 广州6人上双大胜山西

原标题:祝铭震21+7陈盈骏19助攻广州6人上双大胜山西央视网消息:北京时间1月13日,CBA常规赛第26轮,广...

01-14 07:09:15

翰宇药业(300199):监事会关于2022年限制性股票激励计划预留授予激励对象名单的审核意见及公示情况说明_世界讯息

证券代码:300199证券简称:翰宇药业公告编号:2023-004深圳翰宇药业股份有限公司监事会关于2022年限制...

01-13 19:45:40

世界短讯!快手新市井中国节弘扬年俗文化,撬动春节消费增量

春节将至,快手推出“新市井中国节”活动,以品牌定制短片、明星及达人系列直播、全民话题参与等多元玩...

01-13 15:17:36

2023年福建省高速公路拟新开工17个项目  投资超千亿元-天天热闻

12日,福建省高速公路建设工作会召开。会上通报,2022年福建全省高速公路完成投资230亿元,开工项目达25...

01-13 11:10:30

力生制药:降血压类药物销售收入在2亿元左右,占公司销售收入的18%左右 全球快资讯

同花顺(300033)金融研究中心1月13日讯,有投资者向力生制药(002393)(002393)提问,请问贵公司的降压...

01-13 07:44:39

尼普顿拟投资10万设立杭州良普空调售后服务有限公司 持股100%

挖贝网1月12日,尼普顿(839305)近日发布公告,根据公司业务发展需要,拟在浙江省杭州市余杭区投资设立...

01-12 20:30:33

酒驾判缓刑可以外出吗:世界报道

酒驾判缓刑可以外出,但需要经考察机关的批准。被宣告缓刑的犯罪分子,应当遵守下列规定:(一)遵守法...

01-12 16:09:21

速读:中兴通讯发布G5系列服务器新品

1月12日,中兴通讯在北京举办“智算筑路数字经济”服务器新品发布会,正式推出基于第四代英特尔至强可扩...

01-12 11:45:47

健身er们“阳康”后,如何科学稳妥地恢复运动? 世界新要闻

新冠感染后“阳康”了好想赶快回健身房“撸铁”可现在到底适不适合锻炼?应该怎样科学恢复运动?这是近...

01-12 09:37:56

聊聊Mybatis的缓存_环球新要闻

记得点击 "欢少的成长之路 ",设为星标⭐后台点击【联系我】,申请加入优质技术学习社群大家好,我是Le...

01-12 07:43:00

奕东电子股东户数减少37户,户均持股4.7万元-环球时讯

奕东电子最新股东户数2 63万户,低于行业平均水平。公司户均持有流通股份2067股;户均流通市值4 7万元。

01-11 22:00:28

Java-创建一个自定义窗口,扁平化界面|世界焦点

众所周知,Java的默认窗口使用的是系统默认样式,那么我们如何自己定义样式使其更好看呢?下面我就来分...

01-11 17:16:48

环球滚动:抢不到复必泰疫苗?存款免费打!这家银行向新客户提供免费疫苗,存款争夺战硝烟四起

香港银行存款争夺战正酣,中信银行国际有限公司(以下简称“中信银行(国际)”或“信银国际”)推出免...

01-11 13:25:29

世界热讯:洁美科技(002859)1月10日主力资金净卖出97.10万元

截至2023年1月10日收盘,洁美科技(002859)报收于28 64元,上涨2 29%,换手率0 56%,成交量2 24万手,成交额6382 94万元。

01-11 08:48:59

买到就想显摆的红色单品,我找到了!

买到就想显摆的红色单品,我找到了!

01-10 22:47:15

夫妻烤火取暖晕倒13岁儿子报警|当前滚动

3人围炉烤红薯,6小时后中毒昏迷近日,上海小李和2个朋友聚在一起用炭火炉烤红薯期间在阁楼内把酒言欢了...

01-10 18:31:49

轻工制2023年造投资策略:迎来更优的配置环境_世界观热点

轻工制造板块综述:年初至今沪深300指数-19 68%,SW轻工制造指数-22 43%,在31个申万一级行业中排名23...

01-10 14:26:45

怎样辨别饺子的生熟呢?

小窍门:饺子煮到肚子圆鼓鼓的,折子都挣开了,好像要涨破了一样,这时饺子就熟了。方法1、首先将水煮沸...

01-10 14:09:18

重点聚焦!忻州劳动合同如何解除

1、企业违法解除劳动合同要支付赔偿金,赔偿金数额是经济补偿金的二倍,在试用期,那肯定是不到六个月了...

01-10 14:07:31

板块异动 | 近月来汽车消费市场已显著回暖 汽车整车板块午后拉升

智通财经APP获悉,1月10日,受近月来汽车消费市场已显著回暖消息影响,A股汽车整车板块午后拉升,截至发...

01-10 14:08:16

一猜就中,很容易看透女人心思的2个生肖-环球微动态

都说女人心海底针,如果你想要猜透女人的心思,基本上很难。特别是很多男人会有这样的想法,这样的抱怨...

01-10 14:03:45

百纳千成董秘回复:管理层将结合公司的发展前景与战略规划,持续深耕主营业务-全球观察

百纳千成(300291)01月10日在投资者关系平台上答复了投资者关心的问题。

01-10 12:22:45

景宁交通违章怎么处理需要什么材料_环球播资讯

1、需要的材料有:(1)车辆行驶证原件或复印件;(2)车辆驾驶人驾驶证原件;(3)车辆驾驶人身份证原件;...

01-10 12:07:44

字节跳动申请注册抖音聊天商标

企查查APP显示,近日,北京字跳网络技术有限公司申请注册3枚“抖音聊天”商标,国际分类涉及设计研究、...

01-10 11:47:13

隔夜SHIBOR报0.6710% 上涨13.20个基点

今日,隔夜SHIBOR报0 6710%,上涨13 20个基点;7天SHIBOR报1 7290%,上涨14 90个基点;3个月SHIBOR报2 3310%,下降0

01-10 11:34:10

天天观察:SaaS行业都在裁员,海外:行业进步;国内:走投无路

SaaS行业开始大规模裁员了。比如,Salesforce计划裁减10%,涉及约8000名员工;国内SaaS公司的裁员比例,...

01-09 20:37:13

柿子馍馍发面做还是死面做?

发面1 柿子做饼用发面。2 将黄柿子用清水洗干净,将柿子皮撕开,然后将果肉连同汤汁一起放入小盆中。3 ...

01-09 18:56:07

头条:近240万家实体店,终究没有迎来2023年的曙光

导读:2022年,实体零售历经“寒冬”。2022年,实体零售历经“寒冬”。国家统计局数据显示,2022年1-11月社会消

01-09 16:02:27

国寿、平安日均赔付超亿元 重疾险居赔付额榜首 每日播报

本报记者冷翠华人身险公司陆续披露2022年理赔服务年报。数据显示,2022年中国人寿寿险公司(以下简称“...

01-09 12:10:51

长沙机场出入境航班恢复正常运行:每日快报

长沙机场出入境航班恢复正常运行

01-09 09:03:11

Wolfspeed与梅赛德斯-奔驰达成碳化硅器件供应合作

证券时报e公司讯,Wolfspeed近日宣布与梅赛德斯-奔驰达成合作。据介绍,梅赛德斯-奔驰部分汽车线的新一...

01-07 00:25:33

当前看点!最暖心祝福送给最特别考生!2023年上海春季高考今开考

今天,新年第一考开锣——2023年上海春季高考和外语一考正式开考。在不少一线教师眼中,今年走上考场的2...

01-06 22:03:09

保持“双顺差” 我国外汇市场供求基本平衡——国家外汇管理局副局长、新闻发言人王春英谈当前外汇领域热点|世界速读
朱玲玲即使离婚也无法撼动在霍家的位置,离婚后遇到真爱
热点!国内商品期货多数收涨 燃料油涨超5%
国家电网、江苏、上海电网公司8-9月处理47家不良电力供应商!
大有期货-油脂-1月18日
2022年福建省外贸进出口额达1.98万亿元
2023年2月CFA一级考试题型如何?备考要注意哪些?
2023元氏春晚节目单
全省第一!常德创建171个省级充分就业社区(村)
【独家焦点】力保群众温暖过冬过年(新春走基层·一线调研)
上市航司披露12月数据 主要运营指标环比回升
2023年固安县惠民生电子消费券领取指南
世界微资讯!中牧股份:目前公司及所属子公司、分公司生产经营正常
每日观察!华特达因(000915)1月13日主力资金净卖出47.64万元
谢莉斯去世细节曝光:因感染新冠入住呼吸科,去世前遭受巨大痛苦
情暖春运|闻雪而动,湖北交投襄阳公司奏响除雪保畅“进行曲”
微速讯:冬虫夏草可以放多久 冬虫夏草会发霉吗
焦点观察:祝铭震21+7陈盈骏19助攻 广州6人上双大胜山西
翰宇药业(300199):监事会关于2022年限制性股票激励计划预留授予激励对象名单的审核意见及公示情况说明_世界讯息
世界短讯!快手新市井中国节弘扬年俗文化,撬动春节消费增量
2023年福建省高速公路拟新开工17个项目  投资超千亿元-天天热闻
力生制药:降血压类药物销售收入在2亿元左右,占公司销售收入的18%左右 全球快资讯
尼普顿拟投资10万设立杭州良普空调售后服务有限公司 持股100%
酒驾判缓刑可以外出吗:世界报道
速读:中兴通讯发布G5系列服务器新品
健身er们“阳康”后,如何科学稳妥地恢复运动? 世界新要闻
聊聊Mybatis的缓存_环球新要闻
奕东电子股东户数减少37户,户均持股4.7万元-环球时讯
Java-创建一个自定义窗口,扁平化界面|世界焦点
环球滚动:抢不到复必泰疫苗?存款免费打!这家银行向新客户提供免费疫苗,存款争夺战硝烟四起
世界热讯:洁美科技(002859)1月10日主力资金净卖出97.10万元
买到就想显摆的红色单品,我找到了!
夫妻烤火取暖晕倒13岁儿子报警|当前滚动
轻工制2023年造投资策略:迎来更优的配置环境_世界观热点
怎样辨别饺子的生熟呢?
重点聚焦!忻州劳动合同如何解除
板块异动 | 近月来汽车消费市场已显著回暖 汽车整车板块午后拉升
一猜就中,很容易看透女人心思的2个生肖-环球微动态
百纳千成董秘回复:管理层将结合公司的发展前景与战略规划,持续深耕主营业务-全球观察
景宁交通违章怎么处理需要什么材料_环球播资讯
字节跳动申请注册抖音聊天商标
隔夜SHIBOR报0.6710% 上涨13.20个基点
天天观察:SaaS行业都在裁员,海外:行业进步;国内:走投无路
柿子馍馍发面做还是死面做?
头条:近240万家实体店,终究没有迎来2023年的曙光
国寿、平安日均赔付超亿元 重疾险居赔付额榜首 每日播报
长沙机场出入境航班恢复正常运行:每日快报
Wolfspeed与梅赛德斯-奔驰达成碳化硅器件供应合作
当前看点!最暖心祝福送给最特别考生!2023年上海春季高考今开考
天天热门:中国武夷获中信银行30亿元授信额度,双方达成战略合作
X 广告
行业动态
X 广告

Copyright ©  2015-2022 北冰洋植物网版权所有  备案号:沪ICP备2020036824号-3   联系邮箱:562 66 29@qq.com