Spring 响应式编程,真香!!!|世界短讯

2023-01-14 02:58:25 来源: 程序员客栈
一、前言

响应式编程是啥?


(资料图)

为啥要有响应式编程?

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

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-14 02:58:25

2023春节黄山风景区景点开放情况 世界热资讯

春节期间,黄山风景区景点开放情况怎样?(1)景区南大门、北大门开放,游客可从南、北大门进出景区;西...

01-13 18:22:32

建工修复3项技术获北京市新技术新产品(服务)认定

证券时报网讯,日前,北京市科学技术委员会、中关村科技园区管理委员会等5部门发布了第十七批北京市新技...

01-13 14:38:52

今日热门!新疆跨省异地就医管理子系统停机公告

为落实《国家医保局财政部关于进一步做好基本医疗保险跨省异地就医直接结算工作的通知》(医保发〔2022〕...

01-13 10:32:47

全球通讯!中国红十字基金会向北京市红十字会救援服务中心捐赠 应急救护车辆设备

1月12日在北京市红十字会救援服务中心拍摄的中国红十字基金会应急救护车辆捐赠仪式现场。当日,中国红十...

01-13 05:57:26

全球速读:俄央行宣布:开始购入人民币作为财富储备基金,背后有何用意?

俄央行宣布:开始购入人民币作为财富储备基金,背后有何用意?

01-12 19:08:03

前沿热点:操作系统唯一企业!统信软件入选教育部“数字校园综合解决方案”名单

近日,教育部中央电化教育馆公布了2022年“数字校园综合解决方案”第三批测试合格名单,统信软件凭借在...

01-12 15:43:05

山东日照海域一油船爆炸 15人获救2人失联-环球热点

山东日照海域一油船爆炸15人获救2人失联    山东海域一油船爆炸,15人获救2人失联。据悉,1月10日16...

01-12 15:23:58

港股异动 | 信义光能(00968)涨超5%领涨光伏股 光伏产业链利润进入再分配阶段

智通财经APP获悉,光伏股早盘普涨,截至发稿,信义光能涨4 47%,报10 28港元;福莱特玻璃(06865)涨3 ...

01-12 10:53:23

焦点速递!iPhone 16 Pro将取消灵动岛?屏下Face ID要来了

距离iPhone16系列的发布还有1年多的时间,不过一份研究报告却指出,iPhone16Pro系列可能会放弃灵动岛设...

01-12 09:18:27

热文:2022,我家难忘的事儿

张颖惠(左)在查看病人情况。  受访者供图  舒进正在检修电路。  受访者供图  刘依林在写稿。...

01-12 06:05:09

今日播报!无锡有哪些好玩的夜市?(持续更新)

图源图虫id1103691859374899200梁溪--南长街景区简介:南长街是无锡的一条老街,位于无锡市南长区中心地...

01-11 20:49:54

2023年南宁动物园春节人多吗_世界聚焦

➤南宁动物园春节人多吗:一般节假日人会比较多,提前买好票再去景区,避免排队花较长时间!特别提醒市...

01-11 16:53:14

重庆初级会计证怎么领? 速递

2022年度全国会计专业技术初级资格证书从2023年1月12日开始发放,现将证书领取有关事项通知如下:一、领...

01-11 12:33:49

京粮控股:公司有一家联营企业北京正大饲料有限公司,公司对其持股50%-环球时讯

京粮控股(000505)01月11日在投资者关系平台上答复了投资者关心的问题。

01-11 11:15:30

盐蒸橙子有哪些功效_环球快资讯

关于盐蒸橙子有哪些功效的内容,包含盐蒸橙子的功效和作用盐蒸橙子的功效有哪些盐蒸橙子的做法与功效盐蒸...

01-11 08:02:16

彩虹驱蚊液的正确使用?-今日讯

正确使用方法1、拧开电热蚊香液瓶盖,将药液瓶的芯棒与电热液体蚊香器的底部中心对齐,小心旋入固定。2...

01-10 21:19:17

春节前 四川省将启动森林草原防灭火专项督导|全球球精选

人民网成都1月9日电(朱虹)近日,四川省森防指火灾风险隐患排查整治组制定2023年春节前夕开展森林草原...

01-10 17:58:49

环球看热讯:圣达生物(603079)1月10日主力资金净卖出215.64万元

截至2023年1月10日收盘,圣达生物(603079)报收于12 71元,下跌1 32%,换手率0 64%,成交量1 09万手,成交额1384 21万元。

01-10 15:25:39

全球快播:欧克科技: 欧克科技:更正公告

欧克科技:欧克科技:更正公告

01-10 13:30:50

还呗网贷逾期7天还不起影响征信吗

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

01-10 12:46:16

视频号直播未来将投入50亿流量 助力创作者成长

在1月10日举办的2023微信公开课PRO上,视频号直播团队表示,过去一年,视频号直播已融入用户社会生活的...

01-10 12:23:51

焦点速读:女职工怀孕期间可以辞退或终止劳动关系吗

女职工怀孕期间一般情况下不可以辞退或终止劳动关系女职工怀孕期间的话,有下列情况,用人单位可以解除...

01-10 11:58:46

小米贷款网贷9万逾期还不起会不会被对方起诉 天天快看点

可能会。如果用户使用网贷消费之后出现了逾期,并且经过网贷机构和第三方的催收人员催缴欠款无果之后,...

01-10 11:45:56

绵竹市交警大队安排部署春运道路交通安全工作

2023年春运自1月7日开始,至2月15日结束,共计40天。为了保障春运期间绵竹市道路交通和谐有序、安全畅通...

01-09 17:17:51

篮网记住!别让西蒙斯投进罚球 全球快资讯

篮网记住!别让西蒙斯投进罚球,西蒙斯,篮网队,热火队,阿杜,凯文杜兰特,公牛

01-09 17:23:04

《知否》原著和明兰成姐妹的妾室秋娘:她炽烈的爱,没有被辜负 每日头条

秋娘后来被抬了姨娘,和蓉姐相处的像母女,和明兰像姐妹,这样的结局,极好。和古代通房女人比起来,秋...

01-09 17:24:58

焦点速看:南阳中院召开破产审判工作新闻发布会

1月6日下午,南阳市中级人民法院召开新闻发布会,向社会通报2022年全市法院破产审判工作情况,并发布企...

01-09 13:57:01

分期乐借款逾期三年拖欠多久上征信

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

01-09 12:48:06

环球信息:可降解塑料板块1月5日涨1.05%,奥园美谷领涨,主力资金净流入4.13亿元

1月5日可降解塑料板块较上一交易日上涨1 05%,奥园美谷领涨。当日上证指数报收于3155 22,上涨1 01%...

01-09 10:26:10

医疗废物暂时储存暂停不得超过多久 环球视讯

1、不得超过四十八小时。且储存设施、设备,应当远离医疗区、食品加工区和人员活动区以及生活垃圾存放场...

01-07 01:14:23

世界快消息!新疆240MW风电项目开标,这家整机商预中标,单价1998元/kW

中国风电新闻网讯:1月5日,国神公司大南湖电厂多能互补项目(煤电灵活性改造配建24万千瓦风电项目)风...

01-06 22:47:29

信息:锦兴国际控股(02307.HK)附属拟752亿越南盾收购越南地块

锦兴国际控股发布公告,于2023年1月5日,该公司的间接全资附属公司锦弘(香港)制衣有限公司(买方)、卖方D...

01-06 20:40:16

ST弘高1月6日开盘跌停-快资讯

以下是ST弘高在北京时间1月6日09:26分盘口异动快照:1月6日9点26分,ST弘高开盘跌停,报1 57元,目前封...

01-06 18:24:30

南通开发区烟花禁放倡议

亲爱的市民朋友:您好!2022年1月30日《南通市人民政府关于扩大市区禁止燃放烟花爆竹区域的通告》正式施...

01-06 14:13:01

天天精选!土壤修复板块1月5日跌0.36%,鸿达兴业领跌,主力资金净流出5916.66万元

1月5日土壤修复板块较上一交易日下跌0 36%,鸿达兴业领跌。当日上证指数报收于3155 22,上涨1 01%。...

01-06 12:41:58

奥特佳:年产100万台电动压缩机项目在今年年中建成后 年末产能预计将达到200万台|每日快报

奥特佳近期接受投资者调研时称,随着公司电动压缩机销量的稳步上升,产能也在逐步增长。2022年末公司电...

01-05 14:58:54

全球消息!【手慢无】铝合金外壳散热佳 Gopala四合一拓展坞仅售49元

Gopala四合一拓展坞目前京东售价59元,可参加满59元减10元活动,实际到手价仅需49元!这款拓展坞拥有带...

01-05 12:58:23

试驾致在e:HEV,第四代i-MMD真香,好开运动又省油

目前在油电混动的领域,丰田和本田在市场中还是有着绝对的统治力,即使电动化时代已经到来,它们还是在...

01-05 11:12:58

全球动态:走过行业低谷,2023年全球面板业酝酿重组并购机会

弱增长、再平衡是2023年全球面板业的关键词。

01-04 18:46:24

新城控股:公司土储1.31亿平方米,满足未来2-3年的开发运营所需

“公司‘房地产开发+商业运营’的双轮驱动将继续维稳精进,通过甄别潜力区域与城市,把握结构性机会,做...

01-04 16:07:55

华仁药业:公司暂无血氧仪产品-当前观察

同花顺(300033)金融研究中心1月4日讯,有投资者向华仁药业(300110)提问,请问贵公司目前有无血氧仪...

01-04 12:37:24

中国电信总部业务平台及云资源池类工程系统集成服务集采:数智科技、神州新桥两家入围|当前滚动

C114讯1月4日消息(焦焦)从中国电信官网获悉,中国电信昨日晚间公示了2023-2021年度总部业务平台及云资...

01-04 09:52:41

儿童火车票按年龄购买期待更多领域跟进

全国铁路从2023年1月1日起对儿童优惠票实行车票实名制管理,凭儿童的有效身份证件购买儿童优惠票,实名制...

01-04 05:05:22

拉肚子痛可以吃香蕉吗-每日时讯

拉肚子痛应该注意调理饮食,及时补充各种缺少的营养物质,香蕉是含有各种微量元素的水果,那么,拉肚子...

01-03 20:26:39

聚焦:2023上半年福建省中小学教师资格考试(笔试)报名方式及步骤

福建省2023年上半年中小学教师资格考试(笔试)公告根据教育部教育考试院统一部署,现将我省2023年上半年...

01-03 16:55:58

同仁堂董秘回复:公司的安宫牛黄丸、苏合香丸入选国家卫健委印发的《新型冠状病毒肺炎诊疗方案(试行第九版)》_天天热资讯

同仁堂(600085)01月03日在投资者关系平台上答复了投资者关心的问题。

01-03 14:22:18

微信名阳光简单男生网名 充满阳光的男生清新微信网名

1、带着情书2、既见君子3、京昭4、温柔5、神明6、熬夜逆子7、日落于西8、江妄9、胜过10、清照11、贪婪12...

01-03 11:36:24

冷冻半年的西红柿还能吃吗? 焦点热文

冷冻半年的西红柿时间太长了,不建议食用。番茄放冰箱会流失营养,不宜在冰箱久存的。含水量较多的果蔬或...

01-03 06:57:20

华章科技(01673)公布年度业绩,亏损3.67亿元 同比盈转亏

华章科技(01673)公布截至2022年6月30日止年度年度业绩公告,公司实现收入

01-02 22:09:29

2023春节黄山风景区景点开放情况 世界热资讯
建工修复3项技术获北京市新技术新产品(服务)认定
今日热门!新疆跨省异地就医管理子系统停机公告
全球通讯!中国红十字基金会向北京市红十字会救援服务中心捐赠 应急救护车辆设备
全球速读:俄央行宣布:开始购入人民币作为财富储备基金,背后有何用意?
前沿热点:操作系统唯一企业!统信软件入选教育部“数字校园综合解决方案”名单
山东日照海域一油船爆炸 15人获救2人失联-环球热点
港股异动 | 信义光能(00968)涨超5%领涨光伏股 光伏产业链利润进入再分配阶段
焦点速递!iPhone 16 Pro将取消灵动岛?屏下Face ID要来了
热文:2022,我家难忘的事儿
今日播报!无锡有哪些好玩的夜市?(持续更新)
2023年南宁动物园春节人多吗_世界聚焦
重庆初级会计证怎么领? 速递
京粮控股:公司有一家联营企业北京正大饲料有限公司,公司对其持股50%-环球时讯
盐蒸橙子有哪些功效_环球快资讯
彩虹驱蚊液的正确使用?-今日讯
春节前 四川省将启动森林草原防灭火专项督导|全球球精选
环球看热讯:圣达生物(603079)1月10日主力资金净卖出215.64万元
全球快播:欧克科技: 欧克科技:更正公告
还呗网贷逾期7天还不起影响征信吗
视频号直播未来将投入50亿流量 助力创作者成长
焦点速读:女职工怀孕期间可以辞退或终止劳动关系吗
小米贷款网贷9万逾期还不起会不会被对方起诉 天天快看点
绵竹市交警大队安排部署春运道路交通安全工作
篮网记住!别让西蒙斯投进罚球 全球快资讯
《知否》原著和明兰成姐妹的妾室秋娘:她炽烈的爱,没有被辜负 每日头条
焦点速看:南阳中院召开破产审判工作新闻发布会
分期乐借款逾期三年拖欠多久上征信
环球信息:可降解塑料板块1月5日涨1.05%,奥园美谷领涨,主力资金净流入4.13亿元
医疗废物暂时储存暂停不得超过多久 环球视讯
世界快消息!新疆240MW风电项目开标,这家整机商预中标,单价1998元/kW
信息:锦兴国际控股(02307.HK)附属拟752亿越南盾收购越南地块
ST弘高1月6日开盘跌停-快资讯
南通开发区烟花禁放倡议
天天精选!土壤修复板块1月5日跌0.36%,鸿达兴业领跌,主力资金净流出5916.66万元
奥特佳:年产100万台电动压缩机项目在今年年中建成后 年末产能预计将达到200万台|每日快报
全球消息!【手慢无】铝合金外壳散热佳 Gopala四合一拓展坞仅售49元
试驾致在e:HEV,第四代i-MMD真香,好开运动又省油
全球动态:走过行业低谷,2023年全球面板业酝酿重组并购机会
新城控股:公司土储1.31亿平方米,满足未来2-3年的开发运营所需
华仁药业:公司暂无血氧仪产品-当前观察
中国电信总部业务平台及云资源池类工程系统集成服务集采:数智科技、神州新桥两家入围|当前滚动
儿童火车票按年龄购买期待更多领域跟进
拉肚子痛可以吃香蕉吗-每日时讯
聚焦:2023上半年福建省中小学教师资格考试(笔试)报名方式及步骤
同仁堂董秘回复:公司的安宫牛黄丸、苏合香丸入选国家卫健委印发的《新型冠状病毒肺炎诊疗方案(试行第九版)》_天天热资讯
微信名阳光简单男生网名 充满阳光的男生清新微信网名
冷冻半年的西红柿还能吃吗? 焦点热文
华章科技(01673)公布年度业绩,亏损3.67亿元 同比盈转亏
全球观察:42岁央视知名主持人傅大勇去世,朋友披露死因,更多细节曝光
X 广告
资讯
X 广告

Copyright ©  2015-2022 每日畜牧网版权所有  备案号:浙ICP备2022016517号-15   联系邮箱:5 146 761 13 @qq.com