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