使用 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 调用的主要内容,如果未能解决你的问题,请参考以下文章