当前位置: 首页 > ops >正文

浅谈互联网主流通信协议

文章目录

  • 前言
  • 一.HTTP
    • 1.1 HTTP1.0
      • 1.1.1 基本特性
      • 1.1.2 存在的问题
      • 1.1.3 ~~适用场景~~
    • 1.2 HTTP1.1
      • 1.2.1 基本特性
      • 1.2.2 遗留问题
    • 1.3HTTP2.0
      • 1.3.1 基本特性
      • 1.3.2 遗留问题
    • 1.4 HTTP3.0
      • 1.4.1 基本特性
      • 1.4.2 遗留问题
    • 1.5 HTTP协议实践切换
  • 二.websocket
    • 2.1 websocket实践
  • 三.SSE
  • 四.MQTT
    • 4.1 基本特性
    • 4.2 存在问题
  • 五.常用网络框架服务
    • 5.1 dubbo
    • 5.2 netty
      • 5.2.1 基本特性
      • 5.2.2 遗留问题
      • 5.2.3 详细介绍和demo
  • 六.其他


前言

也许此刻的坚持无人喝彩,满是汗水与疲惫,可最难的终究是坚持。“心之所向,素履以往。生如逆旅,一苇以航。” 我们只问自由、盛放、深情、初心与勇敢,无问西东。这个时代,并不缺少完美的人,而是缺从自己心底给出真心、正义、无畏和同情的人 。

本文将对 HTTP 1.0、HTTP 1.1、HTTP 2.0、HTTP 3.0、WebSocket(WS)及 Server-Sent Events(SSE),MQTT等网络应用层协议展开全面深入的探讨,涵盖各协议的核心特性、发展演进、应用场景及相互之间的技术差异;同时,对 Netty、Dubbo 等网络协议框架进行简要概述,包括其功能架构、技术优势及其在网络通信领域的实践应用。​


一.HTTP

特性HTTP/1.1HTTP/2HTTP/3 (QUIC)
连接协议TCPTCPUDP
多路复用多连接并发单连接多路复用单连接多路复用
队头阻塞存在(连接级)存在(TCP层)
头部压缩HPACK类似HPACK
安全性可选HTTPS强制HTTPS强制加密

在这里插入图片描述
在这里插入图片描述

1.1 HTTP1.0

1.1.1 基本特性

HTTP/1.0是无状态、无连接的应用层协议。
无状态:服务器不会在两次请求之间保存任何关于客户端的信息,每次请求都被视为独立的操作,这使得服务器处理请求时无需维护复杂的会话状态,降低了服务器的实现复杂度和资源消耗。但同时也带来了一些问题,例如用户登录后进行其他操作时,服务器无法直接识别用户身份,需要通过额外的机制如 Cookie、Session 来实现状态管理。
无连接:每一次 HTTP 请求与响应完成后,客户端与服务器之间的 TCP 连接就会被关闭。当下一次客户端发起新的请求时,需要重新建立 TCP 连接。这种机制虽然在一定程度上减轻了服务器的负担,但频繁的连接建立和关闭会产生较大的开销,尤其是在需要多次请求资源的场景下,如加载一个包含多个图片、脚本和样式表的网页,会导致加载速度变慢。

1.1.2 存在的问题

  • 1.身份冗余开销,需要开发者额外实现身份信息维护。

  • 2.无状态特性导致的分布式系统身份信息同步问题。

  • 3.无连接模式导致连接性能开销,每次都需要重新建立三次握手。(当使用 HTTPS 时,每次连接还需额外进行 TLS 握手,且头部字段的冗余传输每个请求均需完整传输 HTTP 头部)
    在这里插入图片描述
    在这里插入图片描述

  • 4.管道化支持缺陷:HTTP/1.0 的管道化(Pipeline)是可选特性,且要求服务器严格按请求顺序响应,一旦首个请求阻塞(如等待数据库查询),后续所有请求均被阻塞(队头阻塞,Head-of-Line Blocking)
    在这里插入图片描述

  • 5.并发连接限制:浏览器为每个域名最多开启 2-6 个 TCP 连接(不同浏览器实现不同),加载包含 50 个资源的网页时,需串行处理多批请求,导致加载时间比 HTTP/2.0 流水线机制延长 2-3(Chrome DevTools 性能分析数据)。

  • 6.缺乏流量控制与优先级机制无法对请求进行优先级排序,导致关键资源(如 HTML 文档)与非关键资源(如广告图片)竞争带宽。

  • 7.不支持二进制数据传输仅能通过 Base64 编码传输二进制数据(如图片、视频),数据体积大,需要客户端额外解码处理。

1.1.3 适用场景

更适用于一些对实时性、交互性要求不高,且请求数量较少的场景。

1.2 HTTP1.1

1.2.1 基本特性

面向对象,长连接。HTTP/1.1 通过长连接和缓存机制解决了 HTTP/1.0 的主要性能痛点,但其基于文本的协议格式、严格的顺序处理逻辑,导致队头阻塞和头部冗余问题成为进一步优化的瓶颈。这些遗留问题直接推动了 HTTP/2.0(二进制分帧、多路复用)和 HTTP/3.0(基于 UDP 的 QUIC 协议)的技术演进。在现代 Web 应用中,HTTP/1.1 仍广泛应用于对实时性要求不高的场景,但面对高并发、低延迟需求时,需依赖 CDN 缓存、域名分片等手段缓解性能问题。​

改进

  • 1.持久连接,通过Connection: Keep-Alive头部默认启用长连接,允许多个请求响应复用同一 TCP 连接,避免重复三次握手和 TLS 握手开销。
    在这里插入图片描述

  • 2.增强的缓存机制:
    ①强缓存(200 from cache):通过Cache-Control: max-age=31536000指定资源缓存有效期,客户端直接使用本地缓存,无需发起请求。​
    ②协商缓存(304 Not Modified):通过ETag(资源指纹)和Last-Modified校验资源是否更新,仅传输头部确认,减少 98% 以上重复数据传输。
    在这里插入图片描述

    1. 虚拟主机头支持(Host Header):通过Host: example.com头部实现同一 IP 地址承载多个域名(如 Nginx 虚拟主机),解决 HTTP/1.0 只能绑定单域名的问题,推动云计算和共享服务器普及。
    1. 分块传输编码(Chunked Transfer Encoding):支持动态生成内容(如大文件断点续传、流式响应),通过Transfer-Encoding: chunked将数据分块传输,无需预先知晓内容长度。

1.2.2 遗留问题

  • 1.队头阻塞(核心痛点)​
    问题本质:同一 TCP 连接中,前一个请求的网络延迟或处理阻塞会阻塞所有后续请求,例如等待数据库查询的请求会导致后续 10 个静态资源请求延迟增加 2-5 倍。(http1.1允许客户端在未收到前一个响应时,按 FIFO 顺序批量发送多个请求(如一次性发送 HTML、CSS、JS 请求),理论上可减少等待延迟。​实际限制:​服务器必须严格按请求顺序响应,首个请求阻塞会导致后续请求全部排队(队头阻塞);​浏览器(如 Chrome、Firefox)默认禁用管道化,因实际场景中阻塞概率高(移动网络下阻塞率达 30%+),最终被 HTTP/2.0 的多路复用替代。)
    在这里插入图片描述

  • 2.头部冗余传输
    在这里插入图片描述

  • 3.二进制支持不足,仅支持文本格式协议,二进制数据(如图像、视频)需 Base64 编码传输。

1.3HTTP2.0

1.3.1 基本特性

改进

  • 1.多路复用(Multiplexing):通过单个 TCP 连接处理多个并行请求 / 响应,避免了 HTTP/1.1 中因浏览器限制并发连接数(如同一域名最多 6-8 个连接)导致的 “队头阻塞”(Head-of-Line Blocking)问题。原理是将每个请求 / 响应分割为独立的 “帧”(Frame),并通过统一的连接混合传输,客户端和服务器可按任意顺序处理帧,重组为完整的请求 / 响应。
    在这里插入图片描述

  • 2.头部压缩(HPACK算法):HTTP/1.1 的请求 / 响应头部包含大量重复字段(如User-Agent、Cookie),浪费带宽。使用 HPACK 算法压缩头部,通过静态字典(预定义常用字段)、动态字典(缓存已出现的字段)和哈夫曼编码减少传输数据量。
    在这里插入图片描述

  • 3.服务器推送(Server Push):服务器可主动向客户端推送尚未请求但预期需要的资源(如 HTML 引用的 CSS/JS 文件),无需客户端显式请求。
    在这里插入图片描述

  • 4.二进制分帧层(Binary Framing Layer):将 HTTP/1.1 的纯文本协议改为二进制格式,定义多种帧类型(如数据帧、头部帧、重置帧等)。解析更高效、可靠,消除文本协议的歧义,为多路复用和优先级控制提供底层支持。

  • 5.请求优先级(Request Prioritization):客户端可为每个请求设置优先级(如 “高优先级加载 CSS,低优先级加载图片”),服务器根据优先级分配资源(如先传输关键资源)。

  • 6.流量控制(Flow Control):基于 TCP 流量控制,但更细粒度(可针对单个流),避免因某一流的数据过多影响其他流。防止发送方过度占用接收方资源(如内存、带宽),通过窗口机制限制单连接或单个流的数据传输量。

1.3.2 遗留问题

  • 1.实现成本:相比 HTTP/1.1,HTTP/2 的二进制帧、多路复用等机制增加了服务器和客户端的开发与调试难度,需处理更复杂的状态管理(如帧排序、流控)。
  • 2.调试工具不足:传统的 HTTP 抓包工具(如 Wireshark)需专门适配才能解析 HTTP/2 的二进制数据,排查问题更困难。
  • 3.头部压缩的安全风险:BREACH 攻击:HPACK 算法依赖历史数据压缩,可能被攻击者利用侧信道攻击(Side-Channel Attack)推断加密的头部内容(如 Cookie),需配合Content-Encoding: gzip等防御措施。
  • 4.服务器推送的滥用风险: 推送的通用性较差,实际应用场景受限。推送的资源若未被客户端使用,会浪费带宽;若版本更新不及时,可能导致缓存不一致问题。
    1. 队头阻塞的残留问题(TCP 层限制): 虽然 HTTP/2 的单个流不会阻塞其他流,但 TCP 层若出现数据包丢失,仍可能导致整个连接的性能下降(称为 “队头阻塞” 在传输层的残留)因为只有TCP拿到完整连续的数据时,内核才会将数据从缓冲区交给HTTP应用,而只要前一个字节没有收到,HTTP就无法从内核缓冲区中得到数据,直到其到达,所以在此过程仍然会导致队头阻塞。

在这里插入图片描述

1.4 HTTP3.0

1.4.1 基本特性

HTTP/3 是 HTTP 协议的最新版本,基于 QUIC(Quick UDP Internet Connections) 协议构建,旨在解决传统 TCP/IP 栈的局限性,提升网络传输效率。

在这里插入图片描述

改进

  • 1.基于 UDP 的传输层协议.传统 HTTP/1.x/2 依赖 TCP:TCP 是面向连接的协议,需三次握手建立连接,存在队头阻塞问题。HTTP/3 改用 UDP:UDP 是无连接协议,传输更快,但不可靠。QUIC 在 UDP 上实现可靠性,通过自定义机制(如拥塞控制、重传、流量控制)弥补 UDP 缺陷,同时保留低延迟优势。
  • 2.快速连接建立(减少握手延迟):TCP + TLS 握手延迟至少需要3个RTT才能传输数据。
    QUIC 的握手优化后,首次连接仅需 1-RTT(合并 TCP 和 TLS 握手),后续连接通过缓存密钥实现 0-RTT 恢复连接,秒级重建。
  • 3.多路复用与无队头阻塞:每个数据流独立编号,单个流阻塞不影响其他流。基于 UDP 的数据包可乱序传输,QUIC 层负责重组,彻底解决队头阻塞。
    在这里插入图片描述
    1. 更好的抗丢包与拥塞控制:在首个 UDP 包中携带协议版本,避免 TCP 握手时的版本不兼容问题。通过「连接 ID」绑定设备(而非 IP + 端口),支持网络切换(如 Wi-Fi 转移动网络)时无缝保持连接。改进的拥塞控制算法:如 CUBIC 和 BBR,减少延迟并提升吞吐量。
      在这里插入图片描述
    1. 头部压缩(QPACK):继承 HTTP/2 的 HPACK 头部压缩,并优化为 QPACK:压缩效率更高,减少传输数据量。客户端与服务器端独立维护字典,避免 HTTP/2 中因单个流阻塞导致的压缩字典同步问题。

1.4.2 遗留问题

  • 1.防火墙与 NAT 兼容性问题。UDP 的不可见性:传统防火墙、路由器对 UDP 包的解析能力较弱,可能误判为异常流量或阻断。端口限制:QUIC 默认使用 443 端口(与 HTTPS 共用),但部分老旧网络设备仍严格限制 UDP 流量。
    1. QUIC 的自研成本:需在用户空间实现拥塞控制、加密等逻辑(TCP 由内核实现),对开发者要求更高。
    1. 0-RTT 数据可能在 TLS 握手完成前发送,存在重放攻击隐患(需结合 Token 机制缓解)。
      4.成熟度与生态支持不足,HTTP/3(基于 QUIC 协议)目前主要应用在客户端和边缘服务器(如 Nginx),而通过 Nginx 代理服务器后通常会转换为常规协议(如 HTTP/2 或 HTTP/1.1)与应用服务器交互。HTTP/3 的核心优势(如 1-RTT 握手、多路复用)主要体现在客户端与边缘节点(如 CDN、反向代理)的通信中。例如,Nginx 作为边缘服务器可直接接收客户端的 QUIC 请求,并利用 UDP 特性提升弱网性能,边缘到应用服务器:应用服务器(如 Tomcat、Apache、Node.js)目前普遍不原生支持 HTTP/3。

1.5 HTTP协议实践切换

一般的高端协议使用在客户端到代理服务器。代理服务器到应用服务器一般为局域网连接,并使用原始http无感连接。

客户端侧:现代浏览器(Chrome、Firefox 等)默认支持 HTTP/2,无需额外配置。

代理服务器以nginx为例:

  • 1.强制 HTTPS(自动重定向)
  • 2.HTTP/2 与 HTTP/3 共存
  • 3.严格的 TLS 安全配置
  • 4.性能优化项(缓存、头部控制等)

假设配置文件路径

/etc/nginx/
├── nginx.conf
├── conf.d/
│   └── example.com.conf
└── ssl/├── example.com.crt├── example.com.key└── dhparam.pem
# 强制 HTTP 跳转到 HTTPS
server {listen 80;server_name example.com www.example.com;return 301 https://$host$request_uri;
}# 主 HTTPS 服务,支持 HTTP/2 和 HTTP/3
server {listen 443 ssl http2;listen 443 quic reuseport;server_name example.com www.example.com;# SSL 证书路径ssl_certificate     /etc/nginx/ssl/example.com.crt;ssl_certificate_key /etc/nginx/ssl/example.com.key;# 推荐使用 dhparam 强化 DHEssl_dhparam /etc/nginx/ssl/dhparam.pem;# 支持协议,仅启用 TLSv1.3(HTTP/3) 和 TLSv1.2(兼容)ssl_protocols TLSv1.3 TLSv1.2;ssl_prefer_server_ciphers off;# 推荐加密套件ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256';# 其他安全强化ssl_session_timeout 1d;ssl_session_cache shared:MozSSL:10m;ssl_session_tickets off;ssl_stapling on;ssl_stapling_verify on;# QUIC/HTTP3 必需ssl_early_data on;# QUIC-specific headersadd_header Alt-Svc 'h3=":443"'; # 告诉浏览器支持 HTTP/3add_header QUIC-Status $quic;# 安全头部add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;add_header X-Content-Type-Options nosniff;add_header X-Frame-Options DENY;add_header X-XSS-Protection "1; mode=block";# 应用代理配置location / {proxy_pass http://127.0.0.1:8080;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

更多nginx配置demo


二.websocket

典型应用:聊天应用、实时监控、在线协作工具,推送通知等。

特性

  • 1.全双工。基于 TCP 长连接,建立连接后可双向实时传输数据,避免 HTTP 请求 - 响应的单向限制。
    在这里插入图片描述
  • 2.数据格式轻量化:数据以 帧(Frame) 为单位传输,头部最小仅 2 字节,远低于 HTTP 头部开销。支持二进制数据(如图像、视频),适合实时通信场景。
    在这里插入图片描述
    | 字段 | 位数 | 说明 |
    | ------------------ | -------------- | -------------------------------------------------------- |
    | FIN | 1 位 | 表示是否为消息最后一帧 |
    | RSV1-3 | 3 位 | 保留位(通常为 0,某些扩展如压缩使用) |
    | Opcode | 4 位 | 帧类型(如文本:0x1,二进制:0x2,关闭:0x8,ping:0x9) |
    | Mask | 1 位 | 是否启用掩码(客户端 → 服务端必须为 1) |
    | Payload Length | 7 位(或扩展) | 载荷长度(<126: 7位;126:后16位;127:后64位) |
    | Masking Key | 32 位 | 掩码键,用于还原真实数据 |
    | Payload Data | 可变 | 实际数据 |

存在的问题

  • 1.兼容性与防火墙问题:虽默认使用 80(ws)和 443(wss)端口,但老旧防火墙可能拦截非 HTTP/HTTPS 的 WebSocket 流量。
  • 2.协议层功能缺失:WebSocket 仅提供基础通信通道,需开发者自行实现 消息队列、重试机制、权限控制 等功能。对比物联网协议(如 MQTT),缺乏企业级通信所需的高级特性。
    在这里插入图片描述

2.1 websocket实践

SpringBoot整合Netty整合WebSocket-带参认证
vue3+ts+pinia整合websocket
本 Demo 旨在演示 WebSocket 协议的基础通信流程。考虑到初学者的学习门槛,代码已进行大幅简化,仅保留核心逻辑以规避复杂工程细节。实际生产环境中的 WebSocket 应用需在此基础上补充安全校验、心跳机制、协议解析优化等功能。


三.SSE

场景: 长文本/视音频直播流式输出,消息推送等.

特性:

  • 1.单向实时通信模型,浏览器原生支持(通过EventSource API),无需额外依赖。客户端通过标准 HTTP 请求(text/event-stream MIME 类型)建立连接
    在这里插入图片描述
  • 2.自动重连机制:内置重连逻辑(默认 3 秒重试),通过Last-Event-ID实现断点续传,可通过retry字段自定义重连间隔(如retry: 5000)
    在这里插入图片描述
  • 3.消息格式标准化

不足:
1.不适合双向实时交互场景(如聊天、协作编辑)
2.基于HTTP 1.1长连接,每个连接占用一个服务器线程;百万级连接需大量服务器资源(C10K问题);相比WebSocket,资源利用率更低(无多路复用)
3.缺乏二进制数据支持,不适合实时音视频流等场景。
在这里插入图片描述

四.MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是基于 TCP/IP 的轻量级即时通信协议,专为低带宽、高延迟或不稳定网络环境设计,广泛应用于物联网(IoT)、移动应用和实时数据传输场景。类似于rabbitmq,rocketMQ但更简单轻量。其核心特性如下:
在这里插入图片描述

4.1 基本特性

  • 1.轻量级设计:协议头仅 2 字节:最小化传输数据量,适合低功耗设备(如传感器、嵌入式设备)。简单的报文结构:仅定义 6 种消息类型(如 CONNECT、PUBLISH、SUBSCRIBE 等),降低解析复杂度。
  • 2.发布 - 订阅(Publish-Subscribe)模式:消息通过主题(Topic)路由,无需点对点连接,支持多对多通信。主题采用 “/” 分隔的层级结构(如home/room1/temp),支持通配符匹配(+单层级、#多层级)。
  • 3.可靠传输机制:QoS 0:至多一次交付(最快但不保证可靠);QoS 1:至少一次交付(通过 ACK 确认实现);QoS 2:恰好一次交付(保证消息不重复、不丢失,复杂度最高)。支持客户端断开后保留未处理消息,重连后继续传输。
  • 4.低功耗与长连接优化:①心跳机制:检测网络连接状态,避免无效长连接占用资源。②遗言消息(Last Will and Testament, LWT):设备异常断开时自动发布指定消息,通知系统状态变更。
  • 扩展性与跨平台支持

4.2 存在问题

    1. 缺乏内置安全机制: ①需依赖上层协议:本身不提供加密、认证等安全功能,需通过 SSL/TLS(MQTT over WebSocket 或 TCP)或额外插件实现数据加密和身份验证,增加开发复杂度。②权限控制粒度粗:主题级权限管理依赖 Broker 插件(如 Mosquitto 的 ACL 配置),难以实现细粒度用户权限控制。
  • 2.实时性与有序性限制:①QoS 2 的性能开销:高可靠模式下需四次握手确认,延迟较高,不适合高频实时通信场景。②消息顺序保证有限:同一主题内消息按 QoS 等级保证顺序,但跨主题或多客户端场景下无法全局排序。
  • 3.协议功能单一:①无请求 - 响应模式:仅支持单向发布 / 订阅,需通过额外逻辑(如回调主题)模拟请求 - 响应交互(如 RPC 调用)。②缺乏设备管理功能:无法直接实现设备注册、发现、固件升级等物联网设备管理需求,需上层应用层协议补充(如 CoAP 搭配 MQTT)。
  • 4.网络依赖与扩展性瓶颈:①基于 TCP/IP:无法在无 IP 网络(如 NB-IoT、Zigbee)直接使用,需网关转换协议。②Broker 单点风险:中心化架构下,Broker 可能成为性能瓶颈或单点故障源,需复杂的集群和负载均衡方案。

五.常用网络框架服务

关于网络框架的官方维护文档已提供全面的技术细节与操作指南,此处不再重复阐述。以下将聚焦于网络框架的核心适用场景及关键能力特性,结合技术逻辑与应用实践展开说明:

5.1 dubbo

详情参考官方文档
Dubbo 是一款面向微服务的开发框架,致力于解决微服务实践中从服务定义、开发、通信到治理的全链路问题。为此,Dubbo 提供了包括 RPC 通信、与主流应用开发框架的适配、服务治理等在内的多项核心能力,并支持多种远程调用协议。
由于功能体系较为庞大,若本文未能涵盖所有内容,建议查阅官方文档以获取更为详尽的说明。

5.2 netty

Netty 是一个基于 Java 的高性能网络编程框架,广泛应用于 RPC、即时通信、在线游戏和各类中间件等场景。
尽管虚拟线程和协程等新型并发模型已逐步落地并投入使用,Netty 作为基于线程模型构建的网络框架,依然代表了网络编程领域中的经典设计,凭借其成熟性与稳定性,在众多应用中仍具有重要价值。
在这里插入图片描述

5.2.1 基本特性

其核心特性如下:
1.高性能与低延迟: ①I/O 模型优化:基于 NIO(非阻塞 I/O),支持单线程处理多连接,通过 Selector 实现多路复用 ②内存管理:提供池化内存(Pooled ByteBuf)和直接内存(Direct Buffer),减少内存分配 / 回收开销。③零拷贝技术:通过 CompositeByteBuf 等机制避免数据复制,提升传输效率。
2.事件驱动架构:①基于 ChannelPipeline 的责任链模式:将网络操作拆解为 Handler 链,支持动态添加 / 删除处理器,灵活性高。②事件分类清晰:分为连接、读写、异常等事件,用户可自定义 Handler 响应不同事件。
3. 协议支持与扩展性: ①内置协议栈:支持 HTTP/1.x、HTTP/2、WebSocket、gRPC 等主流协议,开箱即用。②自定义协议开发友好:通过编解码器(Codec)机制,可快速实现私有协议。
4. 可靠性与稳定性:①流量控制:支持自适应流量控制,避免网络拥塞和内存溢出。②优雅启停:支持平滑关闭 Channel 和 EventLoop,避免资源泄漏。
5. 社区活跃与生态丰富社区活跃与生态丰富:被 Netty、Dubbo、RocketMQ、gRPC 等知名框架 / 中间件作为底层通信组件。持续优化性能和修复漏洞,社区文档与教程资源丰富。

5.2.2 遗留问题

1.学习门槛较高:①异步编程模型陡峭:需理解 Future、Promise、EventLoop 等异步概念,对新手不友好。②调优复杂度高:内存管理、线程模型、参数配置(如线程数、缓冲区大小)需深入理解才能高效调优。
2.资源占用与性能瓶颈: ①内存占用较高:池化内存虽提升效率,但若使用不当可能导致内存泄漏或碎片问题。②多线程竞争:在多核场景下,EventLoopGroup 的线程负载均衡可能存在竞争,需合理配置线程数。
3.协议升级成本:①HTTP/2 等协议支持依赖版本:低版本 Netty 对新协议(如 HTTP/3)支持有限,需升级版本或自定义实现。②二进制协议兼容性:自定义编解码器需处理协议升级时的兼容性问题,维护成本较高。
4.对非 Java 生态的支持有限

5.2.3 详细介绍和demo

BIO/NIO/Netty网络通信编程
SpringBoot整合Netty整合WebSocket-带参认证

六.其他

本文仅对应用层常用的网络通信协议及框架展开论述。若存在问题还请斧正。若未涵盖你所想的,请留言。

http://www.xdnf.cn/news/13066.html

相关文章:

  • 【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
  • 【堆垛策略】设计方法
  • SAP软件年结科目余额结转详解
  • ShuffleNet 改进:与通道注意力机制(CAM)的结合实现
  • 如何用Coze+Fetch快速构建结构化文档
  • deepbayes lecture2:变分推断
  • 【实证分析】上市公司企业风险承担水平数据集(2000-2022年)
  • Houdini POP入门学习06 - 物理属性2
  • 十二、MySQL 8 新特性底层原理
  • 角色塑造江湖秘籍
  • 火绒弹窗拦截6.0.6.1\5.0.77.1绿色独立版_WinAll
  • 【samba】umount:**** target is busy. ubuntu24.04 卸载挂载点
  • 土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
  • 现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
  • JS红宝书笔记 10.11-10.16 函数
  • Linux云原生安全:零信任架构与机密计算
  • Jinja2核心API详解
  • 轻量安全的密码管理工具Vaultwarden
  • 学习记录之nestjs---基本认识
  • 【2D与3D SLAM中的扫描匹配算法全面解析】
  • 项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
  • Excel表格数据导入数据库
  • 使用DataX同步MySQL数据
  • 【免费赠书5本】《DeepSeek大模型高性能核心技术与多模态融合开发》
  • 【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
  • S5P6818_驱动篇(26)网络驱动
  • Python 如何在Python 3.6上安装PIP
  • JAVA后端开发——多租户
  • Python importlib 动态加载
  • SCRM客户关系管理软件的内容管理功能深度解析