Netty线程模型 待我称王封你为后i 2023-01-23 07:53 1阅读 0赞 # Netty线程模型 # ### 文章目录 ### * Netty线程模型 * * 一、Reactor模型 * * 1. 单Reactor单线程 * 2. 单Reactor多线程 * 3. 主从Reactor多线程 * 二、Netty线程模型 ## 一、Reactor模型 ## Reactor模式,通过一个或多个输入同时传递给服务处理器的模式,服务器端程序处理传入的多个请求,并将它们同步分派到相应的处理线程, 因此Reactor模式也叫Dispatcher模式 。Reactor模式使用IO复用监听事件,收到事件后,分发给某个线程(进程),这点就是网络服务器高并发处理的关键。 ### 1. 单Reactor单线程 ### ![image-20210713165010154][] **存在问题:** 1. 性能问题:只有一个线程,无法完全发挥多核CPU的性能。Handler在处理某个连接上的业务时,整个进程无法处理其他连接事件,很容易导致性能瓶颈。 2. 可靠性问题:线程意外终止或者进入死循环,会导致整个系统通信模块不可用,不能接收和处理外部消息,造成节点故障。 ### 2. 单Reactor多线程 ### ![image-20210713165222080][] 如果是处理请求事件,分发给给Handler之后真正的执行者是Worker线程池中的线程。 **存在问题:** 多线程数据共享和访问比较复杂, reactor处理所有事件的监听和响应。单线程运行的情况下,在高并发场景容易出现性能瓶颈。 ### 3. 主从Reactor多线程 ### ![image-20210713165549799][] * Reactor主线程负责接收所有的请求,并且处理Accept事件 * Reactor子线程负责业务的处理,派发给不同的Handler进行处理 * 分发给给Handler之后真正的执行者是Worker线程池中的线程 **优缺点:** * 编程复杂度较高(缺点) * 这种模式也被叫做服务器的1+M+N 线程模式,即使用该模式开发的服务器包含一个连接建立线程 + M个IO线程 + N个业务处理线程。 * 连接建立线程可以有多个,1只是表示相对较少 ## 二、Netty线程模型 ## Netty的线程模型主要基于主从Reactor多线程模式: ![image-20210713170220449][] Boss线程主要监听accept事件,连接建立之后的业务处理由Worker线程处理(Handler)。 **更进一步:** ![image-20210713211514868][] [image-20210713165010154]: /images/20221004/4bb210a95db54be6b49f5a9266618b2a.png [image-20210713165222080]: /images/20221004/9a947003e38941e4a7babdd956b3c1cc.png [image-20210713165549799]: /images/20221004/87ed3c3241174e4899e4feb117af01e6.png [image-20210713170220449]: /images/20221004/98174292e6d64d73a1908921e0bd104c.png [image-20210713211514868]: /images/20221004/1fe29570852a4706b99b37338df7e656.png
还没有评论,来说两句吧...