Netty应用笔记

Netty是一个优秀的网络并发式处理软件框架。

主要概念:

  • 消息循环:并发处理核心,响应请求的模式,可使用线程池,消息队列等方式;
  • 通道(Channel):每一次请求将会创建一个通道;
  • 句柄(Handler):数据处理的最小单位,分为请求句柄(Inbound)和响应句柄(Outbound),一个通道可以通过多个句柄,分步对数据进行处理,如:先解码,数据处理,加密等操作;

细节问题:

  • SimpleChannelInboundHandler 在接收到数据后会自动release掉数据占用的Bytebuffer资源(自动调用Bytebuffer.release())。一般用于客户端
  • ChannelInboundHandlerAdapter 不会。一般用于服务端。
  • 修改请求Header将分导致请求重新处理,如增加HTTP头属性

Handler组织和数据传递源码:io.netty.channel.AbstractChannelHandlerContext

时间: 2024-10-13 03:14:42

Netty应用笔记的相关文章

(二)Netty学习笔记之服务端启动

本文将不会对netty中每个点分类讲解,而是一个服务端启动的代码走读,在这个过程中再去了解和学习,这也是博主自己的学习历程.下面开始正文~~~~ 众所周知,在写netty服务端应用的时候一般会有这样的启动代码: (代码一) 1 EventLoopGroup bossGroup = new NioEventLoopGroup(1); 2 EventLoopGroup workerGroup = new NioEventLoopGroup(); 3 try { 4 ServerBootstrap b

netty开发笔记

对netty 和 nio的认识尚浅,分享最近所学到的一些知识,不对的地方还望指正. Netty介绍 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. netty 官网如是说,大概意思是netty 是一个异步的事件驱动的网络应用框架,可以快速开发可维

Netty学习笔记之一(Netty解析简单的Http Post Json 请求)

一,HTTP解码器可能会将一个HTTP请求解析成多个消息对象. ch.pipeline().addLast(new HttpServerCodec()); ch.pipeline().addLast(new ParseRequestHandler()); 经过HttpServerCodec解码之后,一个HTTP请求会导致:ParseRequestHandler的 channelRead()方法调用多次(测试时 "received message"输出了两次) @Override pub

Netty学习笔记(一)

Netty是一个高性能的NIO框架,相比与IO编程需要编写大量的代码,Netty的使用更加简单.Netty的主要功能是负责网络传输,dubbo,rocket MQ以及elasticsearch中都采用Netty做为网络传输框架. Netty的特性(以下特性来自百度,但是我感觉对于开发者来时主要还是用起来比较简单......) 1.设计 针对多种传输类型的统一接口 - 阻塞和非阻塞 简单但更强大的线程模型 真正的无连接的数据报套接字支持 链接逻辑支持复用 2.易用性 大量的 Javadoc 和 代

netty学习笔记

Server: bootstrap.option(ChannelOption.SO_BACKLOG,100) private final ByteBuf firstMessage; firstMessage = Unpooled.buffer(EchoClient.SIZE); for(int i = 0; i<sendNumber; i++){ firstMessage.writeByte((byte)i); } Server: // 以("\n")为结尾分割的 解码器 pip

netty学习资源收集

Netty学习笔记 Netty+In+Action中文版.pdf

Netty5入门学习笔记004-使用Netty传输POJO对象(上)

使用Netty传输POJO对象,重点在于对象的序列化,序列化后的对象可以通过TCP流进行网络传输,结合Netty提供的对象编解码器,可以做到远程传输对象. 下面我们来看一个例子:模拟订票 首先Java序列化的POJO对象需要实现java.io.Serializable接口. 火车车次和余票量POJO: package bookticket; import java.io.Serializable; /**  * 火车pojo对象  * @author xwalker  */ public cla

Netty笔记:使用WebSocket协议开发聊天系统

转载请注明出处:http://blog.csdn.net/a906998248/article/details/52839425 前言,之前一直围绕着Http协议来开发项目,最近由于参与一个类似竞拍项目的开发,有这样一个场景,多个客户端竞拍一个商品,当一个客户端加价后,其它关注这个商品的客户端需要立即知道该商品的最新价格.       这里有个问题,Http协议是基于请求/响应的,客户端发送请求,然后服务端响应返回,客户端是主动方,服务端被动的接收客户端的请求来响应,无法解决上述场景中服务端主动

Netty笔记——技术点汇总

目录 · Linux网络IO模型 · 文件描述符 · 阻塞IO模型 · 非阻塞IO模型 · IO复用模型 · 信号驱动IO模型 · 异步IO模型 · BIO编程 · 伪异步IO编程 · NIO编程 · Buffer和Channel · 深入Buffer · Selector · AIO编程 · 四种IO编程对比及选择Netty的原因 · Netty入门 · 开发与部署 · Hello World · 粘包/拆包问题 · 问题及其解决 · LineBasedFrameDecoder · Delim