http、websocket与MQTT协议

news/2025/2/23 5:44:06
http://www.w3.org/2000/svg" style="display: none;">

网络通讯协议

httpwebsocketMQTT_2">1、httpwebsocket与MQTT协议

核心区别
特点httpwebsocketMQTT协议
协议模型请求-响应(单项)全双工双向通讯发布/订阅(多对多)
连接状态无状态(断连接或长连接需要要手东维护)持久长连接,需要手动断开基于Broker的之久连接
头部开销高(每次请求携带完整头部信息)低(握手后仅需2-14字节控制数据帧)极低(最小2字节)
实时性低(依赖轮询或长连接模拟)高(毫秒及延迟)极高(依赖Qos级别)
设备资源需求高(需要处理复杂协议栈)中等(需要维护长连接)极低(专为资源受限设备涉及)
典型应用网页加载、REST API实时聊天、在线游戏、web通讯物联网设备通讯、工业监控

2、优缺点

  • 1、http
    • 优点:
      • 兼容性极强:所有浏览器和服务器原生支持
      • 无状态特想:天然支持水平宽展和负载均衡
    • 缺点:
      • 高延迟:频繁建立连接导致资源浪费
      • 头部冗余:每次请求需要携带完整的Cookie和Headers,带宽效率低
    • 场景:静态资源加载(HTML/JS/CSS)、表单提交、低频API交互
  • 2、websocket
    • 优点:
      • 双向实时通讯:服务器和客户端都可以主动推送数据,无需客户端轮询
      • 低协议开销:相比HTTP长轮询,能寄生90%的贷款
    • 缺点:
      • 连接维护成本高:需要处理心跳检测、冲连机制
      • 防火墙限制:部分企业网络可能拦截非标准端口,需要WSS加密
    • 场景:实时聊条、股票行情推送、多人在线游戏
  • 3、MQTT:
    • 优点:
      • 超低资源消耗:最小消息头仅需2字节
      • 高可靠性:支持Qos分级(0-最多一次;1-至少一次;2-恰好一次)
      • 大规模扩展:通过Broker集权支持百万级设备连接
    • 缺点:
      • 协议复杂度高:需要部署Broker服务器,开发成本高
      • 实时性受限:Qos2时严格限制一次交付会引入额外延时
    • 场景:智能家居传感器、车连网数据同步、工业物联网监控

3、典型应用场景

1、HTTP

  • 网页加载:浏览器请求HTML/CSS/JS等静态资源
  • RESTful API:移动端与后端服务的数据交换(用户登陆、订单查询)
  • 文件传输:下载图片、文档等未实时数据

2、WebSocket

  • 实时通讯:在线客服系统、视频会议中的音视频传输
  • 交互式应用:协同编辑工具(如腾讯文档)、实时表盘更新
  • 高频数据推送:体育赛事比分直播、在线教育白板互动

3、MQTT

  • 物联网设备:智能家居中温湿度传感器数据上传
  • 工业监控:工厂PLC设备状态采集与远程控制
  • 车辆汪:车辆GPS位置同步、故障争端数据上传

4、混合使用建议

现代系统常结合多种协议以平衡性能与成本:

  1. HTTP + WebSocket
    • 用 HTTP 加载初始页面,WebSocket 处理实时聊天
  2. MQTT + WebSocket
    • 物联网设备通过 MQTT 上报数据,WebSocket 向用户端推送告警
  3. HTTP API 网关 + MQTT Broker
    • 设备管理接口使用 HTTP,设备通信使用 MQTT 以降低带宽
5、数据交换格式

XML

  • 优点
    • 可扩展性强,支持自定义标签和树形结构
    • 适合复杂数据表示(如设备配置、跨平台数据交换)
    • 通过解析器(如xmltodict)可轻松提取数据
  • 缺点
    • 冗余标签导致数据体积大,传输效率低;
    • 语法严格,容错性差。
  • 场景:工业协议(如NETCONF)、跨系统数据交换

JSON(JavaScript对象表示法)

  • 优点
    • 轻量级,结构简洁(键值对、数组),兼容JavaScript
    • 解析速度快,适合REST API和Web应用
    • 支持Python等语言的序列化与反序列化
  • 缺点
    • 不支持注释,数据类型有限(如无日期类型)
    • 严格的语法要求(如双引号、true/false)。
  • 场景:前后端交互、物联网设备状态同步。

YAML(YAML Ain’t Markup Language)

  • 优点
    • 可读性极强,通过缩进表示层级
    • 支持复杂数据类型(对象、数组、纯量)
    • 适合配置文件和文档存储。
  • 缺点
    • 严格的缩进要求易导致格式错误;
    • 传输效率低,不适合高频通信。
  • 场景:Kubernetes配置、自动化脚本参数定义。

总结

  • 选择 HTTP:需兼容性优先、无实时性要求的场景。
  • 选择 WebSocket:需双向实时通信且客户端为浏览器/移动端。
  • 选择 MQTT:资源受限设备、大规模物联网部署或需高可靠消息传递的场景

http://www.niftyadmin.cn/n/5863026.html

相关文章

WPS PPT插入各种线型形状(如画直线)的时候总是有箭头,如何还原成只画直线

WPS PPT插入各种线型形状(如画直线)的时候总是有箭头,如何还原成只画直线 文章目录 WPS PPT插入各种线型形状(如画直线)的时候总是有箭头,如何还原成只画直线一、问题出现的原因二、解决方法 在使用 WPS 演…

运维Ansible面试题及参考答案

目录 简述 Ansible 的工作原理,它是如何实现对远程主机管理的? Ansible 是基于什么语言开发的?这门语言的特性对 Ansible 的功能实现有哪些帮助? 解释 Agentless 在 Ansible 中的含义,与基于 Agent 的自动化工具相比,优势体现在哪? Ansible 中的 Inventory 文件是什…

Linux7-线程

一、前情回顾 chdir();功能: 函数用于改变当前进程的工作目录。 参数:路径(Path):这是一个字符串参数,表示要切换到的目标目录的路径。 返回值: 成功:在成功改变当前工作目…

MongoDB应用设计调优

应用范式设计 什么是范式 数据库范式概念是数据库技术的基本理论,几乎是伴随着数据库软件产品的推出而产生的。在传统关系型数据库领域,应用开发中遵循范式是最基本的要求。但随着互联网行业的发展,NoSQL开始变得非常流行,在许多…

AI: IDE Trae创新探讨与Cursor的对比分析

随着人工智能技术的快速发展,AI驱动的集成开发环境(IDE)正在改变开发者的编码方式。通过智能代码补全、实时错误检测和自动化重构建议,这些工具显著提高了开发效率和代码质量。在这一领域中,Trae作为一款新兴的AI IDE&…

Elasticsearch除了用作查找以外,还能可以做什么?

前言 Elasticsearch用于实时数据分析、日志存储、业务智能等。还有日志与监控、多租户和安全性。以及应用场景包括日志分析、公共数据采集、全文搜索、事件数据、数据可视化。处理错误拼写和支持变体,不过这些可能还是属于搜索优化。企业搜索、日志管理、应用监控、…

Linux----线程

一、基础概念对比 特性进程 (Process)线程 (Thread)资源分配资源分配的基本单位(独立地址空间)共享进程资源调度单位操作系统调度单位CPU调度的最小单位创建开销高(需复制父进程资源)低(共享进程资源)通信…

DeepSeek掘金——DeepSeek-R1+ML混合欺诈检测

DeepSeek-R1+ML混合欺诈检测 在数字交易占主导地位的时代,欺诈已成为一种复杂且无处不在的威胁。到2026年,全球欺诈损失预计将达到430亿美元,仅在美国,每14秒就发生一起身份盗窃案。随着犯罪分子利用人工智能(AI)发起前所未有的攻击,企业面临一个紧迫的问题:他们如何才…