【Netty 网络通信】Netty 核心组件

简介: 【1月更文挑战第9天】【Netty 网络通信】Netty 核心组件

  • BootstrapEventLoop(Group)Channel

BootstrapNetty 框架的启动类和主入口类,分为客户端类Bootstrap和服务器类 ServerBootstrap 两种。

ChannelJava NIO 的一个基本构造。 它代表一个到实体(如一个硬件设备、一个文件、一个网络套接字或者一个能够执行一个或者多个不同的I/O操作的程序组件)的开放连接,如读操作和写操作

目前,可以把Channel 看作是传入(入站)或者传出(出站)数据的载体。因此,它可以被打开或者被关闭,连接或者断开连接。

EventLoop 暂时可以看成一个线程、EventLoopGroup自然就可以看成线程组。  

  • 事件和ChannelHandlerChannelPipeline

Netty 使用不同的事件来通知我们状态的改变或者是操作的状态。这使得我们能够基于已经发生的事件来触发适当的动作。

Netty 事件是按照它们与入站或出站数据流的相关性进行分类的。 连接已被激活或者连接失活; 可能由入站数据或者相关的状态更改而触发的事件包括: 数据读取;用户事件;错误事件。

出站事件是未来将会触发的某个动作的操作结果,这些动作包括:打开或者关闭到远程 节点的连接;将数据写到或者冲刷到套接字。

每个事件都可以被分发给ChannelHandler类中的某个用户实现的方法,既然事件分为 入站和出站,用来处理事件的ChannelHandler也被分为可以处理入站事件的Handler和出站 事件的Handler,当然有些Handler既可以处理入站也可以处理出站。

Netty 提供了大量预定义的可以开箱即用的ChannelHandler 实现,包括用于各种协议 (如HTTPSSL/TLS)的ChannelHandler

基于Netty的网络应用程序中根据业务需求会使用Netty已经提供的ChannelHandler或 者自行开发ChannelHandler,这些ChannelHandler 都放在ChannelPipeline 中统一管理,事件 就会在ChannelPipeline 中流动,并被其中一个或者多个ChannelHandler处理。  

  • ChannelFuture

Netty 中所有的I/O 操作都是异步的,我们知道“异步的意思就是不需要主动等待结果 的返回,而是通过其他手段比如,状态通知,回调函数等”,那就是说至少我们需要一种获 得异步执行结果的手段。

JDK 预置了interface java.util.concurrent.FutureFuture 提供了一种在操作完成时通知 应用程序的方式。这个对象可以看作是一个异步操作的结果的占位符;它将在未来的某个时 刻完成,并提供对其结果的访问。但是其所提供的实现,只允许手动检查对应的操作是否已 经完成,或者一直阻塞直到它完成。这是非常繁琐的,所以Netty提供了它自己的实现 ChannelFuture,用于在执行异步操作的时候使用。

一般来说,每个Netty的出站I/O操作都将返回一个ChannelFuture。  

相关文章
|
2月前
|
网络协议 C++
C++ Qt开发:QTcpSocket网络通信组件
`QTcpSocket`和`QTcpServer`是Qt中用于实现基于TCP(Transmission Control Protocol)通信的两个关键类。TCP是一种面向连接的协议,它提供可靠的、双向的、面向字节流的通信。这两个类允许Qt应用程序在网络上建立客户端和服务器之间的连接。Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QTcpSocket`组件实现基于TCP的网络通信功能。
64 8
C++ Qt开发:QTcpSocket网络通信组件
|
14天前
|
网络协议 Java 物联网
Netty是什么?深入理解高性能网络框架
Netty是什么?深入理解高性能网络框架
49 1
|
21天前
|
监控 网络协议 Java
Java一分钟之-Netty:高性能异步网络库
【6月更文挑战第11天】Netty是Java的高性能异步网络框架,基于NIO,以其高吞吐量、低延迟、灵活性和安全性受到青睐。常见问题包括内存泄漏、ChannelHandler滥用和异常处理不当。要规避这些问题,需正确释放ByteBuf,精简ChannelPipeline,妥善处理异常,并深入理解Netty原理。通过代码审查、遵循最佳实践和监控日志,可提升代码质量和性能。掌握Netty,打造高效网络服务。
23 2
|
4天前
|
缓存 网络协议 安全
探秘Netty:打造高性能网络通信利器
探秘Netty:打造高性能网络通信利器
5 0
|
2月前
|
Kubernetes 网络虚拟化 网络架构
k8s 网络组件详细 介绍
k8s 网络组件详细 介绍
|
2月前
|
设计模式 前端开发 网络协议
面试官:说说Netty的核心组件?
Netty 核心组件是指 Netty 在执行过程中所涉及到的重要概念,这些核心组件共同组成了 Netty 框架,使 Netty 框架能够正常的运行。 Netty 核心组件包含以下内容: 1. 启动器 Bootstrap/ServerBootstrap 2. 事件循环器 EventLoopGroup/EventLoop 3. 通道 Channel 4. 通道处理器 ChannelHandler 5. 通道管道 ChannelPipeline 这些组件的交互流程如下: ![image.png](https://cdn.nlark.com/yuque/0/2024/png/92791/1716
20 0
面试官:说说Netty的核心组件?
|
2月前
|
编解码 前端开发 Java
Java网络API之Netty深度解析
Java网络API之Netty深度解析
25 0
|
2月前
|
存储 负载均衡 监控
|
2月前
|
监控 C++ 索引
C++ Qt开发:QNetworkInterface网络接口组件
在Qt网络编程中,`QNetworkInterface`是一个强大的类,提供了获取本地网络接口信息的能力。通过`QNetworkInterface`,可以轻松地获取有关网络接口的信息,包括接口的名称、硬件地址、IP地址和子网掩码等。这个类对于需要获取本地网络环境信息的应用程序特别有用,例如网络配置工具、网络监控程序等。`QNetworkInterface`通过提供一致而易于使用的接口,使得网络编程中的任务更加简便和可靠。
49 4
C++ Qt开发:QNetworkInterface网络接口组件
|
2月前
|
XML 网络协议 前端开发
Netty网络框架(三)
Netty网络框架
35 1