你!学Java的,除了Spring你还知道什么

Vert.x 是什么

  • vert.x是基于JVM,轻量级,高性能的应用平台。
  • JVMReactive开发套件
  • 基于全异步Java服务Netty
  • 同时支持多种编程语言
  • 同步无锁编程
  • 极好的分布式开发支持

Vert.xJava中构建反应式微服务平台提供了整套工具包.包含WebData accessReactiveMicroservicesMQTTAuthentication and AuthorisationIntegrationEvent Bus BridgeDevopsTestingClusteringServices等等

注意: Vert.x 不是一个框架,它只是一个工具包.
它的核心库定义了编写异步网络应用的基本API,你可以为应用程序选择有用的模块(如数据库连接,监控,认证,日志,服务发现,集群支持等)

Vert.x 是支持多语言的。比如 java, groovy,scala, kotlin, javascript, ruby, ceylon

Vert.x 能做什么

  • Vert.x适合做 简单的网络实用程序,复杂的现代web应用程序,Http/Https微服务,大容量时间处理,全面的后端消息总线应用程序.
    Vert.x 封装了Web开发常用的组件, 支持路由,Session管理,模板等.最重要的是,它不需要容器.

  • Vert.x被许多不同的公司用于从实时游戏到银行业务以及介于两者之间的所有事物。

  • TCP/UDP开发,vert.x基于Netty. 提供了丰富的类库, 支持多种网络应用开发. 不需要处理底层细节.注重业务代码的编码即可。

  • 提供了对WebSocket的支持,可以做聊天室,动态推送等.

  • Event BusVert.x的神经,可以通过Event Bus 实现分布式消息,远程方法调用等等. 也可以非常便捷的开发微服务应用.

  • 支持主流数据库和消息的访问.

  • 分布式锁,分布式计数器,分布式Map的支持.

简单地与Spring进行下对比

项目SpringVertx
核心框架Spring-corevertx-core
web开发Spring-webMvcvertx-web
jdbc框架spring-jdbcvertx-jdbc-client
redisspring-data-redisvertx-redis-client
微服务springCloudvertx-hazelcast

vert.x 有什么优势

  • Vert.x是非常轻量的
  • Vert.x性能极高,运行和启动特别快
  • Vert.x不是应用程序服务器
  • Vert.x是创建轻量级,高性能服务器的理想选择.

Vert.x中的相关概念

Verticle

VerticleVert.x部署和运行的代码块.

一个应用程序通常是由在同一个Vert.x实例中同时运行的许多Verticle实例组合而成。

Verticle的类型

  • Stardand Verticle: 永远运行在Event Loop线程上, 是一类常用的Verticle
  • Worker Verticle: 运行在Worker Pool中的线程上, 一个实例绝对不会被多个线程同时执行。
  • Multi-Thread Worker Verticle : 运行在Worker Poll中的线程上, 一个实例可以由多个线程同时执行(会有线程安全问题)
Standard Verticle
  • Standard Verticle 被创建时,它会被分派给一个 Event Loop 线程,并在这个 Event Loop 中执行它的start方法。当您在一个 Event Loop 上调用了 Core API 中的方法并传入了处理器时,Vert.x 将保证用与调用该方法时相同的 Event Loop 来执行这些处理器。
  • Verticle中的所有代码都在相同的Event Loop处理器中执行. 所以,使用单线程的方式去编写就可以了。
Worker Verticle

Worker Verticle是由Worker Pool中的线程去执行的,它被设计来调用阻塞式代码,它不会阻塞任何Event Loop. Worker Verticle 实例绝对不会在Vert.x中被多个线程同时执行,但是它可以在不同时间由不同的线程执行.
通过 setWorker 方法来把 Verticle 设置成worker Verticle ,
如果不想使用Worker Verticle 来运行阻塞式代码,也可以在Event Loop 中使用内联阻塞式代码.

Multi-threaded Worker Verticle

Multi-threaded Worker Verticle 可以由不同的线程同时执行。这里要特别注意线程安全。

Event Bus(事件总线)

Event Bus 负责Verticle之间的通信.

[外链图片转存失败(img-3K8NrESQ-1567947562223)(./images/event-bus)]

事件总线允许传递任何类型的数据,然而 JSON 是首选的交换格式, 因为 它允许不同语言编写的Verticle 之间进行通讯,JSON 是一种流行的通用半结构化数据奉送处理文本格式.

消息可以发送到任意自由字符串组成的目的地. 事件总线支持以下通讯方式:

  • 1.端到端的消息
  • 2.请求–响应消息
  • 3.发布,订阅用于广播消息.

事件总线允许Verticle之间透明的通讯, 不只是在同一个JVM进程中.

  • 当网络集群启动是,事件总线都是分布式的,因为消息可以被发送到运行于其他应用节点的Verticle.
  • 事件总线可以通过一个简单的TCP协议访问,以便第三方应用进行通讯.
  • 事件总线可以通过通用消息桥公开(AMQP,Stomp)
  • SockJS桥接运行web应用通过运行在浏览器中的javaScript与事件总线无缝通讯,与任何Verticle一样接口与发布消息.

小结

  • vert.x是什么? vert.x是一堆工具包.
  • vert.x能做什么? web,application,聊天室,UDP/TCP应用
  • Vert.x的相关概念
    • verticle以及三种Verticle类型
    • 事件总线( Event Bus )

预告

[第一个Vert.x-web应用程序-Java版](#预告)
posted @ 2019-09-08 21:01  方家小白  阅读(26)  评论(0编辑  收藏  举报