Netty 编码解码

参考来源

需要搞明白的问题

  • 1.什么是inbound和outbound
    outbound:对于socket write操作,将会从Tail--》Head依次执行pipeline中的每个Encoder
    inbound:对于read操作,将会从Head--》Tail依次执行Decoder

  • 2.对pipeline添加ChannelHandler的时候应该注意什么?
    需要注意添加channelHandler的顺序

  • 3.理解Netty的"异步"
    NIO,即Non Blocking IO,非阻塞IO,在JAVA中NIO的核心就是Selector机制。简单而言,创建一个Socket Channel,并将其注册到一个Selector上(多路复用器),这个Selector将会“关注”Channel上发生的IO读写事件,并在事件发生(数据就绪)后执行相关的处理逻辑。对于阻塞IO,它需要在read()、write()操作上阻塞而直到数据操作完毕,但是NIO则不需要,只有当Selector检测到此Channel上有事件时才会触发调用read、write操作。
    但是NIO并不是严格意义上的“异步IO”(Asynchronous),最大的原因就是Selector本身是阻塞的!!即selector需要通过线程阻塞的方式(其select方法)获取底层通道的事件变更,然后获取SelectionKey列表;那么对于“异步IO”(概念同JDK 7的AIO)在整个操作链路上均不需要任何阻塞(完全基于OS的IO事件),依赖基于事件驱动的Handler做数据处理。目前Netty尚没有集成AIO的相关特性,即Netty本身为非阻塞IO框架

  • 4.关于inbound和oubound注释图

  • Paste_Image.png
  • 很多解释上喜欢用这张图,让人费解,搞不清楚那边是头那边是尾

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容