vert.x和RxJava之间的区别

use*_*247 15 vert.x rx-java

我们正在为我们的一个项目评估反应式编程框架.我刚刚学习了vert.x教程.我检查了一下RxJava的介绍.RxJava似乎更接近CompletableFuture.但是,尽管存在底层模式,RxJava和Vert.x都可以访问非阻塞编程.我很困惑他们之间有什么区别.在这方面,我将不胜感激.

Jon*_*nas 24

VertX是异步服务器的服务器框架,而RxJava是异步计算的框架.VertX支持RxJava,许多人一起使用它们.

如果您要创建Web应用程序并想要可扩展的后端,请使用VertX,可能使用RxJava.但是如果你在另一个平台上,只需使用RxJava.

阅读有关在Vertx API上为RxJava一起使用VertX和RxJava的更多信息

  • Vert.x是一个事件驱动的服务器,类似于Node.js,设计用于异步执行所有操作.如果您不与Vert.x(或Node.js)异步编码,则无法从事件驱动的服务器中获益. (3认同)

inm*_*yth 6

Vert.x 是一堆模块和扩展,统称为工具包。核心模块包含 Web 服务器和称为 Verticle 的并发模型。RxJava 是 ReactiveX 的 Java 实现。两者都基于事件驱动原则,但 Web 服务器无法与 RxJava 相提并论。

所以我猜这里的基本比较是Verticle 与 RxJava之间的比较

Verticle是一个类,除了通过事件总线之外,它的状态完全无法从外部访问。因此消息以单线程方式依次到来、排队和弹出。这个想法是创建一个线程安全的环境,而不必处理 Java 臭名昭著的锁定机制。同样在并发术语中,这种结构称为 Actor。

何时使用:每当您需要使用 Java 的synchronized块时。多个线程需要访问类变量(即竞争条件)的情况是您可以删除 Verticle 或 Actor 的同步。在 Vert.x 中,您可以在不运行 Web 服务器的情况下使用 Verticle。

为了解释RxJava认为Java 8个流里面介绍像流媒体和高阶功能mapfilterzip在收藏等。RxJava 的用例是流是异步的。

何时使用:当您想要操作流时。例如,将电影流中的帧与另一个流中的字幕进行匹配(毕竟 RxJava 是由 Netflix 创建的)。或者从几个股票市场行情进行实时分析。


sof*_*ake 5

从他们自己的网站:

Eclipse Vert.x是用于在JVM上构建响应式应用程序的工具包。

它定义了用于编写异步联网应用程序的基本API(例如:数据库连接,监视,身份验证,服务发现,集群等)。

在内部,它基于Netty项目,该项目是JVM的高性能异步网络库。但是,它提供了更易于推理且仍具有高性能的更高级别的API。

您可以单独使用基于Vert.x的基于回调的API,但Vert.x还可在后台使用RxJava实现等效的Rxified API。这提供了一个将Vert.x模块集成到RxJava应用程序中的绝佳平台。

Vert.x是多语言的,因为它支持许多其他基于JVM的语言API,例如Kotlin,Groovy,Ruby,Scala和Ceylon。此外,由于Vert.x是事件驱动和基于消息的,因此它还提供了一个JavaScript API,非常有用,可以将前端与后端集成在一起。

Vert.x提供了流畅的HTTP端点和路由配置,这些配置由实现业务逻辑的处理程序支持。但是真正的神经系统是事件总线,它充当所有Vert.x本地或分布式组件的电信提供商。

这种事件总线非常支持:

  1. 点对点,请求响应和发布订阅消息
  2. 同一JVM实例中的多语种顶点之间的通信
  3. 多个JVM实例中的多语种顶点之间的集群通信
  4. 桥接到Stomp或AMQP实现以与其他应用程序集成
  5. 桥接到SockJS以与Javascript前端直接集成

事件总线受以下支持:

  1. 集群管理器,例如Hazelcast,InfiniSpan,Ignite或ZooKeeper,它们通过更高级别的API访问来提供分布式地图,锁和计数器

  2. Vert.x服务发现API为底层复杂寻址方案提供基于地址的抽象

  3. 支持SSL的TCP服务访问点可实现双向安全通信和最佳性能

最后,Vert.x可以单独用于开发功能完善的应用程序,也可以与SpringBoot,Fibers等框架协同使用。

这里这里这里有更多细节。

希望这可以帮助,

软跳