Netty 编码解码

参考来源

  • Netty实践
  • Netty 4.x学习笔记 - Channel和Pipeline
  • 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注释图

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

你可能感兴趣的:(Netty 编码解码)