博客
关于我
Netty源码—4.客户端接入流程二
阅读量:789 次
发布时间:2023-02-15

本文共 1415 字,大约阅读时间需要 4 分钟。

Netty客户端连接接入问题整理

Reactor线程模型和服务端启动流程

Netty的Reactor线程模型采用了多线程的事件驱动模式,能够高效处理大量的网络连接。服务端启动时,会创建一个NioEventLoopGroup,并将服务端Channel绑定到boss线程组,而客户端连接则绑定到worker线程组。这种设计使得服务端能够高效处理大量连接,同时保持每个连接的响应时间。

Netty新连接接入的整体处理逻辑

当服务端Channel接收到新连接请求时,会执行以下步骤:

  • 创建NioSocketChannel并包装JDK底层的SelectableChannel
  • 将NioSocketChannel注册到对应的NioEventLoopGroup中
  • 通过ServerBootstrapAcceptor处理新连接,包括设置ChannelOption、ChannelAttr和用户自定义的ChannelHandler
  • 绑定Reactor线程,并注册读事件
  • 新连接接入之检测新连接

    在服务端Channel的Pipeline中,ServerBootstrapAcceptor处理器负责检测新连接。当有新的连接接入时,ServerBootstrapAcceptor的channelRead()方法会被调用。此时会创建一个NioSocketChannel,并将其注册到对应的NioEventLoopGroup中。

    新连接接入之创建NioSocketChannel

    NioSocketChannel是Netty对JDK底层SelectableChannel的封装,主要负责处理网络事件。创建NioSocketChannel时,会设置用户自定义的ChannelHandler、ChannelOption和ChannelAttr,并将其绑定到Reactor线程上。

    新连接接入之绑定NioEventLoop线程

    将NioSocketChannel绑定到NioEventLoop线程的过程包括以下步骤:

  • 将NioSocketChannel添加到NioEventLoopGroup的Selector中
  • 调用NioEventLoopGroup的register()方法,选择一个NioEventLoop进行绑定
  • 将NioSocketChannel的读事件注册到NioEventLoop的Selector中
  • 注册Reactor线程总结

  • NioEventLoopGroup的register()方法会调用NioEventLoop的register()方法
  • NioEventLoop通过线程选择器选择一个NioEventLoop进行绑定
  • 将NioSocketChannel的读事件注册到NioEventLoop的Selector中
  • 新连接接入总结

    新连接接入的过程主要包括以下步骤:

  • 服务端Channel在boss线程组中接收到新连接请求
  • 创建NioSocketChannel并包装JDK底层SelectableChannel
  • 通过ServerBootstrapAcceptor处理新连接,设置ChannelOption、ChannelAttr和用户自定义的ChannelHandler
  • 将NioSocketChannel绑定到对应的NioEventLoop线程,并注册读事件
  • 整个过程确保了新连接能够快速接入并开始数据读写,保证了Netty服务端的高效性能。

    转载地址:http://jvcfk.baihongyu.com/

    你可能感兴趣的文章
    Netty工作笔记0017---Channel和Buffer梳理
    查看>>
    Netty工作笔记0018---Selector介绍和原理
    查看>>
    Netty工作笔记0019---Selector API介绍
    查看>>
    Netty工作笔记0020---Selectionkey在NIO体系
    查看>>
    Netty工作笔记0021---NIO编写,快速入门---编写服务器
    查看>>
    Netty工作笔记0022---NIO快速入门--编写客户端
    查看>>
    Vue踩坑笔记 - 关于vue静态资源引入的问题
    查看>>
    Netty工作笔记0024---SelectionKey API
    查看>>
    Netty工作笔记0025---SocketChannel API
    查看>>
    Netty工作笔记0026---NIO 网络编程应用--群聊系统1---编写服务器1
    查看>>
    Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
    查看>>
    Netty工作笔记0028---NIO 网络编程应用--群聊系统3--客户端编写1
    查看>>
    Netty工作笔记0029---NIO 网络编程应用--群聊系统4--客户端编写2
    查看>>
    Netty工作笔记0030---NIO与零拷贝原理剖析
    查看>>
    Netty工作笔记0031---NIO零拷贝应用案例
    查看>>
    Netty工作笔记0032---零拷贝AIO内容梳理
    查看>>
    Netty工作笔记0033---Netty概述
    查看>>
    Netty工作笔记0034---Netty架构设计--线程模型
    查看>>
    Netty工作笔记0035---Reactor模式图剖析
    查看>>
    Netty工作笔记0036---单Reactor单线程模式
    查看>>