码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Netty要想学得好,就看这条核心主线


    这篇我们深入一下 Netty 的整体架构,做到从高处俯瞰 Netty。

     

    上图现在看不懂没事,我们慢慢盘,这篇稍稍长了点,不过看完应该对 Netty整体架构会有个清晰的认识~

    话不多说,发车!

    从官网的一张图入手

    如果你访问过 Netty 官网,你肯定会看到下面这张图,因为它就放在首页。

     

    但也只有一张图,官网没有对这张图做任何说明,但咱们来盘一盘这张图。

    显而易见,这张图把 Netty 切割成了三部分:core、transport services、protocol support。

    • core:核心,实际上就是提供了一些底层通用实现来供上层使用,从图中可以看出包含的核心有可扩展事件模型、通用通信 API、可零拷贝的 buffer。
    • transport services:传输服务,表明 Netty 支持多种传输方式,例如 TCP 和 UDP 、HTTP隧道、虚拟机管道。我们可以很方便的切换各种传输方式,因为 Netty 都支持了。
    • protocol support:协议的支持,从图中可以看到 Netty 支持了非常多常见的协议,例如 HTTP、WebSocket、SSL、Google Protobuf(它其实是个编解码协议...放在这怎么说呢,个人觉得不太合适) 等等。可以说开箱即用,不必自行实现,当然,如果你想实现自定义协议,也是很方便的。

    总体而言,这幅图想要表现的只是大致的分层,或者可以认为是代码分层,我们来看下大致的包结构,大家先有个大体印象就行:

    core:

    core 层大致包含以下这几个包:

     

    • buffer:这个包主要就是实现了 Netty 自定义的 ByteBuf,因为 Java ByteBuffer 的 API 太难用了, 并且还有很多优化的余地,所以 Nettty 就实现了个 ByteBuf 替换之。
    • common:就是一些通用的工具类,像我以前分析过的 Netty 时间轮,FastThreadLocal 就在 core 里面。
    • resolver:从名字就可以得出,解析用的, 解析主机名、IP地址、DNS 等。

    transport services:

    这层大致包含以下这几个包:

     

    主要的功能就是处理和传输数据了,如果对 Netty 稍稍有了解

  • 相关阅读:
    达梦数据库常用SQL
    ollama 模型国内加速下载,制作自定义Modelfile模型文件
    通过工具和字节码带你深入理解运行时数据区
    6G:典型应用、关键技术与面临挑战
    【C++】类的声明 与 类的实现 分开 ① ( 类的声明 与 类的实现 常用用法 | Visual Studio 2019 中创建类的头文件和源文件 | 确保头文件包含一次 )
    Servlet | 域对象、request对象其它常用的方法
    C语言程序设计算法题 -- lab03(G-K)
    K210学习笔记——MaixHub在线训练模型(新版)
    golang 中的 cronjob
    C语言生成随机数、C++11按分布生成随机数学习
  • 原文地址:https://blog.csdn.net/Cr1556648487/article/details/126778469
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号