Netty In Action 读书笔记
Netty是Java网络编程的经典框架.其统一了我们在进行BIO,NIO和AIO,以及TCP和UDP编程之间的差异.它使我们的开发精力主要放在业务协议实现,业务逻辑,序列化反序列化上,极大的减轻了在连接建立,读写模型,线程处理等方面的考虑
Netty是Java的基础框架,其使用非常广泛. 比如淘宝Dubbo SOA框架, RocketMQ 消息框架等底层都是使用Netty来实现. 顺便说一句, 我们公司自己开发的SOA框架Hydra底层也是使用Netty来实现的.
Netty In Action是介绍Netty的经典书籍.
通过此书阅读,可以了解:
(1) ByteBuf相比于JDK NIO提供的ByteBuffer的有点所在
(2) Bootstrap,ServerBootstrap启动Netty流程
(3) Channel,ChannelPipeline,ChannelHandler(Inbound,Outbound),ChannelContext之间的关系
(4) 如何使用Encoder,Decoder进行序列化和反序列化
(5) Netty4的线程模型
......
源码
https://github.com/18965050/netty-in-action.git
读书笔记
https://github.com/18965050/netty-in-action/wiki
备注
需要注意的是Netty3和Netty4的线程模型不一致. Netty3中, InBound事件均在IO线程中处理, 而OutBound事件在业务线程中执行, 而Netty4中统一了线程模型, InBound和OutBound线程均在EventLoop线程(IO线程)中执行. Netty3的线程模型 比较高效,因为可以使用线程池并行执行, 但由于InBound和OutBound模型不一致, 容易导致线程安全性问题或内存泄露 问题的发生. 而Netty4虽然是串行执行EventLoop线程的, 但ChannelPipeline在加载ChannelHandler的时候可指定业务EventExecutorGroup, 降低了串行执行ChannelHandler对性能的影响.