一、Netty 的整体结构
在 Netty 的官网中,给出了一张图,图片如下:

上图摘自 Netty 官网首页。
这就是 Netty 的模块划分图,可以清晰的看出,一共分为三个模块:
Core 核心层;Protocol Support 协议支持层;Transport Services 传输服务层。
可以看出,Netty 的模块设计具备较高的通用性和可扩展性。
1. Core 核心层
Core 核心层包含了 Netty 最为核心的功能,提供了底层网络通信的通用抽象和实现,包括可扩展的事件模型、通用的通信 API、支持零拷贝的 ByteBuf 等。
2. Protocol Support 协议支持层
协议支持层基本上覆盖了主流协议的编解码实现,如 HTTP、SSL、Protobuf、压缩、大文件传输、WebSocket、文本、二进制等主流协议,此外 Netty 还支持自定义应用层协议。
Netty 丰富的协议支持降低了用户的开发成本,基于 Netty 我们可以快速开发 HTTP、WebSocket 等服务。
3. Transport Service 传输服务层
传输服务层提供了网络传输能力的定义和实现方法。它支持 Socket、HTTP 隧道、虚拟机管道等传输方式。
Netty 对 TCP、UDP 等数据传输做了抽象和封装,用户可以更聚焦在业务逻辑实现上,而不必关系底层数据传输的细节。
二、Netty 逻辑架构
下图是 Netty 的逻辑处理架构。Netty 的逻辑处理架构为典型网络分层架构设计,共分为网络通信层、事件调度层、服务编排层,每一层各司其职。

1. 网络通信层
网络通信层的职责是执行网络 I/O 的操作。它支持多种网络协议和 I/O 模型的连接操作。当网络数据读取到内核缓冲区后,会触发各种网络事件,这些网络事件会分发给事件调度层进行处理。
网络事件有连接事件、读事件、写事件等。
网络通信层的核心组件包含 BootStrap、ServerBootStrap、Channel 三个组件。
- BootStrap & ServerBootStrap
Bootstrap 是“引导”的意思,它主要负责整个 Netty 程序的启动、初始化、服务器连接等过程,它相当于一条主线,串联了 Netty 的其他核心组件。
Netty 中的引导器共分为两种类型:一个为用于客户端引导的 Bootstrap,另一个为用于服务端引导的 ServerBootStrap,它们都继承自抽象类 AbstractBootstrap。

Bootstrap 和 ServerBootStrap 十分相似,两者非常重要的区别在于 Bootstrap 可用于连接远端服务器,只绑定一个 EventLoopGroup。而 ServerBootStrap 则用于服务端启动绑定本地端口,会绑定两个 EventLoopGroup,这两个 EventLoopGroup 通常称为 Boss 和 Worker。
ServerBootStrap 中的 Boss 和 Worker 是什么角色呢?它们之间又是什么关系?这里的 Boss 和 Worker 可以理解为“老板”和“员工”的关系。每个服务器中都会有一个 Boss,也会有一群做事情的 Worker。Boss 会不停地接收新的连接,然后将连接分配给一个个 Worker 处理连接。
Netty 整体架构与组件关系解析

本文详细介绍了Netty的整体结构,包括Core核心层、Protocol Support协议支持层和Transport Service传输服务层。核心层包含Netty的核心功能,如事件模型、通信API和ByteBuf;协议支持层涵盖多种主流协议的编解码实现;传输服务层提供网络传输能力的定义和实现。此外,还阐述了Netty的逻辑架构,包括网络通信层、事件调度层和服务编排层,重点讲解了BootStrap、ServerBootStrap、Channel、EventLoopGroup和EventLoop等关键组件的角色和关系。
最低0.47元/天 解锁文章
618

被折叠的 条评论
为什么被折叠?



