如何深刻理解Reactor和Proactor? - 知乎
1. 什么是Netty?
Netty是一个基于Java NIO (Non-blocking I/O)的网络通信框架,它提供了高性能、可扩展性和可靠性的网络编程解决方案,是一个广泛应用于分布式系统的网络通信库。
2. Netty有哪些核心组件?
Netty由三层结构构成:
- 网络通信层:由有三个组件:Bootstrap、ServerBootstrap、Channel。
- Bootstrap负责客户端启动,连接指定服务器
- ServerBootstrap负责服务器启动,监听指定端口
- Channel是网络通信的载体
- 事件调度层:有EventLoopGroup、EventLoop
- EventLoopGroup本质上是一个线程池,主要是负责接受IO请求,分配线程处理请求。
- EventLoop是具体的一个线程。
- 服务编排层:ChannelPipline、ChannelHandler、ChannelHandlerContext
- ChannelPipline负责将多个ChannelHandler组成一个链,可以看成一个流水线
- ChannelHandler是对数据进行处理,可以看作成一道道工序。
- ChannelHandlerContext用来保存ChannelHandler的上下文信息。
3. Netty有几种线程模型?
一共三种Reactor模型
4. Netty 的优势有哪些?
- 使用简单:封装了 NIO 的很多细节,使用更简单。
- 功能强大:预置了多种编解码功能,支持多种主流协议。
- 定制能力强:可以通过 ChannelHandler 对通信框架进行灵活地扩展。
- 性能高:通过与其他业界主流的 NIO 框架对比,Netty 的综合性能最优。
5.Netty 高性能表现在哪些方面?
- IO 线程模型:同步非阻塞,用最少的资源做更多的事。