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

2023-01-19 06:52:31 来源: 程序员客栈

一、前言

响应式编程是啥?

为啥要有响应式编程?

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


(资料图片仅供参考)

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 06:52:31

圆明园拾光买卖街推出儿童剧本游戏、国风演出等新春活动

北京商报讯(记者吴其芸)1月18日,北京商报记者从圆明园拾光买卖街方面获悉,拾光买卖街开展新年活动,...

01-18 21:36:54

中邮保险获批筹建中邮保险资产管理有限公司 焦点

中邮保险获批筹建中邮保险资产管理有限公司2023年01月18日17:03中国网财经

01-18 17:05:42

不止螺蛳粉、麻辣花生,台当局又禁大陆制鼻胃管输入,网友:坑老百姓 天天微动态

据台湾《联合报》18日报道,台“经济部”继近日公布禁止大陆制“螺蛳粉”输入台湾后,17日晚又公告黄飞...

01-18 14:31:48

1月17日进口棉报价持平-全球新视野

1月17日,国际棉花价格指数(SM)99 40美分 磅,无涨跌,折一般贸易港口提货价17003元 吨(按1%关税...

01-18 10:53:39

焦点讯息:华铁应急:融资净偿还22.81万元,融资余额6384.61万元(01-17)

2023年1月17日华铁应急融资净偿还22 81万元,融资余额6384 61万元

01-18 07:52:09

翡翠蓝水料子特征是什么?5大特征一秒认出_世界热点

翡翠蓝水料子特征1市场上翡翠的颜色越来越丰富,各种翡翠的特点极为相似,让我们来了解下什么是蓝水翡翠...

01-17 21:49:32

快看点丨佛山灵活就业社保补贴需要办理就业登记吗?

佛山灵活就业社保补贴需要办理就业登记吗?答:是的。首次补贴申请应于办理就业登记之日起1年内提出。PS...

01-17 17:12:35

中油中钢用“中国台湾”赴陆注册 王美花认了 天天滚动

中国国民党“立委”赖士葆今日在“立法院”表示,台湾中油公司、中钢公司,都用“中国台湾”去大陆注册...

01-17 14:46:51

往期回顾:新型冠状病毒感染恢复期定义 味觉嗅觉障碍以及听力减退的康复管理 长期咳嗽的康复管理|世界时讯

一、新型冠状病毒感染恢复期定义满足以下4点的新型冠状病毒感染人群可认为进入恢复期:①体温恢复正常3...

01-17 11:26:25

全球微资讯!人民日报|南京市建邺区家庭医生孙滨:健康守护人 关爱送上门

《人民日报》2023年1月17日06版版面截图原标题:江苏省南京市建邺区家庭医生孙滨——健康守护人  关爱...

01-17 07:44:43

中国医疗网络(00383.HK)建议“20合1”并股 每手买卖单位更改为5000股 今日快讯

格隆汇1月16日丨中国医疗网络(00383 HK)宣布,董事会建议进行股份合并,拟“20合1”合并股份。于本公告...

01-16 20:36:59

V观财报|雷赛智能员工持股计划受让价远高于股价,深交所:合理吗?

1月12日,雷赛智能公司披露《2023年员工持股计划(草案)》称,本期员工持股计划的股份来源为公司回购专用...

01-16 16:04:23

上海世博土地控股10亿元公司债将于1月29日付息 利率3.7%

观点网讯:1月16日,上海世博土地控股有限公司发布2021年公开发行公司债券(第一期)2023年付息公告。债...

01-16 11:28:34

全球快消息!年夜饭预制菜 佛跳墙已经“不够看”

出去吃:网红餐厅推出年夜饭在家吃:年轻人也想露一手(引题)年夜饭预制菜佛跳墙已经“不够看”(主题...

01-16 07:39:44

车企集团的Web3明牌布局!

原力区原作从2021年开始,明面布局Web3行业的大型企业日渐增多。不论是Web2头部企业或是老牌上市公司,...

01-15 16:42:24

世界播报:我市圆满完成2022年煤炭增产保供任务

本报讯记者李雨桐报道:1月12日,古城煤矿选煤厂,滚滚“乌金”源源不断乘着皮带翻涌而出。通过洗选、加...

01-15 02:15:33

拟13亿美元债转股 花样年境外债务重组取得进展

在一系列利好政策下,花样年境外债重组也取得进展。“新年宜补血、降火”。2023年1月9日,花样年集团在...

01-14 13:20:28

每日观点:央行:流通中数字人民币存量达136.1亿元

新华社北京1月13日电(吴雨、李论衡)中国人民银行副行长宣昌能13日介绍,截至2022年末,流通中数字人民...

01-14 01:37:07

又见风水研报!11月为港股高点?这家投行也邀人“算卦”… 全球信息

1月12日,中信里昂证券发布了一年一度的《恒生指数年度风水指南》。该“胡诌式”指南指出,3月及8月是港...

01-13 18:24:30

当前热文:特斯拉下调在美国所有新车型售价 Model Y标续降价20%

DoNews1月13日消息(丁凡)日前,特斯拉美国官网当地时间1月12日大幅下调了所有新车型的价格,其中降幅...

01-13 14:14:58

《陈阿牛》:黄金98空83平;日内还需做多。|环球热资讯

我们用一生的时间做着两件事情:行走与选择行走的路。没有行走的人生,如一潭枯井,缺了生命的活力,丢...

01-13 10:26:26

天天热文:春运返程火车票开抢 请收好这份出行指南

蔡敏婕摄  换乘需关注12306通知站内便捷换乘车站增至100个  节假日、春运等出行高峰期间,旅客有时...

01-13 05:34:11

观天下!桂冠电力(600236.SH)2022年年度完成发电量415.36亿千瓦时 同比增长19.33%

智通财经APP讯,桂冠电力(600236)(600236 SH)发布公告,截至2022年12月31日,公司直属及控股公司电厂20...

01-12 18:44:18

环球热点评!华泰证券:维持宝胜国际买入评级 目标价升至1.08港元

华泰证券发布研究报告称,维持宝胜国际(03813)“买入”评级,22Q4零售折扣或同比上升,叠加经营去杠杆...

01-12 12:21:11

全球信息:国家统计局:CPI环比由降转平,同比涨幅略有扩大

证券时报网讯,国家统计局今天发布了2022年12月份全国CPI(居民消费价格指数)数据。对此,国家统计局城...

01-12 09:40:03

播报:Silverstream签约为招商轮船4艘大型LNG船安装空气润滑系统

2023年1月11日,SilverstreamTechnologies宣布已与招商局能源运输股份有限公司(简称招商轮船)签署协议...

01-12 08:02:45

社论:扛得住风险,未来方能可期

社论:扛得住风险,未来方能可期

01-11 22:25:25

亿翰智库“第五届中国乡村振兴暨小镇产业发展论坛”圆满落幕|世界实时

2023年1月10日,由亿翰智库主办的“2022中国乡村振兴暨小镇产业发展论坛”(第五届)成功举办。来自全国...

01-11 17:35:46

畅想未来 2023年手机还能怎样进化 当前快看

手机这种产品非常神奇,从最初的单一功能通讯工具,发展到现如今集合了电话、相机、音乐播放器、游戏机...

01-11 13:47:09

天津首笔债券通“南向通”交易落地 跨境人民币业务品种实现再扩充 焦点热门

中新网天津1月10日电 (庞喻文)记者从中国人民银行天津分行获悉,近

01-11 09:24:53

强美元走向终结?

强美元走向终结?

01-10 23:29:25

奉天省造老银元价格(2023年01月10日)

金投白银网提供奉天省造老银元价格(2023年01月10日),奉天省银元最新消息(2023年01月10日)。

01-10 19:04:45

哈森股份(603958.SH):珍兴国际拟减持不超2%股份 世界观点

格隆汇1月10日丨哈森股份公布,珍兴国际自减持计划公告之日起15个交易日后6个月内,通过集中竞价交易方式...

01-10 15:33:45

动态焦点:*ST计通: 公司第五届董事会第三次会议决议公告

*ST计通:公司第五届董事会第三次会议决议公告

01-10 13:21:18

环球今热点:公司以旷工解除劳动合同

公司不能以之前的旷工为由辞退您。如果公司这么做,属于非法解除合同,您可以主张要求继续履行合同,或...

01-10 12:48:52

美媒:可口可乐和百事可乐正接受FTC调查 涉嫌软饮料市场价格歧视|天天热点评

美国政治新闻网站Politico当地时间1月9日援引知情人士报道,可口可乐公司和百事公司因软饮料市场潜在的...

01-10 12:42:45

焦点日报:小袋鼠逾期还款后征信会被扣分吗

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

01-10 12:18:50

国美易卡逾期1000会影响征信吗 环球播报

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

01-10 11:54:56

班切罗25分兰姆26+8 水花休战勇士不敌魔术 今日热讯

班切罗25分兰姆26+8水花休战勇士不敌魔术,兰姆,班切罗,勇士,魔术,库里,克雷·汤普森

01-09 17:27:33

新冠伤脑子?“脑雾”真的存在吗?

“同时,我们的脑细胞对缺氧十分敏感,新冠病毒感染后出现的缺氧同样可以损伤大脑,造成认知障碍的一系...

01-09 17:39:15

在周星驰电影中,配角总比主角出彩,也个个都是功夫高手!

原来甄子丹当年真的没有吹牛,释延能的腿真的能踢死人,释延能之所以如此大张其词,其实并不是他在糊弄...

01-09 17:31:21

李家超:下一步目标是短时间内实现全面通关

据大公报报导,昨日是香港与内地恢复通关首日,行政长官李家超及多位官员早上一同巡视了落马洲支线口岸...

01-09 14:02:13

江西省交通违章网上处理需要多久 视讯

1、可以通过邮政代办,客服热线11185;通过12580热线代办;通过公安交警信息网办理等方式处理交通违章扣...

01-09 13:11:54

【全球新要闻】药明康德(02359)1月5日注销已回购股份66.22万股

智通财经APP讯,药明康德(603259)(02359)发布公告,于2023年1月1日至2023年1月5日期间行使2019年A股激励...

01-09 10:36:40

【全球快播报】泰尔股份股东户数下降7.43%,户均持股4.28万元

泰尔股份2023年1月6日在深交所互动易中披露,截至2022年12月20日公司股东户数为4 02万户,较上期(2022年

01-07 01:23:49

2023年上海应该担心的,其实是二手房!|环球精选

刚刚过去的2022年12月,上海二手房成交约1 4万套。继10、11月的1 6万套低位之后继续下探,

01-06 22:57:56

世界即时:中金辐照2022年预计净利9583.17万-1.14亿同比增长10%-31%成本费用严格管控

挖贝网1月5日,中金辐照(300962)近日发布2022年年度业绩预告,报告期内归属于上市公司股东的净利润约9...

01-06 20:31:39

伊之密01月05日获深股通增持75.56万股 每日播报

01月05日,伊之密获深股通增持75 56万股,最新持股量为113 59万股,占公司A股总股本的0 24%。

01-06 18:17:41

2023广元市新冠病毒核酸检测机构

现将广元市新冠病毒核酸检测机构公示如下↓备注:全市二级以上公立医疗机构24小时提供核酸采样服务,市...

01-06 14:11:46

圆明园拾光买卖街推出儿童剧本游戏、国风演出等新春活动
中邮保险获批筹建中邮保险资产管理有限公司 焦点
不止螺蛳粉、麻辣花生,台当局又禁大陆制鼻胃管输入,网友:坑老百姓 天天微动态
1月17日进口棉报价持平-全球新视野
焦点讯息:华铁应急:融资净偿还22.81万元,融资余额6384.61万元(01-17)
翡翠蓝水料子特征是什么?5大特征一秒认出_世界热点
快看点丨佛山灵活就业社保补贴需要办理就业登记吗?
中油中钢用“中国台湾”赴陆注册 王美花认了 天天滚动
往期回顾:新型冠状病毒感染恢复期定义 味觉嗅觉障碍以及听力减退的康复管理 长期咳嗽的康复管理|世界时讯
全球微资讯!人民日报|南京市建邺区家庭医生孙滨:健康守护人 关爱送上门
中国医疗网络(00383.HK)建议“20合1”并股 每手买卖单位更改为5000股 今日快讯
V观财报|雷赛智能员工持股计划受让价远高于股价,深交所:合理吗?
上海世博土地控股10亿元公司债将于1月29日付息 利率3.7%
全球快消息!年夜饭预制菜 佛跳墙已经“不够看”
车企集团的Web3明牌布局!
世界播报:我市圆满完成2022年煤炭增产保供任务
拟13亿美元债转股 花样年境外债务重组取得进展
每日观点:央行:流通中数字人民币存量达136.1亿元
又见风水研报!11月为港股高点?这家投行也邀人“算卦”… 全球信息
当前热文:特斯拉下调在美国所有新车型售价 Model Y标续降价20%
《陈阿牛》:黄金98空83平;日内还需做多。|环球热资讯
天天热文:春运返程火车票开抢 请收好这份出行指南
观天下!桂冠电力(600236.SH)2022年年度完成发电量415.36亿千瓦时 同比增长19.33%
环球热点评!华泰证券:维持宝胜国际买入评级 目标价升至1.08港元
全球信息:国家统计局:CPI环比由降转平,同比涨幅略有扩大
播报:Silverstream签约为招商轮船4艘大型LNG船安装空气润滑系统
社论:扛得住风险,未来方能可期
亿翰智库“第五届中国乡村振兴暨小镇产业发展论坛”圆满落幕|世界实时
畅想未来 2023年手机还能怎样进化 当前快看
天津首笔债券通“南向通”交易落地 跨境人民币业务品种实现再扩充 焦点热门
强美元走向终结?
奉天省造老银元价格(2023年01月10日)
哈森股份(603958.SH):珍兴国际拟减持不超2%股份 世界观点
动态焦点:*ST计通: 公司第五届董事会第三次会议决议公告
环球今热点:公司以旷工解除劳动合同
美媒:可口可乐和百事可乐正接受FTC调查 涉嫌软饮料市场价格歧视|天天热点评
焦点日报:小袋鼠逾期还款后征信会被扣分吗
国美易卡逾期1000会影响征信吗 环球播报
班切罗25分兰姆26+8 水花休战勇士不敌魔术 今日热讯
新冠伤脑子?“脑雾”真的存在吗?
在周星驰电影中,配角总比主角出彩,也个个都是功夫高手!
李家超:下一步目标是短时间内实现全面通关
江西省交通违章网上处理需要多久 视讯
【全球新要闻】药明康德(02359)1月5日注销已回购股份66.22万股
【全球快播报】泰尔股份股东户数下降7.43%,户均持股4.28万元
2023年上海应该担心的,其实是二手房!|环球精选
世界即时:中金辐照2022年预计净利9583.17万-1.14亿同比增长10%-31%成本费用严格管控
伊之密01月05日获深股通增持75.56万股 每日播报
2023广元市新冠病毒核酸检测机构
当前简讯:专业连锁板块1月5日涨1.93%,爱施德领涨,主力资金净流入977.37万元
X 广告
资讯
X 广告

Copyright ©  2015-2022 南方畜牧网版权所有  备案号:粤ICP备18023326号-21   联系邮箱:855 729 8@qq.com