博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Netty笔记
阅读量:7211 次
发布时间:2019-06-29

本文共 1399 字,大约阅读时间需要 4 分钟。

:netty使用多个线程accept UDP。

 

channel:socket的升级版,对应一个连接

EventLoopGroup:netty线程池

EventLoop:netty的线程,EventLoop对应很多个channel,一个channel只能对应一个EventLoop。UDP不是面向连接的,是面向报文的,所以一个端口就是一个NioDatagramChannel,只能对应一个EventLoop。所以默认情况下,只会有一个线程来处理UDP的accept,除非使用EpollEventLoopGroup(SO_REUSEPORT),本质上是多个线程监听同一个端口,通过OS做负载均衡。

NioEventLoop 中维护了一个线程和任务队列,支持异步提交执行任务。

 

Bootstrap 是客户端程序的启动引导类,UDP只能用Bootstrap。

ServerBootstrap 是服务端启动引导类,TCP server,定义分别指定boss和worker EventLoopGroup:netty。

 

ByteBuf:

  pool和unpool:是否池话管理的内存

  heap和direct:堆内存还是堆外内存

  safe和unsafe:是否允许使用堆外内存,直接读写堆外内存是不安全的,可能出现OS层面错误导致jvm core dump。-Dio.netty.noUnsafe=true使用堆内存。

相比于C语言的谁申请谁释放,netty则是谁最后使用谁释放。

 

writeAndFlush():

  执行writeAndFlush,会把数据送到outHandler链。

 

Future 和 ChannelFuture:

  提供了另一种在操作完成时通知应用程序的方式。这个对象可以看作是一个异步操作的结果的占位符;它将在未来的某个时刻完成,并提供对其结果的访问。

ChannelPromise:

  是ChannelFuture的扩展,允许设置I/O操作的结果,使ChannelFutureListener可以执行相关操作

 

Selector:

  Netty 基于 Selector 对象实现 I/O 多路复用,通过 Selector 一个线程可以监听多个连接的 Channel 事件。

 

【ChannelHandler】:

  ChannelHandler 是一个接口,处理 I/O 事件或拦截 I/O 操作,并将其转发到其 ChannelPipeline(业务处理链)中的下一个处理程序。

  ChannelHandler 本身并没有提供很多方法,因为这个接口有许多的方法需要实现,方便使用期间,可以继承它的子类:

    ChannelInboundHandler 用于处理入站 I/O 事件。

    ChannelOutboundHandler 用于处理出站 I/O 操作。

  或者使用以下适配器类:

    ChannelInboundHandlerAdapter 用于处理入站 I/O 事件。

    ChannelOutboundHandlerAdapter 用于处理出站 I/O 操作。
    ChannelDuplexHandler 用于处理入站和出站事件。

 

转载于:https://www.cnblogs.com/549294286/p/10397611.html

你可能感兴趣的文章
javascript浮点数学习总结之0.1+0.2
查看>>
php中钩子(hook)的应用示例demo
查看>>
spring cloud微服务分布式云架构-config配置自动刷新
查看>>
gitlab详细安装过程,错误解决方案
查看>>
为应用程序池**提供服务的进程意外终止。进程ID是**。进程退出代码是'0x80'
查看>>
ubuntu 10.04 花屏 启动缓慢 处理办法
查看>>
rsync命令详解
查看>>
MySQL备份与恢复————用LVM快照恢复
查看>>
pig---用户自定义函数(UDF)
查看>>
Exchange Server 2013多域名证书申请
查看>>
Android入门篇二:使用意图在Activity之间传递数据
查看>>
msmtp在RHEL6.5下的安装
查看>>
Windows server 2012 部署活动目录 AD
查看>>
Create Mview step by step
查看>>
nginx 403 Forbidden
查看>>
CentOS 6.4 64位系统U盘安装
查看>>
控制抽象之简化客户代码
查看>>
iptables命令结构之目标
查看>>
mysql 主从配置参数
查看>>
draggable columns vs copy column name in phpMyAdmin
查看>>