响应式编程是啥?
为啥要有响应式编程?
(资料图片仅供参考)
响应式流的核心机制是什么?
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年,东南亚外卖市场GMV增长5%,达到163亿美元
下一篇 : 最后一页
作者:刘坚(国家发改委能源研究所副研究员)不久前,西班牙马德里理工大学团队开发的“阿马德乌斯”电...
01-18 10:01:57
重庆健康码弹窗是阳性吗?不是。市民遇到“渝康码”弹窗的情况,是因为在进行混管核酸检测时,一旦混管里...
01-18 04:39:21
长园集团:关于召开2023年第二次临时股东大会的通知
01-17 20:07:30
1、确认后出现空白的画布,用工具栏中的“矩形工具”,画方框,最后“描边”成红色,画好第一个后再复制...
01-17 16:39:59
以下是海伦钢琴在北京时间1月17日13:55分盘口异动快照:1月17日,海伦钢琴盘中快速反弹,5分钟内涨幅超...
01-17 13:38:08
2023南阳元宵节商场活动盘点(持续更新)1 新华城市广场新春庙会活动时间:腊月二十三至正月十五活动内...
01-17 10:17:12
东莞企业春节前后稳工促生产补贴政策汇总返岗交通补贴安排500万元经费,市镇财政按3:7比例分担,发放包...
01-17 04:50:44
1月15日,甘肃省第十四届人民代表大会第一次会议在兰州开幕。甘肃省省长任振鹤代表省政府向大会作政府工...
01-16 18:45:34
《少年歌行》中的明德帝是天启皇帝,也是萧瑟的父亲,坐镇天启城,被琅琊王扶持登上帝位,并分封天启四...
01-16 14:38:18
格隆汇1月16日丨九典制药涨近5%,报26 64元,总市值91亿元。九典制药发布2022年度业绩预告,预计2022年...
01-16 10:26:38
(一)代理刑事诉讼案件:1、侦查阶段:1000-10000元 件。2、起诉阶段:1000-10000元 件。3、审判阶段:...
01-16 01:00:21
“患者出现呼吸困难,马上抢救!”几周前,一名90多岁的患者被送到位于湖北武汉的华中科技大学同济医学...
01-15 13:38:40
点击查看详情一位老师唤醒一群孩子的音乐梦,让山里娃也能唱摇滚。昨晚,来自贵州海拔最高小学的海嘎少...
01-15 12:05:31
新华社东京1月13日电不顾国内和国际社会反对,日本政府13日称,“今年春夏之际”开始向海洋排放经处理过...
01-14 19:47:28
工人日报-中工网记者张翀通讯员张政陈之玮苏振飞1月12日,春运第六天。7时5分,露浓霜重,莫品全比往日早起
01-14 10:05:30
中新网昆明1月13日电(陈静)记者13日从云南省文化和旅游厅获悉,其发布了《云南省文化和旅游标准体系建设...
01-13 22:21:10
30秒快读随着“领航计划”“直联机制”的出台,新三板迎来不少“回头客”。岁末年初,银中物业、艾力泰...
01-13 17:01:23
云拥御笔峰。覃文乐 摄武陵仙境行作者丨屈杰造化当年挥鬼斧,宏开仙境向南楚。只见神仙不见人,不闻尘...
01-13 12:58:52
赞美泥土的句子优选31句1 百里杜鹃,杜鹃花海,这里花鲜、人寿、山奇、水秀聚为一体。花海,是养生之海...
01-13 09:17:27
1月12日,天弘增强回报债券A最新单位净值为1 3343元,累计净值为1 3343元,较前一交易日上涨0 02%。...
01-13 01:08:44
三大指数全天冲高回落,缩量震荡。盘面上,工业母机、智能制造概念股集体走强,华辰装备涨超10%,宁波精...
01-12 17:21:30
央视网消息:随着春节的临近,全国各地年味渐浓。极具地方特色的乡间大集热闹红火,各地年货市场商品丰...
01-12 13:48:41
随着春节的临近,人们变得越发忙碌起来,要忙工作,要采购年货,要收拾屋子,当然还有非常重要的一件事...
01-12 10:31:11
阅读提示在严查货品来源的管理要求下,“水货”手机逐渐失去生存空
01-12 09:14:16
背景最近一段时间做了几个需求,其中涉及的素材列表展示,需要实现类似下方图片中的动效,暂且称之为【...
01-12 03:31:51
今天凌晨1点,岳阳辖区遭遇大雾天气,能见度不足20米,为保障司乘人员行车安全,岳阳高速全线收费站入口...
01-11 19:01:23
新增4项服务事项全新版本的江西医保“精办”服务来了
01-11 15:14:16
网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...
01-11 10:28:12
在娱乐圈中有特别多的明星,一直很努力,出道的也特别早,但是就是火不起来,明明自己很优秀,各项条件...
01-11 04:14:44
挖贝网1月10日,海马汽车(000572)发布控股子公司海马财务有限公司2022年度业绩预告,公告显示,2022年...
01-10 19:58:26
1月10日华东地区丁苯橡胶市场价格坚挺。下游询盘仍显平淡,但原料丁二烯持续上行,成本支撑下,商家挺价...
01-10 16:43:37
野村发表报告指,京东物流去年末季业绩料符预期,料季度总收入或按年增长40%至428亿元人民币,符市场预...
01-10 13:32:49
网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...
01-10 13:34:44
网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...
01-10 13:27:26
本期聊聊WebIDE的概念和在各种客户端的应用场景;一起探讨在社区里比较主流的WebIDE实现的方法模式与对...
01-10 12:12:52
2023广州番禺区鲜花年桔临时摆卖点在哪里?据介绍,2023年广州番禺区有5个较大的鲜花年桔临时摆卖点,分...
01-10 11:23:12
据港交所1月9日文件:SMLGROUPCORPORATION向港交所递交上市申请,法国巴黎银行为独家保荐人。SMLGROUP主...
01-10 10:38:02
新华社拉巴斯1月7日电专访:美国民主模式“过时陈旧”——访玻利维亚前外长瓦纳库尼 新华社记者 ...
01-10 09:41:00
抖音聊天一小步,“截胡”微信一大步?@新熵原创作者丨樱木编辑丨月见新年伊始,抖音再次潜入了微信的后...
01-09 20:06:23
1、局部脏用热毛巾擦羽绒服洗一次,寿命就打折一次,所以尽量少洗。羽绒服只是局部脏一点,最好用热毛巾...
01-09 18:36:41
沪深交易所2023年01月09日公布的交易公开信息显示,富乐德因成为有价格涨跌幅限制的日换手率达到30%的前...
01-09 18:20:40
“让威马从神坛上跌落的不是外人:脾气最火爆的侯海靖妄图只手遮天;最懂销售的陆斌背锅离开;CEO沈晖酿...
01-09 18:33:05
数据是个宝数据宝炒股少烦恼年报预增行情正式打响。早前,艾比森发布业绩预告,预计2022年归母净利1 8亿
01-09 15:23:35
科技是第一生产力、人才是第一资源、创新是第一动力。2023年是全面贯彻落实党的二十大精神的开局之年。...
01-09 11:37:53
人民网约翰内斯堡1月4日电(刘畅)南非卫生部近日表示,尽管中国新冠肺炎感染病例激增,但南非不会对来...
01-07 02:22:29
四川漓江、乐园抽水蓄能电站项目签约12月29日,四川苍溪县与四川路桥股份有限公司、中国能建葛洲坝集团...
01-06 23:59:56
让拉力不再小众砖叔去世了。1月2日,Hoonigans发布公告,称其创始人、拉力车手KenBlock在雪地摩托的事故...
01-06 21:46:32
2022年,公募基金收益率排行榜出炉,据Wind统计,全市场的公募基金中,年度收益率最高的5只基金来自QDII...
01-06 19:29:22
四川经济网雅安讯(记者庄祥贵)1月5日,记者从雅安市雨城区“今冬明春服务保障农民工‘五件实事’暨根...
01-06 15:50:20
投顾分析若股价处于低位,融资净买入额为正往往会伴随股价的一波上涨;而若股价处于高位,资金却仍在融...
01-06 13:25:59
作者:刘坚(国家发改委能源研究所副研究员)不久前,西班牙马德里理工大学团队开发的“阿马德乌斯”电...
2023-01-18
重庆健康码弹窗是阳性吗?不是。市民遇到“渝康码”弹窗的情况,是因为在进行混管核酸检测时,一旦混管里...
2023-01-18
长园集团:关于召开2023年第二次临时股东大会的通知
2023-01-17
1、确认后出现空白的画布,用工具栏中的“矩形工具”,画方框,最后“描边”成红色,画好第一个后再复制...
2023-01-17
以下是海伦钢琴在北京时间1月17日13:55分盘口异动快照:1月17日,海伦钢琴盘中快速反弹,5分钟内涨幅超...
2023-01-17
上市四年,新兴装备(002933 SZ)沦落至易主地步。12月20日,新兴装备仍然处于停牌状态。自从19日起,已...
7月7日,中国消费者协会、中国保健协会化妆品发展工作委员会联合发布暑期消费指示,保障儿童用妆安全。...
概念特点1、 定义:纤维是天然或人工合成的细丝状物质,纺织纤维则是指用来纺织布的纤维。2、 纺织纤...
中新网西宁11月21日电 题:青海水润高原:从“大动脉”到“毛细血管”的精准管理 作者 谈林明...
中新网西宁11月21日电 (记者 张添福)青海省卫生健康委员会21日消息,该省第3例本土确诊病例经过20...
上市公司频获机构调研 接待机构来访量为20.89万家
Copyright © 2015-2023 今日纤维网版权所有 备案号:沪ICP备2023005074号-40 联系邮箱:5 85 59 73 @qq.com