【问题标题】:Difference between project Reactor and gRPC项目 Reactor 和 gRPC 的区别
【发布时间】:2021-07-08 08:22:21
【问题描述】:

我是响应式概念的新手,这些术语看起来与我相似。我是否正确地说 Spring Reactor、Akka、RxJava 是相似的,但这与 gRPC 有什么不同。我可以将 Project Reactor 与 gRPC 和 RSocket 一起使用吗?这越来越让人难以抗拒。这些有什么关系?对此的任何解释都会对我非常有用。

【问题讨论】:

  • gRPC 可以与 REST 进行比较,是的,如果您愿意,可以使用您提到的任何 gRPC 框架。

标签: spring-webflux project-reactor grpc-java


【解决方案1】:

我是否正确地说 Spring Reactor、Akka、RxJava 是相似的

是的,在一定程度上。从概念上讲,Reactor 和 RxJava 几乎是一回事(尽管我相信我会吸引至少有人这么说……!)

Akka 有点不同 - 它是一个使用反应式概念的功能更全面的框架。它也是用 Scala 而不是 Java 编写的,虽然它在 Java 中运行良好,但根据我的经验,这是一个相当不寻常的选择。

这与 gRPC 有何不同

gRPC 是一个完全不同的野兽——它是一个用于将不同服务连接在一起的框架。您可以使用任意数量的语言(包括 Java)构建您的服务,然后选择是从您构建的框架中对这些服务进行阻塞还是非阻塞调用(非阻塞调用可以与反应式框架(如果需要)。)它在概念上更类似于 REST / SOAP,而不是 Reactor 或 RxJava。

RSocket 又不同了——它在反应式服务互通方面更像是 HTTP 的竞争对手,而不是其他任何东西。它是一种通信协议(而不是一个框架),服务可以使用它来进行相互通信,并且它被专门设计为高效,同时支持流级别的反应语义。例如,RSocket 可以管理流量控制,在服务之间传递背压消息,以确保上游反应式服务不会压倒下游服务——这不是你可以用 HTTP 做的事情(至少,如果没有在顶部添加另一个协议,就不能这样做。)

总体而言,如果您是响应式的新手并且想从某个地方开始(并保留在 Java 领域),那么我的建议是暂时坚持使用 Reactor 以避免不知所措 - 它可能是最常用的框架在这方面,因为它是内置在 Spring 中的。一旦您熟悉了基础知识,其他相关组件(如 RSocket)就会开始变得更有意义。

【讨论】:

    【解决方案2】:

    gprc 不是响应式的,它基本上是 http2 + protobuf

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 2019-03-20
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 2017-11-11
      • 2018-04-23
      相关资源
      最近更新 更多