Netty系列教程 Netty组件之EventLoopGroup

本文详细介绍了Netty的线程模型,从单Reactor单线程模型、单Reactor多线程模型到主从Reactor多线程模型,分析了每种模型的优缺点。Netty的线程模型可以根据配置灵活切换,通过NioEventLoopGroup和pipeline实现高并发处理。文章最后给出了Netty线程模型的最佳实践建议。
摘要由CSDN通过智能技术生成

前言

线程模型是Netty框架的核心,模型设计的好坏决定了框架的性能、并发量和安全性等架构质量。

Netty的线程模型被精心的设计,既提升了框架的并发性能,又在很大程度避免锁,局部实现了无锁化设计。

因此这篇文章将介绍Netty的线程模型,看看它的线程模型是如何设计用于支持高并发高性能的。

三种Reactor线程模型

提到线程模型,比较经典的是Reactor线程模型,尽管不同的NIO框架对Reactor模型的实现有所差异,但是本质上还是遵循了Reactor的基础线程模型。

什么是Reactor线程模型?

Reactor线程模型是对于传统的I/O线程模型的一种优化。

传统的I/O线程模型采用阻塞I/O来获取输入流数据,并且每个连接都需要独立的线程完成数据的输入、业务处理、数据返回等一个完整的操作链路。这种模型在高并发场景下,有两个比较明显的缺点:

  • 每个连接都需要创建一个对应线程,线程大量创建占用大量的服务器资源

  • 线程没有数据可读情况下的阻塞会对性能造成很大的影响

Reactor线程模型为了解决这两个问题,提供了以下解决方案:

  • 基于I/O多路复用:多个客户端连接共用一个阻塞对象,应用程序只需要在一个阻塞对象等待,无需阻塞等待所有连接。当某个连接有新的数据可以处理时,通过事件驱动通知应用程序,线程从阻塞状态返回,开始进行业务处理

  • 基于线程池技术减少线程创建:基于线程池,不必再为每一个连接创建线程,将连接完成后的业务处理分配给线程池进行调度

Reactor线程模型图:

Reactor线程模型

Reactor在一个单独的线程中进行,负责监听和分发事件。

Reactor的两个核心组件:

  • EventDispatch:监听和分发事件,分发给适当的处理程序来对IO事件做出反应

  • handlers是处理程序执行IO事件要完成的实际事件,Reactor 通过调度适当地处理程序来响应I/O事件,处理程序执行非阻塞操作。

Reactor模式使用I/O复用监听事件,收到事件后,分发给某个线程去处理,这也是能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值