


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、netty教程一part2創(chuàng)建channel連接- java開發(fā)java經(jīng)驗(yàn) 技巧netty 教程一part2創(chuàng)建 channel 連接木文由importnew劉海波 翻譯自seeallhearall.blogspoto歡迎加入翻譯小組。轉(zhuǎn)載請見文 末要求。本文是netty教程的第二篇。channel不是直接被創(chuàng)建的,而是通過channelfactory來創(chuàng)建。channelfactory 有2種類別,一種用來實(shí)現(xiàn)客戶端channel,另一種用于服務(wù)器端的channel。 對于這2種分類,都有不同的實(shí)現(xiàn)類來處理相應(yīng)的i/o通訊協(xié)議: tcp?nlo?channels:?nioclientsoc
2、ketchannelfactory?>fu?nioscrvcrsockctchannclfactory udp?nio?channels:?niodatagramchannelfactory tcp?oio?channels:?oioclientsocketchannelfactory 和oioserversocketchannelfactory udp?oio?channels:?oiodatagramchannelfactoryudp的channelfactory在客戶端和服務(wù)器端的實(shí)現(xiàn)相同的,因?yàn)閡dp是無連接 i辦議。還冇其他2種類型: http?客戶端:?httptunneli
3、ngclientsocketchannelfactory:?這個(gè) channelfactory 能 夠方便地生成channel用于通過指定的netty?servlet來?連接netty服?務(wù)器。 local?channels:?defaultlocalclientchannelfactory?和?defaultlocalserverchannelfactory?分別是客丿端和服務(wù)器端in-vm類?型的 channel組?件,這種channel貌似是網(wǎng)絡(luò)channel實(shí)際上是在同一個(gè)jvm屮來處理 調(diào)川。這樣在某些情況下,木地請求可以通過統(tǒng)一的channel抽象接口被分發(fā)、處 理。在本篇闿客中主
4、要涉及tcp?nto?channel, ?但是要注意創(chuàng)建不同 channelfactory的方式上有細(xì)微的弟別。tcp?n10?channelfactory的構(gòu)造方法使用相同類型的參數(shù),述冇一些重載方法。 基本上,這個(gè)factory需?要2個(gè)?線程池/executors: boss線程:由這個(gè)線程池提供的線程是boss種類的,用于創(chuàng)建、連接、綁定socket, 然后把這些socket傳?給worker線程池。在服務(wù)器端每個(gè)監(jiān)聽的socket都?冇一個(gè)boss 線?程來處理。在客戶端,只有一個(gè)boss線程來處理所有的socketo worker線程:worker線?程執(zhí)行所有的異步i/o。?他們
5、不是通用的線程,開發(fā)人員 需耍注意不要把與具不同的任務(wù)賦給線程,這可能導(dǎo)致線程被阻塞、無法處理他們 真正關(guān)心的任務(wù),反過來會導(dǎo)致死鎖和一些莫名其妙的性能問題。在客戶端只有一個(gè)boss線程,為什么nioclicntsockctchemnclfeictory還需要 一個(gè) executors?1. boss線程能夠被延遲加載,而h沒冇任務(wù)需要處理的時(shí)候可以被釋放,但是在線程 池屮保留少量的線程比在需要的時(shí)候創(chuàng)建一個(gè)新的線程、然示在空閑的時(shí)候銷毀它 更有效率。2. 還有可能多個(gè)不同的channelfactory被創(chuàng)建,應(yīng)該訃這些channelfactory共用一個(gè) 線程池,而不是每個(gè)工廠獨(dú)享一個(gè)線程池
6、。因?yàn)閚io?channelfactory是唯一可以杲步的處理socket連接、服務(wù)器端socket 的綁定,所以是唯一使用boss線?程池的channelfactoryo ?其他的種類有的使 用虛擬連接(local),有的是同步的連接(010) ?或者無狀態(tài)連接(udp)。 ilttptuncl ingclicntsockctcharrnclfactory 是客戶端 socket?charrnclfactory 的簡單封裝,是否使用boss線程是可選的,而月.也沒給它配置boss線程。關(guān)于channelfactory需要注意:在netty中處理邏輯的過程中,channelfactory 需要
7、申請資源,包括線程池。如果使用channelfactory之?后,一定要調(diào)用它的 rel easeexternal resources ()方?法來保證它申請的所冇資源被釋放??倆,發(fā)送東西到一個(gè)監(jiān)聽狀態(tài)的服務(wù)器:1. 創(chuàng)建一個(gè) channelo2. 將channel連接到遠(yuǎn)程監(jiān)聽的socket<>3. 調(diào)丿ij channel 的 write(object?message)方法。傳對象到channel很靈活?不是如此,如果按照下面的方式做會出現(xiàn)什么?channcl. write (ncwdatc();netty會拋出這個(gè)異常:java.lang.illegalargumentex
8、ception: unsupported message type: class java. util. date那支持什么樣的對象呢? channelbuffero但是channel有一個(gè)叫做pipeline 的構(gòu)造器(準(zhǔn)確的說是channclpipclinc) o 一個(gè)pipeline是一組攔截器組成 的,這些攔截器能夠處理和轉(zhuǎn)換傳給他們的值。當(dāng)一個(gè)攔截器處理完成后,處理 后的值會被傳給下一個(gè)攔截器。這些攔截器被稱作channelhandlero pipeline 會嚴(yán)格保證channel handl er實(shí)例的順序。通常',第一個(gè)channel handl er會?接 收一個(gè)原始的channelbuffer,而最后一個(gè)channelllandler (被稱作sink)會 任何轉(zhuǎn)給它的東西輸出。在pipeline的某個(gè)流程小,你可以實(shí)現(xiàn)一個(gè) channelhandler來做些有用的操作。channelhandler只是一個(gè)標(biāo)識性接口,沒 有任何方法,因此處理器的實(shí)現(xiàn)很靈活,但是任何一個(gè)處理器都需要和應(yīng)或者轉(zhuǎn) 發(fā)channel event (這里有很多專業(yè)的術(shù)語)。這個(gè)channelevent又是什么鬼東西呢?在這兩段落屮,把channelevent當(dāng)做一 個(gè)含有channelbuffer的包裹。至于channelbuffer
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇溧陽2024~2025學(xué)年高一下冊期末教學(xué)質(zhì)量調(diào)研數(shù)學(xué)試題學(xué)生卷
- 2024~2025學(xué)年廣西壯族自治區(qū)河池宜州區(qū)八年級下冊4月期中考試數(shù)學(xué)試題【帶答案】
- 變革過程中的組織記憶管理考核試卷
- 農(nóng)業(yè)機(jī)械化與信息技術(shù)融合的農(nóng)業(yè)產(chǎn)業(yè)鏈優(yōu)化考核試卷
- 在線絲綢貿(mào)易平臺發(fā)展現(xiàn)狀考核試卷
- 自我監(jiān)測考核試卷
- 創(chuàng)業(yè)項(xiàng)目企業(yè)社會責(zé)任報(bào)告撰寫案例考核試卷
- 需求管理中的多目標(biāo)決策模型考核試卷
- 賽事應(yīng)急物資供應(yīng)鏈管理與保障機(jī)制考核試卷
- 部編人教版二年級上冊語文 5 玲玲的畫 教案
- 2024年深圳市中考?xì)v史試卷真題(含答案解析)
- 江蘇省建筑與裝飾工程計(jì)價(jià)定額(2014)電子表格版
- 脫碳塔CO2脫氣塔設(shè)計(jì)計(jì)算
- WYA-2WAJ阿貝折射儀使用說明書
- 系列螺桿冷水機(jī)組操作培訓(xùn)
- 五金用樣品承認(rèn)書
- 四年級下冊英語外研一起點(diǎn)知識要點(diǎn)匯總
- CA6140車床杠桿工藝設(shè)計(jì)說明書完全版
- T_CHES 17-2018 水井報(bào)廢與處理技術(shù)導(dǎo)則
- 酒店住宿賬單模板
- 餐飲服務(wù)員必備六大技能課程
評論
0/150
提交評論