Spring Boot 2& Spring 5 Container confusion

时间:2017-07-30 20:28:20

标签: java spring spring-boot reactive-programming

我有一个Spring boot 1.4.3项目。最近我提出了一个要求,我必须将日志从服务器发送到我的Web应用程序并在网页上打印日志。我知道WebSockets,但我正在寻找更好的解决方案,我遇到了,Reactive Programming和gRPC。

Spring在Spring版本5中支持Reactive Programming,但我对gRPC和Reactive Programming非常困惑。 gRPC具有双向流,它建立在Netty之上,提供与从服务器向客户端推送数据(如Reactive Programming)相同的功能。那么我应该使用哪一个,如果你能在这种困惑中清除我,那将会非常棒。

此外,如果我转移到支持Spring Version 5的Spring Boot 2,该项目将在Netty上运行。我的困惑是,我是否必须在不同的容器上运行我的应用程序,例如Jetty服务器上的普通REST端点和netty服务器上的Reactive API,或者Spring将通过处理netty上的响应请求和剩余的一般REST来为我开箱即用jetty服务器上的API,因为据我所知,Netty不是Servlet容器。

1 个答案:

答案 0 :(得分:7)

反应式编程的一个关键特征是背压和背压,它以非阻塞的方式实现。在撰写本文时,gRPC doesn't support this

与客户端和服务器之间的通信相比,反应式编程还要多得多。要真正做到被动,你需要从头到尾进行反应。这包括对您的数据存储的反应性访问等。据我所知,这不是gRPC解决的问题。

您不应该尝试将传统的基于Servlet的Web框架(例如Spring MVC)与WebFlux(Spring的反应式Web框架)的使用混合使用。您应该编写100%反应式Web应用程序或100%基于Servlet的Web应用程序。