摘要:異步和事件驅(qū)動(dòng)是一款異步的事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架,支持快速地開(kāi)發(fā)可維護(hù)的高性能的面向協(xié)議的服務(wù)器和客戶端。由提供的通知機(jī)制消除了手動(dòng)檢查對(duì)應(yīng)的操作是否完成的必要。事件和使用不同的事件來(lái)通知我們狀態(tài)的改變或者是操作的狀態(tài)。
異步和事件驅(qū)動(dòng)
?Netty是一款異步的事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架,支持快速地開(kāi)發(fā)可維護(hù)的高性能的面向協(xié)議的服務(wù)器和客戶端。
Netty簡(jiǎn)介分類 | Netty特性 |
---|---|
設(shè)計(jì) | 統(tǒng)一的API,支持多種傳輸類型,阻塞的和非阻塞的 簡(jiǎn)單強(qiáng)的的線程模型 真正的無(wú)連接數(shù)據(jù)報(bào)套接字支持 鏈接邏輯組件以支持復(fù)用 |
易用使用 | 詳實(shí)的Javadoc和大量的事例集 不需要超過(guò)JDK1.6+的依賴 |
性能 | 擁有比Java的核心API更高的吞吐量以及更低的延遲 得益于池化和復(fù)用,擁有更低的資源消耗 最少的內(nèi)存復(fù)制 |
健壯性 | 不會(huì)因?yàn)槁佟⒖焖倩蛘叱d的連接而導(dǎo)致OutOfMemoryError 消除在高速網(wǎng)絡(luò)中NIO應(yīng)用程序常見(jiàn)的不公平讀/寫(xiě)比率 |
安全性 | 完整的SSL/TLS以及StartTLS支持 可用于受限環(huán)境下,如Applet和OSGI |
社區(qū)驅(qū)動(dòng) | 發(fā)布快速而且頻繁 |
Netty主要構(gòu)件塊:
Channel
回調(diào)
Future
事件和ChannelHandler
Channel?它代表一個(gè)實(shí)體(如一個(gè)硬件設(shè)備、一個(gè)文件、一個(gè)網(wǎng)絡(luò)套接字或者一個(gè)能夠執(zhí)行一個(gè)或者多個(gè)不同的I/O操作的程序組件)的開(kāi)放連接,如讀操作和寫(xiě)操作。
?Channel可以看作是傳入(入站)或傳出(出站)數(shù)據(jù)的載體,它可以被打開(kāi)或者被關(guān)閉,連接或者斷開(kāi)連接。
?一個(gè)回調(diào)其實(shí)就是一個(gè)方法,一個(gè)指向已經(jīng)被提供給另外一個(gè)方法的方法的引用,這個(gè)可以使得后者可以在適當(dāng)?shù)臅r(shí)候調(diào)用前者。
?例如:ChannelHandler中的channelActive()回掉方法會(huì)在當(dāng)一個(gè)新的連接已經(jīng)被建立時(shí)將會(huì)被調(diào)用。
?Future提供了另一種在操作完成時(shí)通知應(yīng)用程序的方式。這個(gè)對(duì)象可以看作是一個(gè)異步操作的結(jié)果的占位符,它將在未來(lái)的某個(gè)時(shí)刻完成,并提供對(duì)其結(jié)果的訪問(wèn)。
? JDK內(nèi)置了java.util.cocurrent.Future,但是其所提供的實(shí)現(xiàn),只允許手動(dòng)檢查對(duì)應(yīng)的操作是否已經(jīng)完成,或者一直阻塞直到它完成。
?Netty提供了自己的實(shí)現(xiàn)——ChannelFuture.
?ChannelFuture提供了幾種額外的方法,這些方法使得我們能夠注冊(cè)一個(gè)或者多個(gè)ChannelListener實(shí)例。監(jiān)聽(tīng)器的回調(diào)方法operationComplete()將會(huì)在對(duì)應(yīng)的操作完成時(shí)被調(diào)用。然后監(jiān)聽(tīng)器可以判斷該操作是成功完成還是出錯(cuò),如果是后者,我們還可以檢索產(chǎn)生的Throwable。
?由ChannelFutureListener提供的通知機(jī)制消除了手動(dòng)檢查對(duì)應(yīng)的操作是否完成的必要。
?每個(gè)Netty的出站I/O操作都將返回一個(gè)ChannelFuture,也就是說(shuō),它們都不會(huì)阻塞。
?Netty使用不同的事件來(lái)通知我們狀態(tài)的改變或者是操作的狀態(tài)。這使得我們能夠基于已經(jīng)發(fā)生的事件來(lái)觸發(fā)適當(dāng)?shù)膭?dòng)作,如:
記錄日志
數(shù)據(jù)轉(zhuǎn)換
流控制
應(yīng)用程序邏輯
?Netty是一個(gè)編程網(wǎng)絡(luò)框架,所以事件是按照它們?nèi)胝净虺稣緮?shù)據(jù)流的相關(guān)性進(jìn)行分類的。
?可能由入站數(shù)據(jù)或者相關(guān)狀態(tài)更改而觸發(fā)的事件包括:
連接已被激活或者連接失活
數(shù)據(jù)讀取
用戶事件
錯(cuò)誤事件
?出站事件是未來(lái)將會(huì)觸發(fā)的某個(gè)動(dòng)作的操作結(jié)果,包括:
打開(kāi)或者關(guān)閉到遠(yuǎn)程節(jié)點(diǎn)的連接
將數(shù)據(jù)寫(xiě)到或者沖刷到套接字
每個(gè)事件都可以被分發(fā)給ChannelHandler類中的某個(gè)用戶實(shí)現(xiàn)的方法。
?Netty提供了大量預(yù)定義的開(kāi)箱急用的ChannelHandler實(shí)現(xiàn),包括用于各種協(xié)議(如HTTP和SSL/TLS)的ChannelHandler。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69237.html
摘要:提供異步的事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開(kāi)發(fā)高性能高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序??偨Y(jié)我們完成了服務(wù)端的簡(jiǎn)單搭建,模擬了聊天會(huì)話場(chǎng)景。 之前一直在搞前端的東西,都快忘了自己是個(gè)java開(kāi)發(fā)。其實(shí)還有好多java方面的東西沒(méi)搞過(guò),突然了解到netty,覺(jué)得有必要學(xué)一學(xué)。 介紹 Netty是由JBOSS提供的一個(gè)java開(kāi)源框架。Netty提供異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框...
摘要:它使用了事件通知以確定在一組非阻塞套接字中有哪些已經(jīng)就緒能夠進(jìn)行相關(guān)的操作。目前,可以把看作是傳入入站或者傳出出站數(shù)據(jù)的載體。出站事件是未來(lái)將會(huì)觸發(fā)的某個(gè)動(dòng)作的操作結(jié)果,這些動(dòng)作包括打開(kāi)或者關(guān)閉到遠(yuǎn)程節(jié)點(diǎn)的連接將數(shù)據(jù)寫(xiě)到或者沖刷到套接字。 netty的概念 定義 Netty 是一款異步的事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架,支持快速地開(kāi)發(fā)可維護(hù)的高性能的面向協(xié)議的服務(wù)器和客戶端。我們可以很簡(jiǎn)單的...
摘要:豐富的緩存數(shù)據(jù)結(jié)構(gòu)使用它自己的緩存來(lái)表示字節(jié)序列而不是的。針對(duì)有一個(gè)定義良好的事件模型。有一些協(xié)議是多層的建立在其他低級(jí)協(xié)議基礎(chǔ)上。此外,甚至不是完全線程安全的。協(xié)議由標(biāo)準(zhǔn)化為。協(xié)議緩存整合是一個(gè)高效二進(jìn)制協(xié)議的快速實(shí)現(xiàn)。 Chapter 2、結(jié)構(gòu)概覽 這一節(jié)我們將確認(rèn)Netty提供的核心功能是什么,以及它們?cè)趺礃?gòu)成一個(gè)完整的網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)堆棧。 1、豐富的緩存數(shù)據(jù)結(jié)構(gòu) Netty使用它...
摘要:后端好書(shū)閱讀與推薦系列文章后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦續(xù)后端好書(shū)閱讀與推薦續(xù)二后端好書(shū)閱讀與推薦續(xù)三這里依然記錄一下每本書(shū)的亮點(diǎn)與自己讀書(shū)心得和體會(huì),分享并求拍磚。然后又請(qǐng)求封鎖,當(dāng)釋放了上的封鎖之后,系統(tǒng)又批準(zhǔn)了的請(qǐng)求一直等待。 后端好書(shū)閱讀與推薦系列文章:后端好書(shū)閱讀與推薦后端好書(shū)閱讀與推薦(續(xù))后端好書(shū)閱讀與推薦(續(xù)二)后端好書(shū)閱讀與推薦(續(xù)三) 這里依然記錄一下每本書(shū)的...
閱讀 2120·2023-04-26 00:50
閱讀 2490·2021-10-13 09:39
閱讀 2225·2021-09-22 15:34
閱讀 1619·2021-09-04 16:41
閱讀 1348·2019-08-30 15:55
閱讀 2441·2019-08-30 15:53
閱讀 1714·2019-08-30 15:52
閱讀 754·2019-08-29 16:19