一、前言
公司的新项目是vertx开发的,找了很久发现这个框架目前的资料还是挺少的,那就自己做一个比较全的资料吧。
二、vert.x介绍
- vert.x是Eclipse软件基金会顶级java开源项目之一,它基于netty的、运行在jvm之上的、支持多种编程语言的高性能异步、非阻塞、响应式全栈java web框架。它在techempower.com网站多项性能测试中占据java语言榜首。官网地址如下:https://vertx.io/
- Vert.x采用单一组件结构设计,即Verticle,所有业务功能都使用Verticle这种单一的组件编程完成,克服以往应用框架和平台包含众多类型的组件模式,使得开发人员能极快适应Vert.x编程,加快项目的开发速度。
- Vert.x中所有的Verticle组件都是完全解耦合的,任何组件之间不能直接调用,只能通过在Vert.x的事件总线上发送事件来完成,彻底解决了传统应用系统中管理组件间相互依赖的复杂性,最终使得Vert. x应用编程极其简单高效。
- Vert.x使用单线程事件驱动的异步工作模式,编写Vert.x组件时,不需要考虑复杂的多线程编程难题,并不需要关注线程之间的调用、同步、加锁等繁琐处理编程,简化了编程代码,提高了编程效率。
- Vert. x通过提供一整套的异步编程API实现异步编程模型,在Vert. x中所有的请求处理都是通过注册事件监听处理器机制完成的。编程TCP处理服务器Verticle,通过注册TCPSocket的数据到达事件监听器,实现数据到达后的回调处理,而不是采用一直等待数据读取的阻塞模式,实现的是非阻塞的异步工作模式。
- Vert.x的核心运行机制是事件循环,当Vert.x实例启动后,Vert.x框架在每个CPU的内核创建一个事件循环线程。此事件循环线程永不结束,它不断监听出现的各种事件,如事件总线的事件到达WebSocket上的数据接收,HTTP上的请求到达HTTP响应结束,定时器触发等等,并把事件分发到注册了监听此事件的Verticle,再继续监听其他的事件,如此反复直到Vert.x实例停止。
三、vert.x 与 spring的对比
- spring是单体架构设计,
- vert.x面向分布式设计,性能高,在vert.x的概念中,没有MVC,没有AOP,没有ORM。二者的生态框架对比图如下
vert.x | spring |
---|---|
Vert.x Core | Spring Framework |
Vert.x Web | SpringBoot |
Vert.x Data Access | Spring Data Jpa |
Vert.x Reactive | Project Reactor |
Vert.x Microservices | Spring Cloud |
Vert.x Authentication and Authorisation | Spring Security |
Vert.x MQTT | |
Vert.x Messaging | Spring AMQP |
Vert.x Devops | Spring Devops |
- vert.x 与 Spring 支持的编程语言对比
vert.x | spring |
---|---|
java,Kotlin,JavaScript, Groovy,Ruby,Scala | java,Kotlin,Groovy |
四、vert.x 学前准备
- JDK: openjdk 11
- IDE: IntelliJ IDEA Community 2020.1
- 数据库: MySql8 & PostgreSq10