work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Vertx 简单介绍

Posted on 2022-02-15 10:34  work hard work smart  阅读(1157)  评论(0编辑  收藏  举报

Vert.x 最大的特点在于异步(底层基于Netty),通过事件循环(EventLoop)来调起存储在异步任务队列(CallBackQueue)中的任务,大大降低了传统阻塞模型中线程对操作系统的开销。异步模型能够很大程度的提高系统的并发量。

1、Vertx能做什么

Java能做的,Vert.x 都能做

1) Web 开发,支持路由,Session管理,模板等,不需要容器。

2)TCP/UDP开发,Vert.x 底层基于Netty,提供了丰富的IO类库,支持多种网络应用开发。

3)提供对WebSocket的支持

4)Event Bus(事件总线)是Vert.x的神经系统,通过事件总线可以实现分布式消息,远程方法调用等。正式因为Event Bus,Vert.x 可以非常便捷的开发微服务应用。

5)支持主流的数据和消息访问

redis,mongodb, rabbitmq, kafka等。

6)分布式锁,分布式计数器,分布式map的支持。

 

2、什么是Vert.x

简单的说,Vert.x 就是一堆jar包, 提供了一些列编程API接口,通过这些API,可以实现异步编程。

Vert.x 可以开发Web应用,但Vert.x 不仅仅是一个Web开发框架,他更像Spring,是一个技术栈,或者说是一个Vert.x生态体系。

(Vert.x生态可以查看https://github.com/vert-x3/vertx-awesome),在这个体系中,Vert.x 只是提供了Web开发的能力,下面对Vertx和Spring做一个对比:

项目  Spring Vertx
核心框架 spring-core  vertx-core
Web开发 spring-webmvc vertx-web
jdbc框架 spring-jdbc vertx-jdbc-client
redis spring-data-redis  vertx-redis-client
微服务  spring-cloud vertx-hazelcast

 

 

 

 

 

 

 

spring和Vertx的区别,Spring的操作是同步的,Vertx的操作时异步的。异步带来了更高的性能,但同时也带来了编码和调式的复杂度。

 

绝大部分企业可能都在使用SpringMVC,Vert.x这个Web层框架,却很少有人知道,但它却是仅次于SpringMC排名第二的Web层框架

 

 

3、Vert.x的一些优势

1) 异步非阻塞

使用上和ajax非常像。

2)Vertx支持多种编程语言

在Vert.x 上,可以使用JavaScript, Java, Scala, Ruby, Kotlin等等。

3) 不依赖中间件

Vert.x 的底层依赖Netty, 因此在使用Vert.x构建Web项目时,不依赖中间件,向Node一样,可以直接创建一个HttpServer。

4) 完善的生态

Vert.x 和Spring的对比,有一种MacOS和Windows对比的感觉。

5)为微服务而生

 

4、Vert.x 技术体系

Vert.x有完善的生态,具体可查看https://github.com/vert-x3/vertx-awesome

1) 核心模块

Vert.x核心模块包含一些基础的功能,如HTTP,TCP,文件系统访问,EventBus、WebSocket、延时与重复执行、缓存等其他基础的功能,你可以在你自己的应用程序中直接使用。可以通过vertx-core模块引用即可。

2)Web模块

Vert.x Web是一个工具集,虽然核心模块提供了HTTP的支持,但是要开发复杂的Web应用,还需要路由、Session、请求数据读取、Rest支持等等还需要Web模块,这里提供了上述的这些功能的API,便于开发。

除了对Web服务的开发以外,还提供了对Web客户端请求的支持,通过vertx-web-client即可方便的访问HTTP服务。有朋友可能会有疑惑,我明明可以使用JDK提供的URL来请求HTTP服务啊。使用Vert.x一定要注意,Vert.x是一个异步框架,请求HTTP服务是一个耗时操作,所有的耗时,都会阻塞EventBus,导致整体性能被拖垮,因此,对于请求Web服务,一定要使用Vert.x提供的vertx-web-client模块

3)数据访问模块

Vert.x提供了对关系型数据库、NoSQL、消息中间件的支持,传统的客户端因为是阻塞的,会严重影响系统的性能,因此Vert.x提供了对以上客户端的异步支持。具体支持的数据访问如下:

MongoDB client,JDBC client,SQL common,Redis client,MySQL/PostgreSQLclient

4)Reactive响应式编程

5)整合其他模块

6)认证与授权

7)微服务

Vert.x提供多个组件构建基于微服务的应用程序。

比如服务发现(Vert.x Service Discovery)、断路器(Vert.x Circuit Breaker)、配置中心(Vert.x Config)等

 

参考: https://blog.csdn.net/king_kgh/article/details/80772657