netty学习笔记

1.对比学习

ionionetty
数据载体直接从io流中读取Buffer Buffer
链接(io)模型java io模型channel channel
线程模型一个连接占用一个线程多个链接由一个线程进行处理
多个链接由一个线程进行处理
新连接处理方式监听有新请求,到达后占用一个线程处理数据请求,同步处理读写监听新请求和读取数据分离,异步读写数据

监听新请求和读取数据分离,异步读写数据
优点freehardbeautiful
缺点浪费性能难以上手,不好维护,有bug不告诉你
特性自己玩懒得说1.一个请求(channel)可以交给一个
pipeline 链路 进行流水线式的业务处理,流水线的每个节点都是一个
channelHandler ,
channelHandler 是用于做数据读写的具体代码,重写相应的方法即可,而且netty帮我们实现了很多开箱即用的handler,让我们可以轻松地进行,粘包拆包,编解码,心跳检测等等。2.在chanel中数据是封装成
Buffer 来进行传递的,Buffer就可以理解为一个很好用的包装,提供各种爽到爆炸的api

2.总结

1.Socket编程中的链接是各种inputstream ,netty中对应的是channnel,

2.Socket编程中数据是从各种inputstream 中直接读取的,netty中是封装成Buffer然后从buffer中进行读取的。buffer提供了各种api

3.netty为了让我们对一次请求的数据可以更优雅的进行各种加工,设计了
类似流水线 的pipeline链路让我们可以对一次请求进行多次加工处理。每次加工处理交给一个 channelHandler来处理。 channelHandler 对应流水线中的各个加工节点

4. channelHandler 中我们只需要重写接口中的相应方法,通过方法入参即可拿到我们想要的请求对象( channel )和数据对象(Buffer)