首页 > Web开发 > 详细

netty 详解

时间:2020-05-03 00:05:06      阅读:72      评论:0      收藏:0      [点我收藏+]

参考:

  1)netty 官网:https://netty.io/

  2)《跟闪电侠学Netty》开篇:Netty是什么?

  3)掘金小册:Netty 入门与实战:仿写微信 IM 即时通讯系统

 

目录:

 

1、netty 架构设计

  不同的线程模式,对程序的性能有很大影响,为了搞清 netty 线程模式,我们来系统分析下各个线程模式,最后看看 netty 线程模型有什么优越性。

1.1、线程模型

  目前存在的线程模型有:

  • 传统阻塞 I/O 服务模型
  • Reactor 模式(反应器模式、分发者模式 Dispatcher、通知者模式 Notifier)

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

  • 单 Reactor 单线程
  • 单 Reactor 多线程
  • 主从 Reactor 多线程

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

 

1.2、传统阻塞 I/O 服务模型

  模型特点:

  • 采用阻塞 IO 模式 获取输入的数据
  • 每个连接都需要独立的线程完成数据的输入,业务处理,数据返回

问题分析:

  • 当并发数很大,就会创建大量的线程,占用很大系统资源
  • 连接创建后,如果当前线程暂时没有数据可读,该线程回阻塞在 read 操作,造成线程资源的浪费

技术分享图片

 

1.3、Reactor 模式

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

  • 基于 IO 复用模型:多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象等待,无需阻塞等待所有连接。当某个连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理。
  • 基于线程池复用线程资源:不必为每个连接创建线程,将连接完成后的业务处理任务分配给线程进行处理,一个线程可以处理多个连接的业务。

  IO 复用结合线程池,就是 Reactor 模式基本设计思想。

技术分享图片

 

 

1.4、单 Reactor 单线程

 

技术分享图片

 

 

 

 

 

 

 

 

 

 

 

 

---

netty 详解

原文:https://www.cnblogs.com/xy-ouyang/p/12820107.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!