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



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

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

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

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

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

最新更新