Netty学习——整体架构

2023-10-27

Netty 整体结构

Netty 是一个设计非常用心的网络基础组件,Netty 官网给出了有关 Netty 的整体功能模块结构,却没有其他更多的解释。从图中,我们可以清晰地看出 Netty 结构一共分为三个模块:
在这里插入图片描述
Core 核心层

Core 核心层是 Netty 最精华的内容,它提供了底层网络通信的通用抽象和实现,包括可扩展的事件模型、通用的通信 API、支持零拷贝的 ByteBuf 等。

Protocol Support 协议支持层

协议支持层基本上覆盖了主流协议的编解码实现,如 HTTP、SSL、Protobuf、压缩、大文件传输、WebSocket、文本、二进制等主流协议,此外 Netty 还支持自定义应用层协议。Netty 丰富的协议支持降低了用户的开发成本,基于 Netty 我们可以快速开发 HTTP、WebSocket 等服务。

Transport Service 传输服务层

传输服务层提供了网络传输能力的定义和实现方法。它支持 Socket、HTTP 隧道、虚拟机管道等传输方式。Netty 对 TCP、UDP 等数据传输做了抽象和封装,用户可以更聚焦在业务逻辑实现上,而不必关系底层数据传输的细节。

Netty 逻辑架构

Netty 的逻辑处理架构为典型网络分层架构设计,共分为网络通信层、事件调度层、服务编排层,每一层各司其职。图中包含了 Netty 每一层所用到的核心组件。
在这里插入图片描述

网络通信层

网络通信层的职责是执行网络 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 可以理解为“老板”和

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Netty学习——整体架构 的相关文章

  • layui框架学习(5:面板)

    Layui中的菜单样式与面板结合比较紧密 在学习菜单之前 先熟悉Layui的面板样式 Layui的面板主要作为容器使用 其样式主要分为常规面板 卡片面板 折叠面板 含手风琴效果 Layui官网示例中还介绍了面板嵌套 本文后续一一介绍并验证

随机推荐

  • 图像描述算法排位赛:SceneXplain与MiniGPT-4谁将夺得桂冠?

    如果你对 AI 前沿感兴趣 本场 图像描述算法排位赛 绝对是你不能错过的 在这场较量中 SceneXplain 和 MiniGPT 4 将会比试 谁将摘得这场比赛的桂冠 直接上手体验 scenex jina ai 背景介绍 在 一张图就是一
  • php curl集成包的安装和实用

    下载curl集成包 https github com php mod curl 放在vendor目录下 加载curl包 实例化 vendor Curl src Curl Curl php pinJ new Curl 然后按照官网demo使用
  • 图像配准的方法

    转自 http blog sina com cn s blog 4b9b714a0100d5k5 html 图像配准的方法 1 基于特征的图像配准 基于特征的图像配准首先提取图像信息的特征 然后以这些特征为模型进行配准 特征提取的结果是一含
  • QT的ui文件中控件在cpp的调用

    点击然后右键 然后点击改变对象名称 改成如上图所示 即可在cpp函数中调用 进行操作
  • cdn搭建原理_什么叫cdn服务器?怎么部署?

    在现今的网络系统时期 各类互连网手机app异军突起 而互联网出現浏览卡屏或延时的状况也越来越非常广泛 以便处理不一样的互联网情况 人们常常会构建到不一样的虚拟主机来浏览互联网 cdn服务器也是列举这种 什么叫cdn服务器 cdn服务器英语全
  • CentOS7.x安装VNC实录

    不知不觉 centos已经到7 6了 在服务器操作系统中 centos是用的比较多的 占很大的比例 由于7 x版本和6 x版本有区别 最近安装了7 6的VNC 特记之 VNC需要系统安装的有桌面 如果是生产环境服务器 安装时使用的最小化安装
  • 学妹问我:OpenJDK是什么?作为师哥,必须万字详解屁颠屁颠奉上

    上一篇是分享的是 JVM虚拟机 了解Java堆中对象分配 布局和访问的全过程 这篇给大家分享 OpenJDK 1 OpenJDK 概述 OpenJDK 是 Java 平台标准版 Java SE 的免费开源实现 这是 Sun Microsys
  • python爬虫安装Xpath插件时遇到的问题

    在安装Xpath时 出现拖拉压缩包 记住一定是压缩包 下载后的插件是 crx后缀的文件 需要改变为压缩包的形式 后 在添加文件时 一直找不到压缩包 最后发现是压缩包后缀的问题 如图 是我的winr 压缩包软件 自动生成的压缩包 默认是rar
  • 数据聚合与分组运算

    标注 我用的是jupyterNotebook 一 分组与聚合的原理 在Pandas中 分组是指使用特定的条件将原数据划分为多个组 聚合在这里指的是 对每个分组中的数据执行某些操作 最后将计算的结果进行整合 分组与聚合的过程大概分为以下三步
  • nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

    问题描述 这个报错指的是结果无法映射 只需要把java实体与数据库表关系映射好就ok 一定要看清自己的配置文件 自己的数据库 处理思路整理 避免走弯路 1 首先验证是不是代码写出 String sql select count 1 from
  • Spring中@Autowired注解用法详解

    1 概述 Spring中IOC可以通过注解方式实现 只要在spring的配置文件applicationContext xml中配置开启了包扫描Spring会自动扫描指定包及其子孙包
  • 【Python三大结构练习2】

    目录 1 数字金额转换为中文大写金额 2 恺撒密码 3 大小写转换 1 数字金额转换为中文大写金额 描述 编写一函数 将数字金额转换为中文大写金额 设最高位考虑到亿 最低位考虑到分 如 数字金额为1023 445 转换为中文大写金额为 壹仟
  • tp6整合腾讯云cos上传

    1 创建一个名为 composer json的文件 内容如下 require qcloud cos sdk v5 gt 2 0 2 执行以下命令 使用 Composer 安装 php composer update 3 复制代码 我这里目录
  • Qt编写并且调用外部动态库(dll)

    一 利用Qt编写一个简单的动态库 利用Qt编写一个简单的动态库 里面含有加 减 乘 除四个函数接口 1 打开Qt 新建一个项目 选择Library C 库 然后点击确认 2 选择共享库 写入项目名称 我这里命名为 QtMathDLL 选择项
  • Java 多线程批量操作中如何做事务控制?

    老汉聊技术 2023 04 11 12 43 发表于四川 收录于合集 java42个 编程63个 上方蓝色 老汉聊技术 选择 设为星标 前言 公司业务中遇到一个需求 需要同时修改最多约5万条数据 而且还不支持批量或异步修改操作 于是只能写个
  • 启动Redis报错:Could not create Server TCP listening socket *:6379: bind: Address already in use–解决办法

    最后一句提示 6379地址已经在使用 6379是redis默认的端口 如图我自己输入指令 redis server 显示Redis已经开启服务 1 正常解决方法三部 通过指令找到redis进程 查看所有关于它的进程详情 ps ef grep
  • Harbor-私有docker仓库离线安装配置

    因为工作需要 有时候是需要完全断网环境 此时需要在内网环境中离线安装Harbor私有仓库 1 系统环境描述 主机 X86 64架构 8G内存 期待啥时候等有机会找一台国产化机器安装一个其他架构的版本 操作系统 CentOS 7 9 2009
  • Python爬虫进阶:实战案例与技巧详解

    导言 Python作为一种强大的编程语言 在网络爬虫开发中发挥着重要作用 除了基本的爬虫技巧外 还有许多高级的爬虫技术可以帮助我们更好地获取和处理数据 本篇文章将结合实际案例 介绍Python爬虫的进阶技巧 并提供相应的代码示例 帮助读者深
  • 练习一、用JS语言计算两点之间距离功能

    功能描述 在界面建立4个数字输入框分别代表两点的横坐标 纵坐标 点击按钮并计算出相应的距离 主要考点 熟悉math对象中开根号math sqrt 数值 与平方math pow 数值 次幂 框架 elementui 相关代码
  • Netty学习——整体架构

    Netty 整体结构 Netty 是一个设计非常用心的网络基础组件 Netty 官网给出了有关 Netty 的整体功能模块结构 却没有其他更多的解释 从图中 我们可以清晰地看出 Netty 结构一共分为三个模块 Core 核心层 Core