名词
netty的channel
a component which is capable of I/O operations such as read, write, connect, and bind.
这就是说该channel是一个具有IO操作(读,写,连接,绑定)能力的组件
一个channel的创建会对应把 pipeline对象创建出来,和unsafe对象(IO操作实际干活逻辑)创建出来
1 | Channel 实现 AttributeMap和 Comparable<Channel> |
netty的ChannelMetadata
Represents the properties of a {@link Channel} implementation.
代表一个channel子类实现 需要的属性(一些元数据信息)
1 | public ChannelMetadata(boolean hasDisconnect) { |
netty的ChannelConfig
A set of configuration properties of a {@link Channel}.
就是channel 的 配置属性 的集合,作用就是可以通过它来定制化你的Channel
1 | ChannelConfig |
netty的ChannelFuture
The result of an asynchronous {@link Channel} I/O operation.
异步{@link Channel}I/O操作的结果。
1 | java.util.concurrent.Future<V> |
netty的ChannelPromise
具有可写能力的特殊{@link ChannelFuture}。
1 | Promise<V> 继承 Future<V> |
netty的ChannelPipeline
A list of {@link ChannelHandler}s which handles or intercepts inbound events and outbound operations of a {@link Channel}.
是一个处理或拦截{@link Channel}的入站事件(inbound events)和出站操作(outbound operations)的{@link ChannellHandler}的列表。
(其实是一个 ChannelHandlerContext的链表,因为ChannelHandlerContext有一个handler()方法可以获取一个ChannellHandler,所以也就是 ChannellHandler的链表
当 一个ChannellHandler对象再添加到pipeline中时,会产生一个带有ChannellHandler对象引用的ChannelHandlerContext对象,加到pipeline的链表中
pipeline中区分ChannellHandler是否已经添加通过指定的name来区分的,不指定的话会默认生成一个name
)
1 | ChannelPipeline 继承 Iterable<Entry<String, ChannelHandler>> |
netty的ChannelHandlerContext
使{@link ChannelHandler}能够与其{@link ChannelPipeline}和其他 ChannelHandler交互。 ChannelHandler 可以通知{@link ChannelPipeline}中的下一个{@link ChannelHandler},动态修改它所属的{@link channelpipeline}。
1 | ChannelHandlerContext 继承 AttributeMap |
netty的ChannelHandler
Handles or intercepts a {@link ChannelInboundInvoker} or {@link ChannelOutboundInvoker} operation, and forwards it to the next handler in a {@link ChannelPipeline}.
处理或拦截 {@link ChannelInboundInvoker}或{@link ChannelOutboundInvoker}操作,并将其转发到{@link ChannelPipeline}中的下一个处理者(handler)。
1 | ChannelHandler |
netty的EventExecutorGroup
{@link EventExecutorGroup}负责提供 多个{@link EventExecutor}以通过其{@link #next()}方法使用。除此之外,它还负责处理它们的生命周期,并允许以全局方式关闭它们。
1 | EventExecutorGroup 继承 ScheduledExecutorService, Iterable<EventExecutor> |
内存管理模块名词
netty的ReferenceCounted
netty有自己的一套直接内存管理技术
需要显式释放的引用计数对象。
1 |
|
netty的ByteBuf
//无论是堆内存的还是 直接内存的缓存区,无非两种形式, 堆内用数组, 直接内存 就在对堆内存 中 申请一个连续的内存地址空间, 说白了还是数组(数组就是连续的内存空间)
此时的读和写,都是使用 内存地址指针进行操作,
1 获取申请的连续地址空间的首地址
2 获取偏移量
3 相加就是对应要 修改或者读取的内存地址( 指针)
4 修改或者读取 内存地址 所对应这一段空间(指针所指的内容)
public native byte getByte(Object o, long offset);
public native void putByte(Object o, long offset, byte x);
1 | ByteBuf 实现 ReferenceCounted 和 Comparable<ByteBuf> |
netty的ByteBufAllocator
负责分配buffer。这个接口的实现应该是线程安全的。
1 |
|
netty的UnpooledByteBufAllocator
1 | UnpooledByteBufAllocator |
netty的PooledByteBufAllocator
1 | PooledByteBufAllocator |
netty的PoolArenaMetric
1 |
|
netty的PoolArena
1 |
|
netty的 PoolChunk
1 | PoolChunkMetric |
netty的PoolChunkListMetric
1 |
|
内存分配算法
有点难,等有时间 去 详细看 buddy 伙伴内存分配算法
- 本文作者: 忘忧症
- 本文链接: https://NepenthesZGW.github.io/2020/06/25/framework/Netty/netty重要名词/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!