使用 WebFlux 的反应式编程如何处理依赖的外部 api 调用

Posted

技术标签:

【中文标题】使用 WebFlux 的反应式编程如何处理依赖的外部 api 调用【英文标题】:How does Reactive programming using WebFlux handles dependent external api calls 【发布时间】:2019-04-06 08:20:41 【问题描述】:

我是响应式编程的新手,我想知道的一件事是,假设我们有一个在内部调用其他 3 个 api 的 api。其中第一个 api 的结果被输入到第二个,而第二个 api 的输出被输入到第三个。它不会减少到基于普通单线程的执行。如果是,那么我们为什么要在这种情况下使用响应式编程。

【问题讨论】:

【参考方案1】:

在这种情况下,反应式编程不会改变物理定律或逻辑:您仍然需要上一步的结果来生成下一步。因此,使用阻塞 API 或响应式执行该逻辑可能会花费同样多的时间。

但是在阻塞 I/O API 的情况下,处理它确实会使用一个线程来完成整个操作,即使服务器正在等待远程 API 响应。对您的 API 的数百次调用将意味着数百个线程及其相关资源,通常在等待远程资源时什么都不坐。

如果您改用响应式 API,您的服务器将使用更少的线程,并且在等待这些远程响应时不会继续使用资源。

总而言之,虽然不会提高此用例的速度,但会提高服务的可扩展性并消耗更少的资源(内存和 CPU)。

【讨论】:

以上是关于使用 WebFlux 的反应式编程如何处理依赖的外部 api 调用的主要内容,如果未能解决你的问题,请参考以下文章

您如何处理模型类中的外键关系

如何处理 django-rest-framework 中 url 模式中的外键关系

如何处理 ERD(表)设计中的“或”关系?

Vue 组件 - 如何处理非反应性数据?

通量/反应:如何处理商店中过滤的 api 数据

如何处理对客户端反应应用程序的外部重定向?