netty相对于传统的java序列化+BIO的通信框架性能提高了8倍,主要是对NIO的封装能够支持10w的TPS
netty是什么:
1.netty是异步事件驱动框架,用于快速开发高性能服务端和客户端
2.封装了JDK底层的NIO和BIO模型,提供了高可用的api
3.自带编码解码器解决拆包粘包问题,用户只用关心业务逻辑
4.精心设计的reactor线程模型,支持高并发海量连接
5.自带协议栈,无需用户关心
netty实现流程:
内存池 :
高效的reactor线程模型 :
1) Reactor单线程模型: 所有IO操作都在同一个NIO线程上完成,NIO线程的职责如下 :
a.作为NIO服务端,接收客户端TCP连接,
b.作为NIO客户端,向服务端发起TCP链接
c. 读取通信端的请求或应答消息
2) Reactor多线程模型 :
3) 主从Reactor多线程模型
无锁化的串行设计理念:
在大多数场景下,并行多线程处理可以提升系统的并发性能,但是如果对于共享资源的并发访问处理不当,会带来严重的锁竞争,这最终会导致性能下降,为尽可能的避免锁竞争带来的性能损耗,可以通过串行化设计,即消息的处理尽可能在同一线程内完成,期间不进行线程切换,这样就避免了多线程竞争和锁切换,