Vert.x發布了其工具集的3.3.0版本。該工具集用于基于JVM構建反應式、分布式、多語言應用程序。
該版本提供了大量的新特性和改進,下面將介紹其中最重要的內容。
網絡
Vert.x 3.3.0內置支持HTTP2,允許開發人員創建HTTP2客戶端和服務器,包括H2C和HTTP2 push。
HTTP/2是一個幀協議,使用幀表示HTTP請求和響應。該版本允許應用程序在請求上使用customFrameHandler方法接收自定義幀,每次有自定義幀到達時,該方法都會被調用。下面是文檔中提供的一個例子:
request.customFrameHandler(frame -> { System.out.println("Received a frame type=" + frame.type() + " payload" + frame.payload().toString());});該版本還新增了對Socks5和HTTP代理的支持,允許用戶在配置TCP和HTTP客戶端時配置代理設置。
在Java中,DNS域名解析是一個阻塞事務,使用一個比較慢的DNS服務可能會長時間阻塞Vert.x事件循環,這與Vert.x的宗旨不符:“永不阻塞事件循環”。為了避免這種情況,Vert.x 3.3.0集成了一個異步DNS解析器。現在,當創建HTTP客戶端或者TCP客戶端時,主機名解析會異步進行。在TCP和HTTP服務器初始化時也會用到這個異步解析器。
Vert.x事件總線是Vert.x應用程序的骨架。它允許Vert.x應用程序的不同部分通過消息進行通信。以前,用戶是無法對這類通信的TCP層面進行配置的,但在3.3.0版本中,你可以配置通信的所有層面,包括SSL,因此,你可以通過事件總線安全地交換消息。
集成
Vert.x應用程序通常會集成進更大的系統,Vert.x 3.3.0改進了Vert.x與系統其他部分的交互方式。首先,它提供了同Apache Camel的橋接功能,后者是一個流行的集成框架,提供了超過100個組件來連接各種應用程序。
Vert.x 3.3.0提供了一個RabbitMQ客戶端、一個AMQP 1.0客戶端和橋接器。AMQP 1.0是一種流行的跨平臺消息協議,可以廣泛應用于多種場景。
鑒于安全是任何互聯網應用程序的一個核心問題,Vert.x 3.3.0增加了對OAuth 2身份驗證機制的支持,因此,你現在可以輕松地將應用程序連接到任何OAuth 2提供商,比如Google、LinkedIn、Github、KeyCloak、Twitter和Facebook。
微服務
自創建之初,Vert.x就成為了微服務架構的先驅,但有關微服務的實踐已經發生了變化,在Vert.x 3.3.0中,我們提供了如下兩個特性:
服務發現 斷路器服務發現是一種提升服務位置透明度的方法;服務是在運行時發現的,服務位置不需要硬編碼。使用Consul或Kubernetes可以擴展服務發現的支持環境。
Vert.x總是將故障作為一等公民,但有時候,你需要更為高級的故障管理,尤其是要避免對(故障)服務施加過大的壓力。針對這種情況,Vert.x提供了自己的斷路器模式實現。
監控
Vert.x 3.3.0還擴展了收集的指標集合。當然,這為HTTP2提供了支持,但它還讓更好地監控由Vert.x管理的線程成為可能。例如,現在可以監控工作隊列了,這樣就可以對它的大小進行配置以滿足你的需求。
此外,為了改進調優功能,JDBC連接池還增強了反饋指標。
使用Vert.x編程
Vert.x 3.3.0還改進了開發模型,包括改進用于并行執行任務的Futures類的構成,簡化了異步操作的鏈接。
應用程序測試至關重要,經過改進的Vert.x Unit允許使用任何斷言框架。你不必再局限于由TestContext提供的斷言;你可以使用Hamcrest、 AssertJ或Rest-Assured。
上述只是其中的部分特性和改進。Vert.x 3.3.0提供的其他特性和改進還有許多,包括JDBC批處理支持、Redis geo指令,等等。要了解更多信息,請查看Vertx.io網站。
查看英文原文:Vert.x 3.3.0 Features Enhanced Networking Microservices, Testing and more