01 -- Netty概述

Netty是什麼?

異步事件驅動的網絡應用框架,可以快速開發一個可維護的高性能的服務端和客戶端。

都是誰在用Netty?

Dubbo、ZK、RocketMQ、ES、Spring5(對於Http協議的實現)、Spak等大型開源項目使用Netty作爲底層通訊的實現。

Netty中的核心概念是什麼?

1、Channel

管道,是對Socket的封裝。包含一組API,簡化了直接與Socket進行操作複雜性。

通道:Channel   【https://www.cnblogs.com/myitnews/p/12213637.html

通道初始化器:ChannelInitializer   【https://www.cnblogs.com/myitnews/p/12213602.html

通道配置項:ChannelOption   【https://www.cnblogs.com/myitnews/p/12213098.html

2、EventLoopGroup

一個EventLoop池,包含很多EventLoop。

Netty爲每一個Channel分配了一個EventLoop,用於處理用戶連接請求、對用戶請求的處理等所有事件。EventLoop本身只是一個線程驅動,在其生命週期內只會綁定一個線程,讓該線程處理一個Channel的所有IO 事件。

一個Channel一單與一個EventLoop綁定,在整個生命週期內是不可以改變的。一個Channel只能綁定一個EventLoop,但一個EventLoop可以綁定多個Chanel,即EventLoop與Channel爲 1:N 關係。而一個EventLoop與線程是 1:1 關係。

線程組:NioEventLoopGroup  【 https://www.cnblogs.com/myitnews/p/12212796.html

3、ServerBootStrap

用於配置整個Netty代碼,將各個組件關聯起來。服務端使用的是ServerBootStrap,而客戶端使用的是BootStrap。

啓動配置類:Bootstrap 和 ServerBootstrap   【https://www.cnblogs.com/myitnews/p/12212807.html

4、ChannelHandler 和 ChannelPipeline

ChannelHandler 是對Channel中數據的處理器,這些處理器可以是系統本身定義好的編解碼器,也可以是用戶自定義的。這些處理器會被統一添加到ChannelPipeline對象中,然後按照添加順序對Channel中的數據進行依次處理。

通道處理器:ChannelHandler   【https://www.cnblogs.com/myitnews/p/12213568.html

通道管道線:ChannelPipeline  【https://www.cnblogs.com/myitnews/p/12213046.html

編碼器(Encoder)和 解碼器(Decoder)   【https://www.cnblogs.com/myitnews/p/12213691.html

6、ChannelFuture

Channel中所有的I/O操作都是異步的,即操作不會立即得到返回消息。所以Netty中定義了一個ChannelFuture對象作爲這個異步操作的代言人,表示異步操作本身。如果想獲取改異步操作的返回值,可以通過該異步操作的對象的addListener()方法做爲該異步操作添加監聽器。爲其註冊回調:當結果出來後馬上調用執行。

Netty的異步編程模型都是建立在Future與回調概念之上的。

執行結果:Future 和 ChannelFuture   【https://www.cnblogs.com/myitnews/p/12213655.html

 

Netty執行流程:

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