1. Netty 是什么?
Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能 协议服务器和客户
端。Netty是基于nio的,它封装了jdk的nio,让我们使用起 来更加方法灵活。
2. Netty 特点是什么?
高并发:Netty 是一款基于 NIO(Nonblocking IO,非阻塞IO)开发的网络通 信框架,对比
于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。
传输快:Netty 的传输依赖于零拷贝特性,尽量减少不必要的内存拷贝,实现了 更高效率的传
输。
封装好:Netty 封装了 NIO 操作的很多细节,提供了易于使用调用接口。
3. Netty 的优势有哪些?
使用简单:封装了 NIO 的很多细节,使用更简单。
功能强大:预置了多种编解码功能,支持多种主流协议。
定制能力强:可以通过 ChannelHandler 对通信框架进行灵活地扩展。
性能高:通过与其他业界主流的 NIO 框架对比,Netty 的综合性能优。
稳定:Netty 修复了已经发现的所有 NIO 的 bug,让开发人员可以专注于业务 本身。
社区活跃:Netty 是活跃的开源项目,版本迭代周期短,bug 修复速度快。
4. Netty 的应用场景有哪些?
典型的应用有:阿里分布式服务框架 Dubbo,默认使用 Netty 作为基础通信组 件,还有
RocketMQ 也是使用 Netty 作为通讯的基础。
5. Netty 高性能表现在哪些方面?
IO 线程模型:同步非阻塞,用少的资源做更多的事。
内存零拷贝:尽量减少不必要的内存拷贝,实现了更高效率的传输。
内存池设计:申请的内存可以重用,主要指直接内存。内部实现是用一颗二叉查 找树管理内存
分配情况。
串形化处理读写:避免使用锁带来的性能开销。
高性能序列化协议:支持 protobuf 等高性能序列化协议。
6. BIO、NIO和AIO的区别?
BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进 行处理。线程开销
大。
伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。
NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上, 多路复用器轮询到
连接有I/O请求时才启动一个线程进行处理。
AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务 器应用去启动线程
进行处理,
BIO是面向流的,NIO是面向缓冲区的;BIO的各种流是阻塞的。而NIO是非阻 塞的;BIO的Stream
是单向的,而NIO的channel是双向的。
评论0