网络面试题你只要知道这12题就够了( 三 )


阻塞和非阻塞在于第一个,发起IO请求,对于NIO来说通过channel发起IO操作请求后,其实就返回了,所以是非阻塞 。
 
十二、谈一下你对Reactor模型的理解?Reactor模型包含两个组件:
Reactor:负责查询、响应IO事件,当检测到IO事件时,分发给Handlers处理 。
Handler:与IO事件绑定,负责IO事件的处理 。
它包含几种实现方式:
单线程Reactor
这个模式reactor和handler在一个线程中,如果某个handler阻塞的话,会导致其他所有的handler无法执行,而且无法充分利用多核的性能 。

网络面试题你只要知道这12题就够了

文章插图
 
单Reactor多线程
由于decode、compute、encode的操作并非IO的操作,多线程Reactor的思路就是充分发挥多核的特性,同时把非IO的操作剥离开 。
但是,单个Reactor承担了所有的事件监听、响应工作,如果连接过多,还是可能存在性能问题 。
网络面试题你只要知道这12题就够了

文章插图
 
多Reactor多线程
为了解决单Reactor的性能问题,就产生了多Reactor的模式 。其中mainReactor建立连接,多个subReactor则负责数据读写 。
网络面试题你只要知道这12题就够了

文章插图
 




推荐阅读