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
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!