博客
关于我
Netty核心模块组件
阅读量:794 次
发布时间:2023-02-15

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

Netty核心模块组件解析

在Netty开发中,了解其核心组件及其作用对于构建高效的网络应用至关重要。本节将重点介绍Netty中一些关键的模块和组件,包括Bootstrap、EventLoopGroup、Channel、Pipeline等。

Bootstrap

Netty应用通常由Bootstrap引导启动,Bootstrap在客户端和服务器端都有对应的实现:ServerBootstrap用于服务器端,Bootstrap用于客户端。其主要作用是配置Netty程序,串联各个组件。

Bootstrap的主要方法

  • group(EventLoopGroup parentGroup, EventLoopGroup childGroup):用于服务器端设置两个EventLoopGroup。
  • group(EventLoopGroup group):用于客户端设置一个EventLoopGroup。
  • channel(Class<?> channelClass):用于设置服务器端的通道实现。
  • option(ChannelOption<?> option, T value):添加配置选项。
  • childOption(ChannelOption<?> childOption, T value):为接收到的通道添加配置。
  • childHandler(ChannelHandler childHandler):设置业务处理类。
  • bind(int inetPort):服务器端绑定指定端口。
  • connect(String inetHost, int inetPort):客户端连接服务器端。

注意:handler在bossGroup中生效,而childHandler在workGroup中生效。

Future与ChannelFuture

Netty所有IO操作均为异步执行,无法立即确认操作结果。通过Future和ChannelFuture,可以注册监听器,随时获取操作状态。

常用方法

  • Channel channel():获取当前IO操作的通道。
  • ChannelFuture sync():等待异步操作完成。

Channel

Channel是Netty网络通信的核心组件,负责执行网络I/O操作。它支持异步操作,通过注册监听器处理完成、失败或取消事件。

Channel的主要功能

  • 异步执行网络I/O操作。
  • 提供当前连接状态和配置参数。
  • 支持关联I/O操作与处理程序。
  • 常用Channel类型

    • NioSocketChannel:异步TCP客户端连接。
    • NioServerSocketChannel:异步TCP服务器端连接。
    • NioDatagramChannel:异步UDP连接。
    • NioSctpChannel:异步Sctp客户端连接。
    • NioSctpServerChannel:异步Sctp服务器端连接。

    Selector

    Netty基于Selector实现I/O多路复用,通过Selector监听多个Channel的事件。 Selector允许一个线程管理多个Channel,提高效率。

    Selector的作用

    -自动检测就绪I/O事件(如可读、可写)。-通过注册Channel,简化多线程管理。

    ChannelHandler与Pipeline

    ChannelHandler接口处理I/O事件,拦截IO操作。通过ChannelPipeline实现拦截器模式,控制事件处理流程。

    ChannelHandlerContext

    ChannelHandlerContext保存Channel相关上下文,关联ChannelHandler和Pipeline,提供操作执行后的回调。

    常用方法

    • close():关闭通道。
    • flush():刷新数据。
    • writeAndFlush(Object msg):写入数据并刷新。

    EventLoopGroup

    EventLoopGroup是一组EventLoop,用于处理非阻塞I/O操作。BossEventLoop负责接收连接,WorkerEventLoop处理数据。

    EventLoopGroup的作用

    -资源分配和任务调度。-支持多核利用,每个EventLoop维护一个Selector。

    Unpooled

    Netty提供Unpooled类管理缓冲区,支持复用ByteBuf,优化内存使用。

    常用方法

    • buffer(int size):创建ByteBuf。
    • copiedBuffer(byte[] data, Charset charset):复制数据到ByteBuf。
    • array():获取ByteBuf数组。
    • readableBytes():获取可读字节数。
    • getCharSequence(int start, int end, Charset charset):读取字符串序列。

    通过以上组件,Netty构建了高效的异步I/O模型,适用于各种网络应用开发。理解这些模块及其交互,有助于更好地设计和优化Netty应用。

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

    你可能感兴趣的文章
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty的网络框架差点让我一夜秃头,哭了
    查看>>
    Netty相关
    查看>>
    Netty简介
    查看>>
    Netty线程模型理解
    查看>>
    netty解决tcp粘包和拆包问题
    查看>>
    Netty速成:基础+入门+中级+高级+源码架构+行业应用
    查看>>
    Netty遇到TCP发送缓冲区满了 写半包操作该如何处理
    查看>>
    netty(1):NIO 基础之三大组件和ByteBuffer
    查看>>
    Netty:ChannelPipeline和ChannelHandler为什么会鬼混在一起?
    查看>>
    Netty:原理架构解析
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>
    Network Sniffer and Connection Analyzer
    查看>>
    Network 灰鸽宝典【目录】
    查看>>
    Network-Emulator Network-Emulator-Toolkit网络模拟器使用
    查看>>
    Networkx写入Shape文件
    查看>>
    NetworkX系列教程(11)-graph和其他数据格式转换
    查看>>
    Networkx读取军械调查-ITN综合传输网络?/读取GML文件
    查看>>
    NetworkX:是否为每个节点添加超链接?
    查看>>
    network小学习
    查看>>