vert.x和RxJava之间的区别

时间:2017-05-24 07:19:45

标签: rx-java vert.x

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

3 个答案:

答案 0 :(得分:22)

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

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

阅读有关在Vert.x API for RxJava

一起使用VertX和RxJava的更多信息

答案 1 :(得分:3)

在自己的网站上

  

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. 与Java前端直接集成到SockJS的桥梁

事件总线受以下支持:

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

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

  3. 支持SSL的TCP服务访问点,用于双向安全通信和最高性能

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

更多详细信息hereherehere

希望这会有所帮助,

Softjake

答案 2 :(得分:1)

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

因此,我想这里的基本比较是 Verticle与RxJava 之间。

Verticle 是一个类,其状态只能通过事件总线从外部访问。因此,消息以单线程方式依次进入队列并弹出。这个想法是创建一个线程安全的环境,而不必处理Java臭名昭著的锁定机制。在并发术语中,这种结构也称为Actor。

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

要解释 RxJava 对数组或列表的思考。您通常在清单上做什么?循环播放它可以操作内容,过滤,合并等等。如今,此类操作可以使用高阶函数(例如mapfilterzip等)轻松完成。RxJava的用例是列表是异步的。它采用相同的功能编程原理来处理流或实时数据。

何时使用:要处理流时。例如,将电影流中的帧与其他流中的字幕进行匹配(毕竟,RxJava是由Netflix创建的)。或者从几个股票行情自动报价器进行实时分析。