• Netty系列教程 Netty组件之EventLoopGroup


    前言

    线程模型是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复用监听事件,收到事件后,分发给某个线程去处理,这也是能

  • 相关阅读:
    【RocketMQ】sendDefaultImpl call timeout 问题及其解决办法
    迭代器的封装与反向迭代器
    【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型
    教育(edu)邮箱的价值
    [论文阅读]SSN——基于形状特征网络的点云多类目标检测
    Github开源项目详解--Mall(一)
    决胜B端产品经理学习笔记04管理篇
    Windows本地配置带GPU的Pytorch环境
    跨链桥已成行业最大安全隐患,为什么和怎么办
    直线导轨精度等级在设备中有什么影响?
  • 原文地址:https://blog.csdn.net/AS011x/article/details/126814439