Spring 响应式编程,真香!!!

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

一、前言

响应式编程是啥?

为啥要有响应式编程?


(资料图)

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

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后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。

上一篇 : 又一个新项目搞完啦!!!

下一篇 : 2022年1-12月中国钢材进口数据统计分析

x
广告
高层声音

敦煌有约 牵手世界——第六届丝绸之路(敦煌)国际文化博览会掠影

2023-09-09

美国无家可归者问题日趋严重

2023-09-09

蒙面唱将韦小力第几期(蒙面唱将韦小力是哪一期)

2023-09-09

lostdir文件怎么在电脑恢复(LOST.DIR是什么文件可以删吗)

2023-09-09

灼灼琉璃夏2官网在哪下载 最新官方下载安装地址

2023-09-09

【动态】奉贤区深化知识产权“专利导航服务”模式,助力企业创新发展

2023-09-09

广州地铁4号线线路图(广州地铁4号线)

2023-09-08

国睿科技今天怎么啦(2023年09月08日国睿科技股份有限公司怎么样)

2023-09-08

主力复盘:超5亿封板中国卫通 3亿流出贵州茅台

2023-09-08

以链黏商 昆山打造千亿级咖啡产业链

2023-09-08

深圳外卖小哥积水中游泳?视频曾被辟谣,发生地非深圳

2023-09-08

广汽集团冯兴亚:埃安正在加速推进IPO

2023-09-08

家的新刚需丨惠达卫浴智能马桶,让生活更精致

2023-09-08

钢筋搭接规范(钢筋笼钢筋搭接规范)

2023-09-08

绍兴新增了这种车道!能驶入吗?最新说明来了

2023-09-08

首个算力产业企业综合传播力指数榜单发布

2023-09-08

中电环保9月1日快速反弹

2023-09-01

保研应该越来越难了

2023-09-01

阿根廷首笔人民币直接投资落地

2023-09-01

俄土外长举行新闻发布会 介绍黑海港口农产品外运协议替代方案协商情况

2023-09-01

月饼热量高吗 盘点月饼热量)

2023-09-01

暑期博物馆“爆满”折射中国传统文化热

2023-08-31

23四川65票面利率为2.5000%

2023-08-31

一心堂:接受东北证券等机构调研

2023-08-31

上海市检察院原党组书记、检察长张本才,受审

2023-08-31

NHTSA要求特斯拉提供Autopilot配置数据

2023-08-31

俄罗斯否决关于延长马里制裁的安理会决议草案

2023-08-31

河北水利水电工程学院官网 河北水利水电学院官网

2023-08-31

零跑首款全球化车型B11 9月4日慕尼黑车展见

2023-08-31

当杭州亚运会遇见中国风

2023-08-31

文字找茬大师女生减肥过关攻略

2023-08-31

博拓生物08月30日获沪股通增持19万股

2023-08-31

永兴材料08月30日获深股通增持8.52万股

2023-08-31

甘肃省庆阳市2023-08-31 05:37发布大雾黄色预警

2023-08-31

花鸟鱼虫市场有卖猫的吗_花鸟鱼虫市场

2023-08-31

m8800(关于m8800的基本详情介绍)

2023-08-30

【石榴花开 籽籽同心】走进多民族社区:延边丹英社区绽放民族团结之花

2023-08-30

QQ飞车红包达人(qq飞车红包)

2023-08-30

中国铁建(01186)发布中期业绩 归母净利润136.49亿元 同比增加1.18%

2023-08-30

2023年安全诚信航运公司名单公示

2023-08-30

泰和科技:8月30日召开董事会会议

2023-08-30

农发行湘潭县支行:创新担保合作模式 助力小微企业发展

2023-08-30

推进再生水利用,解决水资源短缺 全国非常规水源利用量显著提升

2023-08-30

《女囚风暴1995》上映,阿娇周秀娜主演,女子监狱,暴力美学

2023-08-30

莫莱茨·姆贝基(关于莫莱茨·姆贝基简述)

2023-08-30

lookcrazy金庸人物(look crazy)

2023-08-30

江华:选图书 购文具 迎开学

2023-08-30

超BBA!30万以上SUV销量第一 理想L7、L8、L9三车月交付同步破万

2023-08-30

关于宁波公积金查询的一些信息

2023-08-30

阿联正式官宣退役!周琦加盟广东后,内线完成交替,安心离队

2023-08-30

*ST太安股东户数下降4.52%,户均持股2.96万元

2023-08-29

江西上饶信州区:多措并举引育数字经济人才

2023-08-29

怪物vodafonewifi巨大(zooxxx)

2023-08-29

香港证监会联同香港廉署采取行动打击怀疑市场操纵集团

2023-08-29

天津西站到滨海机场多远 天津西到滨海机场

2023-08-29

8月29日国内锌合金市场价格汇总

2023-08-29

恒力石化董秘回复: 公司原油多为进口,暂时没有可供出口的原油

2023-08-29

怎么样才能修复shell32.dll文件错误

2023-08-29

滕州市中心人民医院手术麻醉科党总支举办“无影情暖 医脉相承”研学活动

2023-08-29

安达智能(688125)8月28日主力资金净卖出105.34万元

2023-08-29

一怒为红颜什么意思解释(一怒为红颜什么意思)

2023-08-29

建设工业(002265):8月28日北向资金减持16.56万股

2023-08-29

面板行业底部初现 京东方二季度业绩环比大增

2023-08-28

论文题目怎么定题_论文题目怎么定

2023-08-28

美迪凯:上半年亏损约3104.61万元

2023-08-28

合肥365房产网二手房(合肥房产资讯365

2023-08-28

安徽旌德:梯田水稻迎丰收

2023-08-28

浙商证券:给予银轮股份买入评级

2023-08-28

俄罗斯飞船事故(陈北航:国际空间站一飞船发生泄漏事故)

2023-08-28

女儿的身高计算公式_孩子的身高计算公式

2023-08-28

北京市广播电视局政务服务实现全天候“自助办”

2023-08-28

洋浦5家企业获得近8000万元技改提质奖金

2023-08-28

中级经济师如何认定职称?

2023-08-28

天津体育学院内蒙古录取分数线 天津体育学院内蒙古招生人数多少

2023-08-27

杭州全力打造首届碳中和亚运会

2023-08-27

杭州这群“10后”沉浸式体验国学,直呼:“入学礼终身难忘!”

2023-08-27

14.09-18.09万!捷途旅行者性价比让大众直呼“哇塞”

2023-08-27

隆基电磁(873425):2023年上半年净利润3041.48万元,同比减少22.86%

2023-08-27

海口实验中学高中部怎么样_海口实验中学高中部

2023-08-27

普里戈任座机黑匣子找到了!

2023-08-27

山西博物院四大新展9月开幕

2023-08-27

闽南语歌曲车站原唱 歌曲车站原唱

2023-08-27

像“猪仔”一样被转卖、受尽折磨……云南多地紧急发文!

2023-08-26

小程序可申请社会救助!重庆“救助通”试点区县扩至29个

2023-08-26

《RCEP海运贸易指数报告(2023)》发布 预计2023年RCEP成员国间海运贸易形势将好于全球

2023-08-26

众星抵制日本核污染水排海:郭帆用日漫讽刺,贾乃亮强烈谴责

2023-08-26

简笔画灯笼怎么画(灯笼怎么画)

2023-08-26

多家券商相继降佣 助力资本市场活跃度提升

2023-08-26

邵阳市部、省属及市直机关单位家属院落创文管理工作现场推进会召开

2023-08-26

今年服贸会9月2日在京启幕 18件“湖北服务”展品将亮相

2023-08-26

股票行情快报:宁波富邦(600768)8月25日主力资金净卖出114.87万元

2023-08-26

【晚新闻】河北成功办理首张线上《出生医学证明》;石家庄将打造一城市快速路

2023-08-25

2023年篮球世界杯首场比赛拉开战幕

2023-08-25

孙志新(关于孙志新简述)

2023-08-25

东阿农商银行:强化渠道业务拓展,推动高质量发展

2023-08-25

扬州普通话考试需要提前多久到达考点

2023-08-25

2023长沙英语四六级成绩在哪查?

2023-08-25

最新进展!涉及济南轨道交通4号线、6号线、7号线

2023-08-25

共12条线路!成都市低运量轨道交通线网规划方案请你提建议

2023-08-25

靖安:万亩“秋茶”采摘忙

2023-08-25

嘉楠科技美股跌7.98%

2023-08-25

沙特联精彩1夜!本泽马传射斩首球 菲米助攻凯西绝杀 米林直红

2023-08-25

如何练字最有效硬笔(如何练字最有效)

2023-08-25

净化市容环境,江岸区后湖街道清理违规户外广告

2023-08-24

如何申报农产品加工业市级贷款贴息补助政策?需满足这三个条件

2023-08-24

印度七年来首次禁止食糖出口,或引发世界食品通胀加剧

2023-08-24

2023长沙迎江路道路工程建设进展(持续更新)

2023-08-24

曝特斯拉或在沈阳建厂!特斯拉回应:没有要建厂

2023-08-24

长实亲海駅II周六售最后35伙

2023-08-24

Easter是什么意思 easter是什么意思英语

2023-08-24

普里戈任坠机身亡,10个不容忽视的细节

2023-08-24

《孤注一掷》票房一路飙升 金晨成30亿票房女主

2023-08-24

上海推出29项任务举措,推动临港新片区新一轮发展

2023-08-24

分析:Starknet代币或在11月29日迎来首次解锁,此日期前应完成必要交互以博取空投

2023-08-24

海淀区西北旺镇屯佃村原村委会主任范宝华接受审查调查

2023-08-24

国内成品油价格小幅上调

2023-08-24

天空:格拉纳达在与曼联谈A费的租借事宜,伯恩利也对球员有意

2023-08-23

美国夏威夷毛伊岛大火仍有上千人失联

2023-08-23

直真科技:筹划向特定对象发行股票事项

2023-08-23

华阳国际: 2023年半年度财务报告

2023-08-23

华立股份:终止实施湖北华置立装饰材料厂区项目

2023-08-23

走!和张大千来一场穿越时空的“对话”

2023-08-23

福建省泉州市2023-08-23 13:42发布暴雨黄色预警

2023-08-23

2022东莞汽油今日价格查询

2023-08-23

重庆:车船税电子完税证明线上可开 办理更方便

2023-08-23

英伟达和威睿扩大合作伙伴关系

2023-08-23

三叶草生物-B(02197)首席执行官梁果拟增持不多于200万港元的股份

2023-08-23

这种“身份证”,即将全覆盖

2023-08-23

明泰铝业(601677):8月22日北向资金减持50.92万股

2023-08-23

2023世界显示产业大会将于9月7日在成都举行

2023-08-22

【新机】iQOOZ8来了 跑分现身 搭载天玑8200 性能提升~

2023-08-22

泡泡玛特:H1净利4.7亿与去年全年相当,海外业务净利大增183%

2023-08-22

七夕节服务器崩了?Steam登热搜引热议

2023-08-22

民安社区志愿服务队 关于民安社区志愿服务队介绍

2023-08-22

女生考上中戏,被妈妈偷走录取通知书阻挠入学,她无奈痛哭求助

2023-08-22

绷紧防汛救灾这根弦

2023-08-22

八哥鸟说话你好视频(教八哥鸟说你好的录音)

2023-08-22

集度“改姓”与小米“沉默”

2023-08-22

以色列母子羽球世锦赛晋级 65岁母亲继续刷新纪录

2023-08-22

国金证券给予东方电热买入评级 电加热器龙头 预镀镍0-1迎放量

2023-08-22

商誉减值V财务洗澡 世纪华通沃格光电拓维信息的十字路口(下)

2023-08-22

投资项目竣工决算审计应关注的8大重点

2023-08-22

社保基金二季度持有科创板股名单(附股)

2023-08-22

300余名应征女青年入围体检

2023-08-22

Ale承认自己不如TheShy!却因谈论BP再起风波

2023-08-22

坚固又大气!同安区四座人行天桥完成改造

2023-08-21

『每日篇』P站日榜动漫壁纸分享 _230821档

2023-08-21

降雨助力!济南 “月牙飞瀑”胜景醉人

2023-08-21

自治区交通运输厅原党组书记陈鸿起接受审查调查

2023-08-21

陆地探测四号01星顺利进入工作轨道

2023-08-21

辅警韩靖跳江救人,彰显血性、责任与使命

2023-08-21

收评:沪指跌逾1%失守3100点 环保板块逆市走强

2023-08-21

花花“视”界|《诗经》中的萱草花开啦

2023-08-21

多国出现新变异株!拟命名“Pi”

2023-08-21

国信证券给予唐山港增持评级 受益于渤海湾港口整合 装卸主业有望迎量价齐升

2023-08-21

让口袋公园装满百姓幸福

2023-08-21

经济是否需要悲观?天风宏观:即使不依靠政策,经济也至少有两个方面的乐观因素

2023-08-21

辽宁省锦州市2023-08-21 08:37发布暴雨黄色预警

2023-08-21

铝锅的危害和处理方法?(铝锅的危害)

2023-08-21

科鲁兹天窗保险丝在保险盒什么位置(科鲁兹天窗保险在哪)

2023-08-21

子曰人而不仁如礼何人而不仁如乐何朗读(子曰人而不仁如礼何人而不仁如乐何)

2023-08-20

今日dnf纯净的黄金增幅书和纯净的增幅书(DNF 5周年纯净的黄金增幅书什么作用)

2023-08-20

小铭切瓜丨电影《孤注一掷》火了,常见的电信网络诈骗有哪些套路?会涉及到哪些罪名?

2023-08-20

2连板启迪环境:公司经营情况及内外部经营环境未发生重大变化

2023-08-20

汽车首保什么机油最好(汽车首保使用什么机油)

2023-08-20

为什么你需要开始冷藏你的红葡萄酒以及你应该将瓶子放在冰箱里多长时间

2023-08-20

《黑神话:悟空》试玩报告B面:复归常人

2023-08-20

山姜是毒还是药 山姜是毒还是药

2023-08-20

股票前加xd是好是坏 股票前加XD是什么意思

2023-08-20

纳塞尔汽车制造有限公司向菲律宾出口标致3008

2023-08-19

北方稀土:打造一批世界一流的稀土生产智能制造示范线

2023-08-19

向群众报告 | “美丽乡村行”交通安全巡回宣讲活动走进重庆石柱黄水

2023-08-19

乳腺birads3类可以买重疾险吗?买重疾险的方式有哪些?

2023-08-19

拔智齿,能瘦脸?智齿:想多了!

2023-08-19

俄媒:普京视察顿河畔罗斯托夫特别军事行动指挥部,听取报告

2023-08-19

“恨之入骨 大快人心” !央视街采医药反腐

2023-08-19

注册“高仿”账号贬损他人,法院判决侵犯名誉权

2023-08-19

金徽酒2023年上半年营收增长超24% 归母净利已接近去年全年

2023-08-19

梦幻西游开区表查询 梦幻西游维护到几点

2023-08-19

韩乔生点评沃尔科特:当初被整个英格兰寄予厚望,未完全兑现天赋

2023-08-18

新能源汽车下乡 浙江到2025年建成充电桩230万个以上

2023-08-18

葡桃UNHIP-HOP(关于葡桃UNHIP-HOP简述)

2023-08-18

北京这些博物馆暑期取消周一闭馆

2023-08-18

您现在可以在新奥迪中观看YouTube视频

2023-08-18

青年未就业群体专场招聘会举办 近2000名受灾地区毕业生收到邀请

2023-08-18

郧阳区行政审批局:夏日送清凉 关爱暖人心

2023-08-18

“也不敢卖,就想自己看!”226张淫秽光碟,沪一男子帮人搬家变“扫货”?

2023-08-18

美媒:受各种灾害困扰增多 夏威夷已成美国最危险的州之一

2023-08-18

美债收益率创15年新高 全球资产“风声鹤唳”

2023-08-18

市、区、街道三级合力整改,黄陂青云村荒废淤泥田变生态农业基地

2023-08-18

二手家电在哪儿买(二手家电在哪买)

2023-08-18

汽车车门重新喷漆有什么影响吗(车门喷漆是整个车门漆全磨掉吗)

2023-08-18

177.79亿!暑期档票房新纪录诞生!

2023-08-17

宁波瑞利特电子有限公司(姜素拉骂利特)

2023-08-17

ZPMC助力台湾首座全自动化码头正式启用

2023-08-17

建行深圳市分行原风险总监韩凤林受贿超836万,一审获刑11年

2023-08-17

恒大汽车两年亏掉840亿 恒大高管年薪过千万?官方回应

2023-08-17

*ST园城(600766)8月17日主力资金净卖出134.08万元

2023-08-17

山西泽州:万亩红薯趟出“甜蜜”致富路

2023-08-17

港股异动 | 小鹏汽车-W(09868)现涨超5% 明日发布业绩 机构称全新产品周期即将发力

2023-08-17

返回顶部