我有一个Spring boot 1.4.3项目。最近,我提出了一个要求,即我必须将日志从服务器发送到我的web应用程序,并在网页上打印日志。我知道WebSockets,但我正在寻找更好的解决方案,我遇到了响应式编程和gRPC。
Spring在Spring version5中支持反应式编程,但我对gRPC和反应式编程之间的关系感到困惑。gRPC的特点是双向流,它建立在Netty之上,并提供与从服务器向客户端推送数据相同的工具,如反应式编程。所以我应该使用哪一个,如果你能澄清我的困惑,那就太好了。
此外,如果我迁移到支持Spring版本5的Spring Boot 2,则该项目将在Netty上运行。我的困惑是,我是否必须在不同的容器上运行我的应用程序,比如Jetty服务器上的普通REST端点和netty服务器上的Reactive API,或者Spring会通过在netty上处理响应式请求和在jetty服务器上处理剩余的通用REST API来开箱即用地为我处理这个问题,因为据我所知,Netty不是一个Servlet容器。
发布于 2017-07-31 14:30:48
反应式编程的一个关键特性是背压,以及以非阻塞方式实现的背压。在写这篇文章的时候,gRPC doesn't support this。
与客户端和服务器之间的通信相比,响应式编程还有更多的内容。要实现真正的反应性,您需要从头到尾都具有反应性。这包括对数据存储的被动访问,等等。据我所知,这不是gRPC可以解决的问题。
您不应该尝试混合使用传统的基于Servlet的web框架(如Spring MVC)和WebFlux (Spring的反应式web框架)。您应该编写一个100%响应式web应用程序或一个100%基于Servlet的web应用程序。
https://stackoverflow.com/questions/45404379
复制相似问题