Netty中有哪些核心組件?
最近又有粉絲問(wèn)我這樣一個(gè)問(wèn)題,說(shuō)Netty中最核心的組件有哪些?它們都起什么作用?今天,給大家詳細(xì)聊一聊
1、組件分層
我把Netty的核心組件分為三層,分別是網(wǎng)絡(luò)通信層、事件調(diào)度層和服務(wù)編排層。
2、網(wǎng)絡(luò)通信層
在網(wǎng)絡(luò)通信層有三個(gè)核心組件:Bootstrap、ServerBootStrap、Channel。
Bootstrap:負(fù)責(zé)客戶端啟動(dòng)并用來(lái)鏈接遠(yuǎn)程N(yùn)etty Server;
ServerBootStrap:負(fù)責(zé)服務(wù)端監(jiān)聽(tīng),用來(lái)監(jiān)聽(tīng)指定端口;
Channel:相當(dāng)于完成網(wǎng)絡(luò)通信的載體。
3、事件調(diào)度層
事件調(diào)度器有兩個(gè)核心組件:EventLoopGroup與EventLoop。
EventLoopGroup:本質(zhì)上是一個(gè)線程池,主要負(fù)責(zé)接收I/O請(qǐng)求,并分配線程執(zhí)行處理請(qǐng)求。
EventLoop:相當(dāng)于線程池中的線程。
4、服務(wù)編排層
在服務(wù)編排層有三個(gè)核心組件ChannelPipeline、ChannelHandler、ChannelHandlerContext。
ChannelPipeline:負(fù)責(zé)將多個(gè)ChannelHandler鏈接在一起。
ChannelHandler:針對(duì)I/O的數(shù)據(jù)處理器,數(shù)據(jù)接收后,通過(guò)指定的Handler進(jìn)行處理。
ChannelHandlerContext:用來(lái)保存ChannelHandler的上下文信息。