面试官问Netty

视频地址:

 

1.介绍一下自己对 Netty 的认识吧
2.那你在说说为什么要用 Netty ?
3.那你在通俗地说一下 Netty 可以做什么事情?
4.Netty 核心组件了解吗?分别有什么作用?
5.在说说Netty 有几种线程模型吧?
6.你说一下对于这三种线程Reactor模型的理解?

 

一、Netty优点?
1. 零拷贝机制
2. 高性能无锁队列
3. 内存池

4. 支持多种通信协议, http, websocket

 

二、为什么要用netty?

1. 统一的API, 支持多种传输协议, 阻塞,非阻塞, epoll, poll

2. 很少的代码实现各种模型(单线程单Reactor模型, 多线程单Reactor模型, 多线程单多Reactor模型)

3. NIO有更高的吞吐量, 更低的延迟, 更低的资源消耗, 更小的内存复制

4. Dubbo, Zookeeper, Rocketmq, kafka, springcloud gateway

 

三、可以利用Netty做什么事情?

1. 传统的BIO阻塞, 用NIO有更高的吞吐量, NIO上用的多路复用

2. NIO使用起来比较复杂, netty是NIO api,更容易使用

 

 

四、Netty核心组件?

1. 网络通信层:
bootstrap: 负责客户端启动,并去连接远程的netty server
serverBootstrap: 负责服务端监听, 用来监听指定的端口
channel: 是负责网络通信的一个载体
2. 事件调度层
EventLoopGroup: 本质上是线程池, 负责接受IO请求, 并分配线程去处理请求
EventLoop: 具体的线程
3. 服务编排层
ChannelPipline: 负责处理多个ChannelHandler, 把多个handler形成链
ChannelHandler: 针对IO数据的处理器
ChannelHandlerContext: 保存ChannelHandler上下文信息


五、Netty有哪几种线程模型?
单线程单Reactor模型:
多线程单Reactor模型:
多线程多Reactor模型(也叫主从多线程Reactor模型):

模型组件?
1. reactor? 负责将IO事件分派给指定的handler
2. Acceptor? 负责处理客户端的连接请求
3. Handlers?去执行我们的业务逻辑的读写操作

 解决【单线程单Reactor模型】中,handler阻塞的问题,引入了【多线程单Reactor模型】

单个Reactor有个性能瓶颈, 导致整个吞吐量收到影响, 先出

 

上面subReactor有多个

 

posted @ 2024-09-04 18:35  chenxiangxiang  阅读(48)  评论(0编辑  收藏  举报