| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 网络I/o编程模型11 netty常用的3种线程模型 -> 正文阅读 |
|
[系统运维]网络I/o编程模型11 netty常用的3种线程模型 |
一 常用的线程模型1.1 传统阻塞I/O服务模型1.特点:采用阻塞IO模式获取输入的数据;每个连接都需要独立的线程完成数据的输入,业务处理数据返回。 2.问题:当并发数很大时候,就会常见大量的线程,占用很大系统资源;连接创建后,如果当前菜鸟仓暂时没有数据可读,该线程会阻塞在read操作,造成线程资源浪费。 1.2 Reactor模式针对传统I/O线程模型的两个问题,提出了Reactor模式,分发者模式。基于以下两种思想的设计理念。 1.基于I/O复用模型:多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象等待,无需阻塞等待所有连接。当某个连接有新数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理。 2.基于线程池复用线程资源:不必再为每个连接创建线程,将连接完成后的业务处理任务,分配给线程信息处理,一个线程可以处理多个连接业务。 ?特点: 1.Reactor模式:通过一个或者多个输入,同时传递给服务处理器的模式。(基于事件驱动) 2.服务器端程序处理传入的多个请求,并将他们同步分派到相应的处理线程,因此Reactor模式也叫Dispatcher模式 3.Recotr模式采用IO复用监听事件,收到事件后,分发给某个线程(进程),这点是网络服务器高并发处理的关键。 核心组成部分 1.reactor: reactor在一个单独的线程中运行,负责监听和分发事件,分发给适当的处理程序来对IO事件做出响应。比如 电话客服人员接到电话,然后将任务诉求分派给相应的工作人员。 2.handlers: 处理具体的I/O业务逻辑;类似公司具体干活的工作人员。 二 netty的Reactor模型2.1 Reactor模型的单线程1.流程 1.select 可以实现应用程序通过一个额阻塞对象监听多路连接请求。 2.缺点 2.2?Reactor模型的多线程1.优点: 1.通过select监控客户端请求事件,收到事件后,通过dispatch进行分发。 ?优点:可以充分的利用多核cpu的处理能力。 2.3? 主从Reactor模型的多线程模式1.流程 #优点 2.4? 总结1.单Reactor单线程模型:前台接待员和服务员是同一个人,全程为顾客服务。 三? netty使用的线程模型netty主要基于主从Reactors多线程模型做了一定的改进,其中主从Reactors多线程模型有多个Reactor。 1.BossGroup 专门负责接收客户端的连接,workerGroup专门负责网络的读写。BossGroup线程维护selector,只关注Accept ?详细流程: 1.netty抽象出两组线程池BossGroup 专门负责接收客户端的连接,workerGroup专门负责网络的读写。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 13:25:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |