下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、關(guān)于Java框架Vert.x的幾點(diǎn)思考發(fā)表于2015-05-20 17:18|2652次閱讀| 來(lái)源CSDN|0條評(píng)論| 作者白小勇特別策劃JavaJava20周年程序員電子刊摘要:Vert.x是一個(gè)基于JVM、輕量級(jí)、高性能的應(yīng)用平臺(tái),非常適用于最新的移動(dòng)端后臺(tái)、互聯(lián)網(wǎng)、企業(yè)應(yīng)用架構(gòu)。Vert.x基于全異步Java服務(wù)器Netty,并擴(kuò)展出了很多有用的特性。Vert.x簡(jiǎn)介在Java20周年之際,Java用戶(hù)對(duì)Java的抱怨與日俱增,比如內(nèi)存管理、笨重的JavaEE等。而Java依然在TIOBE編程語(yǔ)言排行榜上艱難的維持第一名的位置,隨著一些新編程語(yǔ)言的興起,這個(gè)領(lǐng)域目前呈現(xiàn)一種混戰(zhàn)的態(tài)勢(shì)。
2、在這種背景下,Java屆的小鮮肉框架Vert.x于2015年5月7日發(fā)布了3.0-milestone5版本,距離計(jì)劃6月22日發(fā)布Vert.x3.0.0-final越來(lái)越近了,Vert.x用戶(hù)組的粉絲們近期已經(jīng)迫不及待地在宇宙中心(注:北京五道口)組織了一次Vert.x中國(guó)用戶(hù)組Meetup,針對(duì)Vert.x工程化開(kāi)發(fā)問(wèn)題以及Vert.x3新特性展開(kāi)了探討。Vert.x(http:/vertx.io/)是一個(gè)基于JVM、輕量級(jí)、高性能的應(yīng)用平臺(tái),非常適用于最新的移動(dòng)端后臺(tái)、互聯(lián)網(wǎng)、企業(yè)應(yīng)用架構(gòu)。Vert.x基于全異步Java服務(wù)器Netty,并擴(kuò)展出了很多有用的特性。Vert.x的亮點(diǎn)有:同時(shí)
3、支持多種編程語(yǔ)言目前已經(jīng)支持了Java、JavaScript、Ruby、Python、Groovy、Clojure、Ceylon等。對(duì)程序員來(lái)說(shuō),直接好處就是可以使用各種語(yǔ)言豐富的LIB,同時(shí)也不再為編程語(yǔ)言選型而糾結(jié);異步無(wú)鎖編程經(jīng)典的多線(xiàn)程編程模型能滿(mǎn)足很多Web開(kāi)發(fā)場(chǎng)景,但隨著移動(dòng)互聯(lián)網(wǎng)并發(fā)連接數(shù)的猛增,多線(xiàn)程并發(fā)控制模型性能難以擴(kuò)展,同時(shí)要想控制好并發(fā)鎖需要較高的技巧,目前Reactor異步編程模型開(kāi)始跑馬圈地,而Vert.x就是這種異步無(wú)鎖編程的一個(gè)首選;對(duì)各種IO的豐富支持目前Vert.x的異步模型已支持TCP、UDP、FileSystem、DNS、EventBus、Sockjs等
4、;極好的分布式開(kāi)發(fā)支持Vert.x通過(guò)EventBus事件總線(xiàn),可以輕松編寫(xiě)分布式解耦的程序,具有很好的擴(kuò)展性;生態(tài)體系日趨成熟Vert.x歸入Eclipse基金會(huì)門(mén)下,異步驅(qū)動(dòng)已經(jīng)支持了Postgres、MySQL、MongoDB、Redis等常用組件,并且有若干Vert.x在生產(chǎn)環(huán)境中的應(yīng)用案例。Reactor模式和傳統(tǒng)Java框架的多線(xiàn)程模型相比,Vert.x Netty是 Reactor模式的Java實(shí)現(xiàn)??脊帕艘幌翿eactor模式, 其理論最早由Washington University的Douglas C. Schmidt教授在1995年提出,在Proactor - An Obj
5、ect Behavioral Pattern for Demultiplexing and Dispatching Handlers for Asynchronous Events 這篇論文中做了 完整介紹。圖1-6是對(duì)其關(guān)鍵原理部分展開(kāi)分析。圖1 一個(gè)經(jīng)典Web Server在收到Web瀏覽器請(qǐng)求后的處理過(guò)程圖2 一個(gè)經(jīng)典Web Server使用多線(xiàn)程模型,并發(fā)處理來(lái)自多個(gè)Web瀏 覽器的請(qǐng)求圖3 Web瀏覽器連接到一個(gè)Reactor模式的Web Server處理過(guò)程。利 用了Initiation Dispatcher組件,把耗時(shí)的IO操作事件注冊(cè)到Initiation Dispatcher
6、組件圖4 Web瀏覽器訪(fǎng)問(wèn)一個(gè)Reactor模式的Web Server處理過(guò)程。耗時(shí)IO 操作由其它線(xiàn)程執(zhí)行,IO執(zhí)行完成后通知Initiation Dispatcher,再回到 Http Handler執(zhí)行圖5 Web瀏覽器連接一個(gè)Proactor模式的Web Server處理過(guò)程。和Reactor的主要區(qū)別是耗時(shí)IO操作交給操作系統(tǒng)異步IO庫(kù)執(zhí)行(例如 GNU/Linux aio),操作系統(tǒng)異步IO庫(kù)執(zhí)行完畢后,通過(guò)異步IO通知機(jī)制(例如epoll)觸發(fā)Completion Dispatch,再交給Http Handler執(zhí)行圖6 Web瀏覽器訪(fǎng)問(wèn)一個(gè)Proactor模式的Web Serv
7、er處理過(guò)程。和Reactor的主要區(qū)別是耗時(shí)IO操作交給操作系統(tǒng)異步IO庫(kù)執(zhí)行(例如 GNU/Linux aio),操作系統(tǒng)異步IO庫(kù)執(zhí)行完畢后,通過(guò)異步IO通知機(jī)制(例如epoll)觸發(fā)Completion Dispatch,再交給Http Handler執(zhí)行事實(shí)上,Vert.x/Netty的Reactor實(shí)現(xiàn)部分是在Netty 4.0如上述所示的代碼中實(shí)現(xiàn),和上述圖中能對(duì)應(yīng)的幾個(gè)類(lèi)是ty.channel.nio.NioEventLoop,ty. channel.epoll.EpollEventLoop,java.nio.channels.spi.SelectorP
8、rovide。Vert.x3.0的更新Vert.x3.0是對(duì)Vert.x2.x的重大升級(jí),不僅僅是package從org.vertx到io.vertx的全面替換,一些重要的核心類(lèi)也都做了破壞式的重構(gòu),幾乎很難從vert.x2程序升級(jí)到vert.x3.0程序。建議新項(xiàng)目直接從Vert.x3.0開(kāi)始。以下是Vert.x3的一些功能升級(jí): Vert.x2.x中的模塊體系去掉了。目前Vert.x3.0推薦用Maven的模塊體系,當(dāng)然不僅限于Maven;支持其他語(yǔ)言在Vert.x上的代碼生成; Vert.x3.0項(xiàng)目構(gòu)建,從Gradle改為Maven;為了更好地利用Java8的Lambdas表達(dá)式,只支
9、持Java8;默認(rèn)采用扁平的classpath結(jié)構(gòu); Verticle工廠(chǎng)方式簡(jiǎn)化;支持用編程的方式實(shí)例化Verticle、以及部署Verticle實(shí)例;當(dāng)你阻塞Eventloop主線(xiàn)程時(shí)警告,阻塞Reactor主線(xiàn)程是一種錯(cuò)誤的使用方式;移除了PlatformManager模塊;集群管理可以用編程的方式調(diào)用支持集群節(jié)點(diǎn)之間的共享數(shù)據(jù);完全重寫(xiě)了HTTPclient,更完善; WebSocketAPI改善; SSL/TLS的改善; Eventbus的API改善; 支持Eventbus代理;增加了擴(kuò)展項(xiàng)目集extstack; 增加了MongoService,支持MongoDB的純異步驅(qū)動(dòng); 實(shí)現(xiàn)
10、ReactiveStreams; 對(duì)reactive-streams的實(shí)現(xiàn); 支持Options類(lèi)的使用,可以構(gòu)造函數(shù)帶參數(shù)進(jìn)去;更完整的樣例工程。請(qǐng)見(jiàn):/vert-x3/example-proj綜述綜合來(lái)看,Vert.x3還未正式發(fā)布,但其主體功能已經(jīng)開(kāi)發(fā)完畢并趨于穩(wěn)定,在應(yīng)用開(kāi)發(fā)中已經(jīng)可以考慮使用。程序員在適應(yīng)了異步回調(diào)式的編程方式后,相信很快可能感受到Reactor模式的性能紅利和Vert.x的魅力。也許Vert.x會(huì)給Java和應(yīng)用框架領(lǐng)域帶來(lái)不一樣的驚喜。白小勇作者簡(jiǎn)介:白小勇,煉石網(wǎng)絡(luò)CipherGateway創(chuàng)始人、CEO,專(zhuān)注公有云安全。曾就職 于中國(guó)數(shù)碼集團(tuán)負(fù)責(zé)研發(fā)CMS、在用友工程負(fù)責(zé)研發(fā)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 雜交葵花生產(chǎn)合同(2篇)
- 機(jī)場(chǎng)地勤服務(wù)合同(2篇)
- 2025年大理農(nóng)林職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年四川華新現(xiàn)代職業(yè)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025至2031年中國(guó)水處理曝氣管行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024-2025學(xué)年高中政治 專(zhuān)題3 2 訂立合同有學(xué)問(wèn)說(shuō)課稿 新人教版選修5
- 人口遷移與社會(huì)保障體系適應(yīng)性研究-深度研究
- 工業(yè)大數(shù)據(jù)平臺(tái)構(gòu)建與應(yīng)用-深度研究
- 2025年度水資源綜合利用項(xiàng)目咨詢(xún)合同
- 2025年度煤炭綠色運(yùn)輸體系建設(shè)合同
- 搞笑小品劇本《大城小事》臺(tái)詞完整版
- 人大代表小組活動(dòng)計(jì)劃人大代表活動(dòng)方案
- 《大模型原理與技術(shù)》全套教學(xué)課件
- 2023年護(hù)理人員分層培訓(xùn)、考核計(jì)劃表
- 《銷(xiāo)售培訓(xùn)實(shí)例》課件
- 2025年四川省新高考八省適應(yīng)性聯(lián)考模擬演練(二)地理試卷(含答案詳解)
- 【經(jīng)典文獻(xiàn)】《矛盾論》全文
- Vue3系統(tǒng)入門(mén)與項(xiàng)目實(shí)戰(zhàn)
- 2024年寧夏回族自治區(qū)中考英語(yǔ)試題含解析
- 光伏發(fā)電項(xiàng)目試驗(yàn)檢測(cè)計(jì)劃
- 房屋建筑工程投標(biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論