Netty

Reactor多线程模型

2018-04-08  本文已影响22人  小怪兽狂殴奥特曼

1 Reactor的组成


由图可以看到,Reactor的几个关键组成部分:

2 时序图

3 Reactor多线程模型

Reactor模型最常使用的场景就是网络服务器。
网络服务器的基本处理模型如下:建立连接->读取请求->解析请求->处理服务->编码结果->返回结果。
基于网络服务器的基本模型,Reactor衍生出了几种多线程模型。

3.1 单线程模型


特点:将网络服务器的所有步骤都在Reactor的主线程内处理。
优点:模型简单,编码容易。
缺点:性能不够高,如果主线程先在处理请求阶段,容易导致后续的请求无法继续响应。
适用场景:EventHandler业务逻辑简单,执行时间短,不需要访问数据库,不需要访问磁盘、不需要访问外部网元、不需要阻塞等待其它资源。

3.2 ThreadPool模型


特点:将服务器处理模型分为两个阶段:IO操作阶段和非IO操作阶段。IO操作阶段交给Dispatcher来做,非IO操作阶段采用线程池来处理
优点:单个句柄请求处理阻塞也不会影响其它句柄。
缺点:编程模型更加复杂,多线程切换增加开销。
适用场景:EventHandler处理时间不定,需要阻塞等待或者耗时很长。

3.3 主从Reactor模型


特点:将连接请求句柄和数据传输句柄分开处理,使用单独的Reactor来处理连接请求句柄,提高数据传送句柄的处理能力。
适用场景:高并发

上一篇 下一篇

猜你喜欢

热点阅读