底層原理源碼是開發者進階架構師必經之路,今天來看?.NETty的核心構成塊都是什么。

1、Channel
在JAVA NIO就有這個,其實就是java NIO的基本構造。他代表到一個實體(比如一個硬件,一個文件等)
目前可以把它看作是傳入和傳出數據的載體。因此它可以打開或者關閉,連接或者斷開
2、Callback(回調)
可以從名稱中來進行理解,回調就是一個方法,一個指向已經被提供給另一個方法的引用,比如在一個操作完成后需要通知相關信息常用方式之一
Netty在內部使用了回調來處理事件;當一個回調被觸發時,相關的事件被interface-ChannnelHandler的實現處理。
3、Future
該類提供了進入異步任務時,可以通過該類將在未來的某個時刻完成的任務,并提供對其結果的訪問
JDK中預置了該類interface java.util.concurrent.Future,但是所提供的實現,只允許手動檢查對應操作是否完成,或者一直阻塞直到異步任務結束獲取到結果,這么索呢?就是非常繁瑣,所以Netty提供了對它的實現ChannelFuture,用于在執行異步操作的時候使用ChannelFuture提供了幾個額外的方法,這些方法可以使我們能夠注冊多個ChannelFutureListener實例,監聽器回調方法為:operationComplete(),將會在對應的操作完成時被調用,然后監聽器可以判斷該操作是否完成還是出錯了,如果出錯了還可以檢索產生的Throwable,簡單來說:由ChannelFureListener提供的通知機制消除了手動檢查對應的操作是否完成的必要,每個Netty的傳出都返回一個ChannelFuture,反之可得,傳入都不會阻塞,證實Netty是完全基于異步和事件驅動。






