Vert.x概述

时间:2020-01-09 10:47:21  来源:igfitidea点击:

Vert.x是用于在Java虚拟机(JVM)上实现反应性应用程序的工具包或者平台。这是什么意思?以及内部Vert.x设计的外观如何?此Vert.x概述将解释所有这些。

Verticles

Vert.x可以部署和执行称为Verticles的组件。我们可以认为顶点类似于Java Enterprise Edition模型中的servlet或者消息驱动的EJB。这是一个简单的图表,说明了运行4个顶点的Vert.x平台:

Event Bus事件总线

Verticle是事件驱动的,这意味着除非收到消息,否则它们不会运行。在此之前,它们保持休眠状态。顶点可以通过Vert.x事件总线相互通信。下图说明了顶点如何通过Vert.x事件总线进行通信:

消息可以是简单的对象(例如Java对象),字符串,CSV,JSON,二进制数据或者我们需要的其他任何对象。

顶点可以发送和收听地址。地址就像命名通道。将消息发送到给定地址时,在该地址上侦听的所有顶点都将接收到该消息。顶点可以在发件人不知情的情况下订阅和取消订阅地址。这导致消息发送者和消息接收者之间的耦合非常松散。

所有消息处理都是异步的。如果一个顶点将消息发送到另一个顶点,则该消息首先放在事件总线上,然后控制权返回到发送顶点。后来,该消息出队,并发送给侦听该消息发送到的地址的顶点。

Vert.x线程模型

顶点以单线程模式运行。这意味着,一个顶点只能由单个线程执行,并且始终由同一线程执行。这意味着我们将永远不必考虑顶点内部的多线程(除非我们自己启动与顶点通信的其他线程等)。

Vert.x可以使用计算机中的所有CPU或者CPU中的核心。 Vert.x通过为每个CPU创建一个线程来做到这一点。每个线程可以将消息发送到多个顶点。记住,顶点是事件驱动的,并且仅在接收消息时才运行,因此,顶点不需要具有自己的独占线程。单个线程可以将消息分发到多个顶点。

当线程将消息传递到某个垂直消息时,该垂直消息的消息处理代码由该线程执行。消息传递和消息处理逻辑是通过在由垂直记录注册的处理程序(侦听器对象)中调用方法来执行的。 Verticle的消息处理逻辑完成后,线程可以将消息传递到另一个Verticle。

Vert.x服务

Vert.x带有一组内置服务(函数)。其中一些服务是:

  • HTTP服务器
  • JDBC连接器
  • MongoDB连接器
  • SMTP邮件
  • 消息队列连接器

这些只是Vert.x提供的以及社区为Vert.x提供的众多服务中的少数几个。