3万字加50张图,带你深度解析 Netty 架构与原理(下) - 掘金
netty 核心笔记:
NIO:
Selector: 多路复用,内部使用Set<SelectionKey>实现的监听N多个Channel
NIO零拷贝:FileChannel.transferTo()
netty:
核心组件: EventLoopGroup EventLoop Select channel channelHandle channelPipline
NioServerSocketChannel SocketChannel ServerBootstrap Bootstrap ChannelHandlerContext
一个NioEventLoopGroup下包含多个NioEventLoop
每个NioEventLoop中包含有一个Selector,一个taskQueue,一个delayedTaskQueue
每个NioEventLoop的Selector上可以注册监听多个AbstractNioChannel.ch
每个AbstractNioChannel只会绑定在唯一的NioEventLoop上
每个AbstractNioChannel都绑定有一个自己的DefaultChannelPipeline
心跳机制: IdleStateHandler
零拷贝:bytebuffer使用堆外内存(DirectMemory)进行socket
FileRegion.transferTo()
CompositeByteBuf 合并多个ByteBuf,只是把多个ByteBuf进行逻辑上的合并,实际上没有进行内存拷贝