一、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
五、第一個vert.x
1、在官網生產starter
選擇web 和mysql客戶端
點擊 Generate Project 下載生成的工程
2、把剛剛生成的starter用 idea打開
主函數
添加啟動類
注意事項:
1、jdk需要版本為 jdk11
2、run 后的地址要正確,和 MainVerticle 類所在package 要對上