Netty的几个要点
来源:互联网 发布:天界翅膀进化数据 编辑:程序博客网 时间:2024/04/25 05:59
- Netty是一个传输层的框架,主要的功能就是两个:封装了NIO的操作,封装了CodeC接口,从而使得NIO的开发者只需要关注与业务功能本身的ChannelHandler。
- 不只是Netty,传输层主要解决的问题就是这两个,处理IO,处理CodeC
- CodeC主要处理的问题就是字节流的分帧(Frame),一般有以下几种
- 按结束符,比如http
- 定长
- 使用消息头消息体的方式,在消息头指定长度,比如TCP, Thrift
- Netty的前端实现了多线程的Reactor模式,可以指定Accept处理的线程池和IO读写的线程池,由Netty框架来管理事件的分发和线程池。
- Netty采用职责链ChannelPipeline来管理ChannelHandler. 这个职责链中的每个节点可以选择关注的事件去触发,节点的顺序很重要。Netty抽象了inbound和outbound事件的概念,由底层IO向用户层发出的事件称为inbound 事件,从pipeline 的HeadHandler向TailHandler传递事件。由用户层向底层IO发出的事件,比如write,是outbond事件,从TailHandler向HeadHandler传递,调用Unsafe 来完成网络操作。所以使用Netty时理解inbound 和 outbound 事件很重要。最新的netty-5.0取消了inbound / outbound Handler 接口,采用Facade模式设计ChannelHandler,包含了所有的inbound 和 outbound事件。采用Adapter 模式用ChannelHandlerAdapter空实现了ChannelHandler,具体的ChannelHandler只需要继承ChannelHandlerAdapter即可。
- XXXXEncoder是由用户向底层IO写时使用的,把业务数据编码成字节流,所以XXXEncoder覆盖了ChannelHandlerAdapter的Write 方法,响应outbound事件
- XXXXDecoder是由底层IO向用户层发出IO事件时使用的,把字节流编码成业务数据,或把字节流转化成ByteBuf,再由ByteBuf 转化成业务数据,响应inbound 事件
0 0
- Netty的几个要点
- Ant的几个要点
- UIScrollView的几个要点
- Ant的几个要点
- HashMap 的几个要点
- Netty的几个重要组件
- 获得风险投资的几个要点
- WEB爬虫的几个要点
- 产品推广的几个要点
- JPA 注解的几个要点
- 购买笔记本的几个要点
- JPA 注解的几个要点
- STM32F 使用的几个要点
- autocad的几个学习要点
- Builder模式的几个要点
- Bridge模式的几个要点
- UIScrollView的几个要点总结
- seo优化的几个要点
- 获取window服务路径
- 【工具】MQ常用命令
- 关于spring中HibernateTransactionManager和DataSourceTransactionManager
- [GEiv]第五章:个体集群 虚假的分配与释放
- 使用gcd_ wait来 处理gcd
- Netty的几个要点
- 花生壳内网穿透、nat123映射p2p穿透,都是如何穿透的
- MySQL函数
- 一个简单的键盘钩子程序
- 抱怨IT公司人才缺乏?留住现有人才方是正途 ...
- HttpWatch学习帮助文档
- STL algorithm算法is_heap和is_heap_until(25)
- Solve password autocomplete by browser issue(浏览器密码自动填充解决方案)
- struts中最核心的类和包有哪些?