



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