Netty 4.x学习笔记——线程模型

Posted 饺子陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netty 4.x学习笔记——线程模型相关的知识,希望对你有一定的参考价值。

目前存在的线程模型


  • 传统阻塞 I/O服务模型(阻塞式IO)

  • Reactor模式(反应器模式)



根据Reactor的数量和处理资源池线程的数量不同,有3种典型的实现

  • 单Reactor单线程

  • 单Reactor多线程

  • 主从Reactor多线程


   

Netty线程模式


主要基于主从Reactor多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor



传统阻塞 I/O服务模型


特点:

  1. 采用阻塞IO模式获取输入的数据

  2. 每个连接都需要独立的线程完成数据的输入,业务处理,数据返回

问题分析:

  • 当并发数很大,就会创建大量的线程,占用很大系统资源

  • 连接创建后,如果当前线程暂时没有数据可读,该线程会阻塞在read操作,造成线程资源的浪费   



Reactor模式


针对传统阻塞I/O服务模型的2个缺点,解决方案:

  1. 基于I/O复用模型:多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象等待,无需阻塞等待所有连接。当某个连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理。

  2. 基于线程池复用线程资源:不比比再为每个连接创建线程,将连接完成后的业务处理任务分配给线程进行处理,一个线程可以处理多个连接的业务。

针对 1 Reactor对应的叫法:反应器模式/分发者模式/通知者模式

以上是关于Netty 4.x学习笔记——线程模型的主要内容,如果未能解决你的问题,请参考以下文章

Netty学习2(学习笔记)

浅析即时通讯开发框架Netty 4.x线程模型

浅析即时通讯开发框架Netty 4.x线程模型

Netty学习笔记四:Echo服务和Netty项目的搭建

操作系统学习笔记----进程/线程模型----Coursera课程笔记

Netty编解码开发+多协议开发和应用+源码+高级特性笔记免费送