Java反应式框架的比较 [已关闭]

我看到许多框架/库声称它们可以帮助在Java中构建反应式应用程序,例如:Akka,Vert.x,RxJava,Reactor,QBit等。

它们似乎有不同的方法,功能,优点,缺点等。我找不到详细的比较。有关于这些框架工作的文档,但不足以让我理解其中的差异。

主要的 Java 反应式框架之间有什么区别?

哪些应用程序要求可以推动Java反应式框架的选择?

感谢您抽出宝贵时间接受采访。


答案 1

我正在研究RxJava,最近我对Akka-Streams和Reacter进行了一些评估

据我所知,对于所有库,它们都收敛到一个名为Reactive-Streams的概念,因此您可以在实现之间来回切换。

我相信RxJava是最通用的,对其他库的依赖性为零,并且对并发性没有固执己见。它在Android上非常受欢迎,主要是由于其他库/框架(如Retrofit)的支持。1.x 分支不实现 Reactive-Streams,但有它的包装器,而 2.x 本身符合 Reactive-Streams 标准(目前提供预览版)。许多流行的基于JVM的编程语言都有它的适配器(Scala,Kotlin,Clojure等)。

Reactor 符合 Reactive-Streams 标准,因为它是较新的库。它们具有对许多其他库的依赖/支持。当涉及到流中的并发和排队时,他们选择了一组不同的权衡(即LMAX Disruptor风格)。它和RxJava之间有一些关于运算符的来回,我们已经开始谈论拥有一个共享的运算符池。

Akka被类似Scala的概念高度主导;我遇到了一个小麻烦,让它工作。它背后的团队参与了Reactive-Streams规范的开发,并且有一个Akka-Streams库被宣传为支持Reactive-Streams,但是,访问它很麻烦,因为它的流畅API与Akka actor模型紧密交织在一起。

如果你在服务器/桌面/Android方面,RxJava通常是一个不错的选择(我相信它比其他的更好),并且针对的是高吞吐量的异步操作。如果你在延迟方面更多,Reactor可能是一个更好的选择。我不太了解Akka-Streams的用法,但我在一年前看到了一个基准测试,其中围绕Akka构建的Web服务器优于Tomcat和Netty + RxJava。


答案 2

推荐