Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用一些阻塞操作构建Spring反应式API是“可以”的吗?

用一些阻塞操作构建Spring反应式API是“可以”的吗?
EN

Stack Overflow用户
提问于 2021-05-03 09:01:30
回答 1查看 331关注 0票数 0

我刚刚开始使用Spring,我想为我正在从事的一个项目构建一个Spring。我的后端有很多对第三方服务的HTTP调用,我决定谨慎地实现反应式设计,并让架构是非阻塞的。我正在使用Retrofit,它有一个基于回调的异步API,对我来说工作得很好。这就是问题所在;我已经使用Hibernate和JPA实现了我的数据库和模型,它非常成熟,可以处理从迁移到验证的所有事情,我喜欢使用JPA,但它是阻塞的,因此不适合我的体系结构设计。是否可以将反应式堆栈放在其他地方,然后在工具和框架几乎与JPA相同的情况下将持久化内容迁移到反应式模型?主要的问题是在启动时创建数据库模式,如果有解决方案,我很乐意使用它。

EN

回答 1

Stack Overflow用户

发布于 2021-05-04 23:15:30

从性能的角度来看,在任何完全反应式的webflux应用程序中阻塞都是不好的。

Webflux从很少的线程开始,这意味着如果你阻塞,你的应用程序(在负载下)很容易受到线程匮乏的影响,这是因为在反应式应用程序中不会产生新的线程,并且你的应用程序小线程池将被阻塞,等待来自数据库的响应。

有一个解决方法是,您可以使用subscribeOn操作符将所有潜在的阻塞调用放在它自己的调度程序上。reactor documentation中记录了这一点

请记住,通过包装阻塞调用,您不会从反应式编程中获得好处,例如更小的内存占用和潜在的更高吞吐量。但至少你不会遭受线程饥饿的痛苦。

相反,这些调用将表现为对“常规spring boot web服务器”的“常规调用”,因为这些调用将被分配一个线程,该线程将在整个执行过程中跟随该调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67366156

复制
相关文章
关系数据构建反应式的spring驱动程序
响应式编程或反应式编程(英语:Reactive programming)是一种面向数据流和变化传播的编程范式,直白的说就是:将变化的值通过数据流进行传播。
kinbug [进阶者]
2020/05/21
9460
accept 函数_accept函数是阻塞的吗
服务器要做的最普通的事情之一就是接受来自客户端的连接请求。在套接字上使用重叠I/O接受连接的惟一API就是AcceptEx()函数【注一】。有趣的是,通常的同步接受函数accept()的返回值是一个新的套接字,而AcceptEx()函数则需要另外一个套接字作为它的参数之一。这是因为AcceptEx()是一个重叠操作,所以你需要事先创建一个套接字(但不要绑定或连接它),并把这个套接字通过参数传给AcceptEx()。以下是一小段典型的使用AcceptEx()的伪代码:
全栈程序员站长
2022/11/10
1.2K0
Spring还可以这样用缓存,你知道吗?
大家在项目开发过程中,或多或少都用过缓存,为了减少数据库的压力,把数据放在缓存当中,当访问的请求过来时,直接从缓存读取。缓存一般都是基于内存的,读取速度比较快,市面上比较常见的缓存有:memcache、redis、mongodb、guava cache等。
小忽悠
2019/07/27
5210
Spring WebFlux 教程:如何构建一个简单的响应应式 Web 应用程序
反应式系统是采用反应式架构模式设计的系统,该模式优先考虑使用松散耦合、灵活和可扩展的组件。它们在设计时还考虑了故障解决方案,以确保即使一个系统出现故障,大部分系统仍能运行。
用户4235284
2023/10/14
1.5K0
Spring WebFlux 教程:如何构建一个简单的响应应式 Web 应用程序
你了解Spring从Spring3到Spring5的变迁吗?
**随着互联网技术的发展,Spring也在不断的进化,从最早轻量级的支持J2EE到现在对高并发,多线程异步程序的支持,spring也不断的更新自己走在技术的最前沿,我们先来从Spring3开始看看spring的发展变迁
Java周某人
2019/07/26
3K0
什么是反应式编程? 这里有你想要了解的反应式编程 (Reactive programming)
你曾有过订阅报纸或者杂志的经历吗?互联网的确从传统的出版发行商那儿分得了一杯羹,但是过去订阅报纸真的是我们了解时事的最佳方式。那时,我们每天早上都会收到一份新鲜出炉的报纸,并在早饭时间或上班路上阅读。现在假设一下,在支付完订阅费用之后,几天的时间过去了,你却没有收到任何报纸。又过了几天,你打电话给报社的销售部门询问为什么还没有收到报纸。
一个会写诗的程序员
2020/03/20
5.6K0
什么是反应式编程? 这里有你想要了解的反应式编程 (Reactive programming)
Reactor响应式编程 之 简介
Reactor 项目始于 2012 年。 经过长时间的内部孵化,于 2013 年发布 Reactor 1.x 版本。 Reactor 1 在各种架构下都能成功部署,包括开源的(如 Meltdown)和商业的(如 Pivotal RTI)。2014年,通过与一些新兴的响应式数据流规范合作,重新设计并于 2015 年 4 月发布 Reactor 2.0 版本。
伍六七AI编程
2022/11/02
1.2K0
Spring Boot实战:Restful API的构建
  上一篇文章讲解了通过Spring boot与JdbcTemplate、JPA和MyBatis的集成,实现对数据库的访问。今天主要给大家分享一下如何通过Spring boot向前端返回数据。   在现在的开发流程中,为了最大程度实现前后端的分离,通常后端接口只提供数据接口,由前端通过Ajax请求从后端获取数据并进行渲染再展示给用户。我们用的最多的方式就是后端会返回给前端一个JSON字符串,前端解析JSON字符串生成JavaScript的对象,然后再做处理。本文就来演示一下Spring boot如何实现这种
用户2140019
2018/06/25
1.2K0
Spring Boot实战:Restful API的构建
  上一篇文章讲解了通过Spring boot与JdbcTemplate、JPA和MyBatis的集成,实现对数据库的访问。今天主要给大家分享一下如何通过Spring boot向前端返回数据。   在现在的开发流程中,为了最大程度实现前后端的分离,通常后端接口只提供数据接口,由前端通过Ajax请求从后端获取数据并进行渲染再展示给用户。我们用的最多的方式就是后端会返回给前端一个JSON字符串,前端解析JSON字符串生成JavaScript的对象,然后再做处理。本文就来演示一下Spring boot如何实现这种
用户2140019
2018/05/18
1.3K0
spring5新特性
前方:对于很多开发人员来说,目前大都还在使用spring4的时候,而spring5早已经发布。虽然你可能暂时还没有使用到spring5,但还是需要对其有个大概的了解。
烂猪皮
2020/10/10
1.3K0
dmz服务器是堡垒机吗?可以当堡垒机用吗?
虽然现在有很多大型企业都会部署堡垒机来确保网络和数据的安全,但很多人对堡垒机的认知并不够,甚至有的人会将堡垒机,防火墙,dmz区混为一谈。那么dmz服务器是堡垒机吗?可以当堡垒机用吗?接下来针对这个问题会为大家做一下简单的解答。
用户8715145
2021/12/29
5.2K0
Spring WebFlux 对比 @Async 注解的优势在哪
当我们在用 Java 构建 Web 应用程序,有多种处理异步处理的选项。一种方法是在 Spring 中使用 @Async 注释将长时间运行的任务委托给单独的线程。另一种方法是使用 Spring WebFlux,它提供了一种非阻塞、事件驱动的编程模型来构建反应式 Web 应用程序。在本文中,我们将探索使用 Spring WebFlux 而不是 @Async 注释的好处。
用户4235284
2023/10/14
5350
API网关怎么部署 不用api网关可以吗?
许多在互联网公司工作的人都了解api网关。所谓的api网关,就是一个统一的微服务应用访问入口。由于现在许多企业的应用APP功能繁多,种类交叉,所以一个统一的api网关入口可以帮助用户通过一个入口顺利的直达不同的微服务当中。不仅给用户访问带来方便,对于服务端的运维工作也会带来极大的方便,下面来看一看API网关怎么部署?
用户8715145
2021/12/21
2.6K0
Istio 可以代替 Spring Cloud 吗?
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/06/07
8850
Istio 可以代替 Spring Cloud 吗?
未来的趋势,什么是响应式编程?
这个表达式 其实就是一个新的语法糖,这里Java8主要是对语法做了简化,让我们java的代码更加的简洁
冷环渊
2021/12/15
1.2K0
未来的趋势,什么是响应式编程?
大数据开发:Spring 5的新特性
Spring5 是一个重要的版本,距离SpringFramework4差不多四年。在此期间,大多数增强都是在 SpringBoot 项目中完成的。在本文中,我们将很快了解到Spring5发行版中的一些令人兴奋的特性。
成都加米谷大数据
2021/02/02
1.5K0
大数据开发:Spring 5的新特性
异步编程 - 11 Spring WebFlux的异步非阻塞处理
我们这里主要探讨Spring框架5.0中引入的新的WebFlux技术栈,并介绍其存在的价值与意义、并发模型与适用场景、如何基于WebFlux实现异步编程,以及其内部的实现原理。
小小工匠
2023/09/09
2.3K0
异步编程 - 11 Spring WebFlux的异步非阻塞处理
市场嗅觉是可以培养的技能吗?
之所以转这篇文章,有两个原因:一是里面一些有经验的人都能信服的道理,非常适合新入行者建立认识和快速吸收;二是对其中一个观点深以为然——就好像围棋里有句俗话“半目胜是运气,一目胜是实力”——任何行业能做出顶级产品的,都离不开运气;但长期做较好产品就要靠实力;而从不做烂产品,除了实力外还要有定力,因为烂产品有时更能卖钱是个相当无奈的事实。 有编辑问,市场嗅觉是一个可以培养的技能吗? 这真是大哉问。在这个行业裡,成功的编辑并不是看你的作者关系好,编辑速度快,出书量大,编排大方,内容够水准……这些都不是决定编辑成功
用户1682855
2018/06/08
1.1K0
大数据是啥,可以吃的吗?
关于大数据是什么,从一开始仅仅只想做数据,到开始意识到自己做的是对整个集团有核心意义的数据产品,再到走到外面,把数据能力对外输出,所有过程中,不断的有客户问到这个问题,有懵懂的、有善意的、也有挑衅的、不屑的。就像大数据本身一样,混乱又带有迷幻色彩。
数澜科技
2019/10/15
7990
大数据是啥,可以吃的吗?
我可以弃用这个端点吗?
让我们假设你是一个开发人员,接管了 Catalog 微服务的所有权。你被要求弃用/v1/catalog 端点而使用新的/v2/catalog 端点。你该怎么做呢?
CNCF
2022/03/25
1.7K0
我可以弃用这个端点吗?

相似问题

是用NodeJs访问阻塞操作。

17

关闭(通道)是阻塞操作吗?

111

我用的是反应式香蕉吗?

10

在Spring中记录非阻塞操作吗?

10

是用构建的吗?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文