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