全球短讯!Spring 响应式编程,真香!!!
2023-01-14 11:23:55来源:程序员客栈
响应式编程是啥?
为啥要有响应式编程?
响应式流的核心机制是什么?
(相关资料图)
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后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。
责任编辑:hnmd004
-
显卡风扇不转了影响大吗?显卡风扇转好还是不转好?
显卡风扇不转了影响大吗?1、风扇转动主要是使显卡散热,如果在显卡工作是达到一定的温度,风扇会自动转起,控制显卡温度,保护显卡。当低于这一
2023-07-07 15:57:38 -
word文件损坏打不开怎么修复?word文件损坏乱码怎么修复?
word文件损坏打不开怎么修复?1 打开Microsoft Word软件,点击文件菜单,选择打开命令。2 找到损坏的Word文件,选中文件后点击打开按钮
2023-07-07 10:51:03 -
0xc0000005错误代码怎么解决?应用程序0xc0000005是什么错误?
0xc0000005错误代码怎么解决?1、首先按下win+r打开运行,输入regedit按下回车。2、随后依次定位到:HKEY_LOCAL_MACHINE SOFTWARE Microsoft
2023-07-07 10:47:09 -
java环境变量配置后不生效什么原因?怎样看java环境变量是否配置成功?
java环境变量配置后不生效什么原因?1 检查系统是否支持java,即查看java的版本。如果没有安装,需要安装java环境。2 检查配置文件是否正确
2023-07-07 10:43:40 -
ios17什么时候可以更新正式版?ios17什么时候正式推送更新?
ios17什么时候可以更新正式版?ios17正式版预计9月可以更新使用,届时和iPhone15系列新机一起到来。目前,ios17 Beta版在WWDC23发布会结束后
2023-07-07 10:40:52 -
Win11打游戏FPS低怎么办?手机玩游戏帧数低怎么办?
Win11打游戏FPS低怎么办?1、进入Win11系统桌面上,点击开始选择设置进入。2、进入设置界面,点击游戏进入。3、在游戏页面,点击游戏模式进
2023-07-07 10:38:03 -
电脑开不了机怎么办按哪个键?电脑开不了机怎么强制开机?
电脑开不了机怎么办按哪个键?F8:进入 Windows 安全模式。F10:进入 BIOS 设置界面。F11:进入系统恢复界面。Del:进入 BIOS 设置界
2023-07-06 11:14:10 -
显卡风扇不转正常吗?显卡风扇不转怎么解决?
显卡风扇不转正常吗?显卡风扇不转是不正常的。1、灰尘过多可能是显卡上的灰尘太多了,导致堵塞,如果长时间不清理的话,显卡的风扇就会因为
2023-07-06 11:02:33 -
windowshello突然不能用怎么办?windows hello在哪里设置?
windowshello突然不能用怎么办?1、首先按下WIN+R,输入 services msc 回车2、在服务列表中查找 Windows Biometric Service 看这个服
2023-07-06 10:53:30 -
不支持已连接的usb设备怎么解决?无法识别的usb设备是什么意思?
不支持已连接的usb设备怎么解决?需要格式化。USB不支持已连接的设备,是因为U盘文件系统要FAT32格式,需要重新设置U盘格式,先格式化U盘,将U盘
2023-07-06 08:45:03 -
打开dwg格式的软件有哪些?dwg格式文件是什么文件?
打开dwg格式的软件有哪些?1、看图纸DwgSeePlus,一款dwg文件浏览器;2、CAD迷你看图,一款小巧的DWG文件浏览小工具;3、CAD迷你画图,一款CAD
2023-07-06 08:42:40 -
电脑突然没声音了是什么原因?电脑突然没声音了怎么解决?
电脑突然没声音了是什么原因?一起跟着小编来看看吧。电脑没有声音的原因是计算机硬件问题和软件问题,硬件问题主要是声卡坏了,或者输出声
2023-07-05 10:24:15 -
amd是哪个国家的品牌?英特尔和amd哪个厉害?
amd是哪个国家的品牌?amd处理器是美国生产的;美国AMD半导体公司专门为计算机、通信和消费电子行业设计和制造各种创新的微处理器,以及提供
2023-07-05 10:21:36 -
tmp文件可以随便删吗?tmp文件删不掉怎么办?
tmp文件可以随便删吗?是的,可以删除。 tmp文件是一种临时文件,它们通常由操作系统或应用程序创建,以存储暂时数据。一旦完成,它们就会被
2023-07-05 10:19:30 -
mkv格式手机可以看吗?苹果不支持mkv视频吗?
mkv格式手机可以看吗?可以的。 MKV并不是一种压缩格式,而是Matroska的一种媒体文件,是一种多媒体封装格式,或叫多媒体容器。 它可将多种不
2023-07-05 10:16:45 -
电脑开机慢特别卡怎么解决?电脑开机慢系统启动慢什么原因?
电脑开机慢特别卡怎么解决?好多小伙伴不知道如何解决的,那小编就把操作方法分享给大家吧,感兴趣的小伙伴可以参考看看哈。方法一: 减少
2023-07-05 10:11:39 -
zip压缩文件怎么绕过密码?已有的压缩包如何添加密码?
zip压缩文件怎么绕过密码?好多小伙伴不知道的,那小编就来给大家解答一下吧,希望可以帮助到大家吧。1、首先在电脑中,启用英文版nsis,2、
2023-07-05 10:07:06 -
文件后缀隐藏了怎么显示出来?怎么让文件显示扩展名?
文件后缀隐藏了怎么显示出来?一起来看看吧。1、首先,双击打开【计算机】,打开计算机磁盘目录,2、打开后,正常菜单栏是没有显示出来,打
2023-07-04 10:01:15 -
php文件的扩展名是什么?怎么修改php上传文件的大小?
php文件的扩展名是什么?php文件后缀名就是 php文件扩展名和标签为了让服务器来确定我们的PHP文件和脚本,我们必须保存的文件以 php结尾。怎
2023-07-04 09:56:02 -
电脑的文件恢复区在哪里找?恢复文件已损坏怎么办?
电脑的文件恢复区在哪里找?1、1 360文件恢复区打开【360安全卫士】→【木马查杀】,找到并单击左下角的【恢复区】,就可以找到360文件
2023-07-04 09:52:57 -
ipad游戏没有声音怎么回事?ipad打游戏没有声音怎么办?
ipad游戏没有声音怎么回事?1、ipad游戏没有声音可能是忘记开声音或者设置了静音,打开声音或者关闭静音。2、ipad上的游戏设置没有启用声音
2023-07-04 09:42:32 -
电脑快捷方式存在问题是什么原因?快捷方式存在问题怎么解决?
电脑快捷方式存在问题是什么原因?Win11电脑快捷方式可能会出现问题,主要是由于系统更新、病毒感染或者其他原因导致的。快捷方式存在问题怎
2023-07-04 09:34:09 -
DAT是什么文件扩展名?bmp是什么文件扩展名?
DAT是什么文件扩展名? dat文件有两种类型:1、VCD的媒体文件,是数据流格式,可以用一般的视频播放器打开,该类型文件也是MPG格式的,是VCD
2023-07-03 09:48:00 -
mp3文件格式不支持怎么办?mp3格式是什么格式?
mp3文件格式不支持怎么办?是不是好多小伙伴遇到这样的问题不知道如何解决的,那小编就把方法分享给大家吧,感兴趣的小伙伴可以参考看看哈。
2023-07-03 09:44:46 -
任务管理器被禁用怎么解除?任务管理器中没有菜单栏如何解决?
任务管理器被禁用怎么解除?好多小伙伴不知道如何解决的,那小编就把方法给大家解答一下吧,希望可以帮助到大家吧。1、开始 运行 gpedit msc
2023-07-03 09:40:26
精彩推荐
阅读排行
最新资讯
- 电脑淘宝联系不了卖家(电脑淘宝怎么联...
- 图卢兹官方:俱乐部确认将参加下赛季欧联杯
- 第一章 第八节 桑
- 新阶段!北京开放自动驾驶车内无人商业...
- 武汉发布第二批拟供地清单 涉及31宗涉宅用地
- 知乎官宣!“匿名”功能下线
- 联络互动:目前正在加快推进北京联络大...
- 特斯拉“二把手”20天套现近千万!
- 财付通回应30亿罚单:坚决服从和落实,...
- 一成首付可买房,深圳涉事楼盘紧急回应→
- 华为云盘古大模型3.0来了!它为何不做中...
- AI创新成果走进应用场:GE医疗中国发布...
- 国家要“动真格”了?催买房无效后,智...
- 平谷一工业用地顺利成交
- 平谷一物流用地顺利成交
- 从“蔚小理”到“理蔚小”:销量差距背...
- 天智航股东拟合计减持不超2%股份
- 美媒:拜登批准向乌克兰提供违禁武器集...
- 海看股份:公司拥有超过9000小时的超清...
- 中国建筑材料联合会到山东玻纤调研指导工作
- 瑞普生物:猫三联疫苗正在新药申报注册...
- 安居房、人才房成为历史?2023深圳保障...
- 科技感仪式感通通拉满的录取通知书!南...
- 协鑫集成:公司目前订单储备充裕
- 西藏昌都发放购房补贴:干部职工300元/...
- 满足哪些条件可以线上办理公积金提取?...
- 30亿!支付宝、财付通收巨额罚单!
- 福建邵武:鼓励工会组织职工团购商品住...
- 新化首例不动产登记“带押过户”业务成...
- 7月7日大公司动向追踪:蚂蚁、腾讯领百...
- “河西人才节”重磅举措 河西区发布人...
- 把长安CS35 PLUS、吉利缤越压着打,202...
- Plog|长沙这个夏天,热!热!热!热!热!
- 广汇物流:拟定增募资不超18亿元
- 招商蛇口上半年销售约1664亿元 近期新...
- 2023年小暑物企最佳官宣海报:上坤物业
- 为控股股东提供关联担保未按规履行决策...
- 北京汽车:“巅峰”对话谋发展 雪域高...
- 川投能源业绩快报:上半年净利润同比增...
- 中原按揭:新措施促进香港楼市健康发展...
- 上半年宝龙地产销售约176亿元,上坤地产...
- 最新!佛山五区地价TOP10地图出炉,禅桂...
- 新赛股份:控股股东筹划公司控制权变更...
- 中国平安董事会审议通过付欣出任公司副...
- 一周法治播报|第77期:深圳发布四个政府...
- 谁让国内顶流足球红人同台齐聚?
- 2023年矿物制品龙头股有哪些?(2023/7/7)
- 华人健康:拟3.47亿元收购江苏神华100%股份
- 公积金利息可以取出来花吗?怎么操作?
- 房价下跌13%,香港放大招了!刺激楼市,...
- 金融管理部门对蚂蚁集团及旗下机构罚款7...
- 国能日新:董事及监事等拟合计减持不超2...
- 搭载全新发动机,蒙迪欧1.5T车型能否满...
- 贵阳银行:董事会秘书董静辞职
- 深网观察 第761期 | 深圳报业食堂摆...
- 时刻半年!连江将再出让2幅地块!位置在...
- 市区这片将拆迁!补偿政策...
- 45天下线1万台,哈弗枭龙要为新能源SUV...
- 瞄准全场景智慧出行,深蓝汽车要解决行...
- 中国石油北京项目管理公司:给予胡继勇...
- 齐翔腾达:子公司青岛思远8万吨/年甲乙...
- 招商银行:王小青副行长任职资格已获得核准
- cpu带k和f和kf(cpu带k的和带kf有何区别)
- 江苏出台临时用地管理规范性文件 明确...
- 2023年重庆市养老金计发补发时间什么时候?
- 产品力再突破,锋兰达要将“高价值”传...
- 通用电气发布可持续发展报告 多途径助...
- 简阳市市场监管局靠前发力 保障大运会...
- 住建部明确城市更新底线要求 坚持“留...
- 华依科技董事拟减持不超1.5%股份
- 《北京数字经济发展报告(2022~2023)》发布
- 链家,其实遇到了重大瓶颈
- 广汇物流:拟向控股股东等定增募资不超1...
- 保利发展上半年销售2368.21亿元 6月份2...
- 4.19公顷!史各庄这个地块“规划方案”...
- 问界M5标准版亮相,赛力斯要推动智慧汽...
- AI创新院正式成立 游族网络全面推进AI...
- 知乎宣布将下线匿名功能
- 大恒科技(600288.SH):以1.74亿元出售两...
- 冰箱保鲜蔬菜是密封好还是透气好?
- 掌趣科技旗下《饥饿鲨:进化》APP存在过...
- 株洲市三个名师工作室落户八中
- 开展危旧房排查 筑牢安全大根基
- 宣亚国际:公司暂未使用高算力、高传输...
- 格力地产:三亚合联中央商务区项目正在...
- 中南建设:公司西安中南上悦城4月底已完...
- 宋城演艺:公司目前已不持有SPACES任何股权
- 泉峰汽车:收到国内某知名通信科技公司...
- 深圳福彩公益微电影《星光》获国家广电...
- 九安医疗:公司已有专门负责糖尿病诊疗...
- 克而瑞:金科引入长城国富作战投,长实...
- 丰山集团:丰山全诺在钒电池液流电解液...
- 咸宁出台新政!事关老旧小区
- 今年首批!老旧小区改造,涉及昌平两个小区
- “和平方舟”号医院船,西太平洋全流程...
- 木头毛刺用什么打磨抛光(木头毛刺用什...
- 在各地大力推动下 保障性租赁住房筹建...
- 370亿风电龙头腰斩了
- 中秋节发红包多少适合女朋友的
- 13天完成100%签约,7天完成100%搬迁,居...
-
美国在叙非法驻军使用53辆油罐车盗运叙石油
下一篇2023-01-14 22:26:02
-
美之高将于1月18日解禁2353.86万股
上一篇2023-01-13 23:52:26