如何在没有Reactive东西的情况下使用Spring Cloud Gateway?

Viz*_*Viz 5 spring reactive spring-webflux spring-cloud-gateway

我想使用 Spring Cloud Gateway 创建一个新项目,但我不想要所有反应式功能。对我来说,如果其他微服务阻塞 I/O 而不是响应式的,那就没问题了。

  1. 我怎样才能做到这一点?
  2. 假设我将云网关实现为响应式,而所有其他 MS 实现为阻塞式,这是一个好方法吗?这样做有什么缺点?

Mic*_*yen 3

Spring Cloud Gateway 构建在 Spring Webflux 和 Netty 之上,这是无法更改的。

来自参考文档:

Spring Cloud Gateway 基于 Spring Boot 2.x、Spring WebFlux 和 Project Reactor 构建。因此,当您使用 Spring Cloud Gateway 时,您所知道的许多熟悉的同步库(例如 Spring Data 和 Spring Security)和模式可能不适用。如果您不熟悉这些项目,我们建议您在使用 Spring Cloud Gateway 之前首先阅读他们的文档来熟悉一些新概念。

Spring Cloud Gateway 需要 Spring Boot 和 Spring Webflux 提供的 Netty 运行时。它不适用于传统的 Servlet 容器或构建为 WAR 时。

Spring Cloud 参考文档

非阻塞 IO 应用程序对阻塞 IO 应用程序进行网络调用是完全可以接受的。非阻塞 IO 应用程序仍将具有非阻塞 IO 的所有优点。在等待网络调用对阻塞 IO 应用程序的响应时,它不会消耗资源,理论上应该消耗更少的资源,从而能够处理更多的并发调用。

  • Spring Cloud Gateway将等待响应,尽管它在等待响应时不会阻塞任何资源(即线程)。阅读反应器模式以及它与 spring mvc 中的每个请求线程模型有何不同可能会很有用。https://dzone.com/articles/spring-webflux-eventloop-vs-thread-per-request-mod (2认同)