选择Vert.x的3个理由
Vert.x是用于JVM的輕量級高性能應(yīng)用程序平臺
現(xiàn)代Web應(yīng)用程序和移動客戶端的興起重新定義了Web服務(wù)器的期望。 Node.js是第一個識別范式轉(zhuǎn)換并提供解決方案的技術(shù)。
應(yīng)用程序平臺Vert.x借鑒了Node.js的一些創(chuàng)新,并使其在JVM上可用,將新鮮的想法與最復(fù)雜,最快的運(yùn)行時環(huán)境之一結(jié)合在一起。 Vert.x附帶了一系列令人興奮的功能,這些功能對于開發(fā)Web應(yīng)用程序的任何人都非常有趣。
非阻塞,事件驅(qū)動的運(yùn)行時
Vert.x提供了非阻塞的 , 事件驅(qū)動的運(yùn)行時。 如果服務(wù)器必須執(zhí)行需要等待響應(yīng)的任務(wù)(例如,從數(shù)據(jù)庫請求數(shù)據(jù)),則有兩種方法可以實現(xiàn):阻塞和非阻塞。
傳統(tǒng)方法是同步或阻塞調(diào)用。 程序流暫停并等待答案返回。 為了能夠并行處理多個請求,服務(wù)器將在不同的線程中執(zhí)行每個請求。 優(yōu)點是相對簡單的編程模型,但是如果線程數(shù)量變大,不利的一面是大量開銷。
第二種解決方案是非阻塞調(diào)用。 調(diào)用者無需等待答案,而是繼續(xù)執(zhí)行,但是提供了一個回調(diào),一旦數(shù)據(jù)到達(dá),該回調(diào)將被執(zhí)行。 這種方法需要一個(稍微)更復(fù)雜的編程模型,但開銷卻少得多。 通常,當(dāng)需要并行處理大量請求時,非阻塞方法會帶來更好的性能。
易于使用的并發(fā)性和可伸縮性
Vert.x應(yīng)用程序由松散耦合的組件組成,可以對其進(jìn)行重新排列以適應(yīng)不斷增長的性能要求
Vert.x應(yīng)用程序是使用類似于Actor的并發(fā)模型編寫的。 一個應(yīng)用程序由幾個獨立運(yùn)行的組件(即所謂的Verticles)組成。 一個Verticle運(yùn)行單線程,并通過在全局事件總線上交換消息來與其他Verticles通信。
由于它們不共享狀態(tài),因此Verticles可以并行運(yùn)行。 結(jié)果是編寫多線程應(yīng)用程序的一種易于使用的方法。 您可以創(chuàng)建幾個負(fù)責(zé)同一任務(wù)的Verticles,并且運(yùn)行時將在其中分配工作負(fù)載,這意味著您可以毫不費(fèi)力地充分利用所有CPU內(nèi)核。
頂點也可以分布在多臺計算機(jī)之間。 這對于應(yīng)用程序代碼是透明的。 Verticles使用相同的機(jī)制進(jìn)行通信,就好像它們將在同一臺計算機(jī)上運(yùn)行一樣。 這使得擴(kuò)展應(yīng)用程序變得非常容易。
Vert.x支持JVM上最流行的語言。 正在支持Scala和Clojure。
多種語言
與許多其他應(yīng)用程序平臺不同,Vert.x是多語言的。 應(yīng)用程序可以用幾種語言編寫。 甚至可以在同一應(yīng)用程序中使用不同的語言。 此時,可以使用Java,Python,Groovy,Ruby和JavaScript,并且即將支持Scala和Clojure。
結(jié)論
Vert.x是一個相對較年輕的平臺,因此其生態(tài)系統(tǒng)不如更成熟的平臺豐富。 但是,對于最常見的任務(wù),還有擴(kuò)展可用。 Vert.x的優(yōu)勢令人驚訝。 它的無阻塞,事件驅(qū)動性質(zhì)非常適合現(xiàn)代Web應(yīng)用程序。 Vert.x使編寫并發(fā)應(yīng)用程序變得容易,該應(yīng)用程序可以輕松地從一臺低端計算機(jī)擴(kuò)展到具有多個高端服務(wù)器的集群。 再加上您可以為JVM使用最流行的語言,并使Web開發(fā)人員夢想成真的事實!
翻譯自: https://www.javacodegeeks.com/2014/03/3-reasons-to-choose-vert-x.html
總結(jié)
以上是生活随笔為你收集整理的选择Vert.x的3个理由的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小春日和寓意什么 小关于春日和寓意
- 下一篇: 盖主是什么意思 盖主的解释