Netty基本組件模型簡單說明

Netty的基本組件包括ChannelChannelHandlerChannelPipelineEventLoop。其中,Channel可以看做是一個連接(相當於一個Socket),在其上會有傳入和傳出的數據。Netty使用事件來通知狀態的改變或者操作的狀態,比如連接到遠程主機、對方發送過來數據等等,而ChannelHandler就是用來處理這些事件的組件,在ChannelHandler中實現相應的函數,這樣等到事件發生時Netty就會調用對應該事件的函數,而我們就是在這些函數裏面編寫程序的邏輯。實際上用於一個Channel上事件的不止是一個ChannelHandler,而是使用了一個由多個ChannelHandlerChannelPipeline來處理,類似於設計模式中的責任鏈模式。ChannelHandler可以分成ChannelInboundHandlerChannelOutboundHandler接口,分別用於處理流入和流出的數據,而不會影響到對應不是自己流向的數據。

EventLoop用於處理Netty的各種事件循環,一個EventLoop只會綁定到一個Thread上,而一個Channel始終也只會使用一個EventLoop來處理上面的事件,所以Channel是線程安全的,不用採取一些同步措施。在非阻塞傳輸(NIO和AIO)方式下,EventLoopGroup爲每個新創建的Channel分配一個EventLoop,不過一個EventLoop可能對應多個Channel(阻塞傳輸是一對一),所以對於所有在這個EventLoop上的Channel來說,它們的ThreadLocal都將是一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章