MQTT_介绍_1.1

历史

  • 1999年:MQTT最初由IBM的Andy Stanford-Clark和Cirrus Link的Arlen Nipper开发,用于满足石油和天然气公司在远程地区监控设备的需求。

  • 2006年:IBM发布了MQTT的最初开源实现,但此时MQTT并未获得广泛的关注。

  • 2010年:随着物联网(IoT)的兴起,MQTT开始被更广泛地采用,并逐渐有了更多的开源实现。

  • 2011年:Eclipse基金会启动了Eclipse Paho项目,提供了一系列开源的MQTT客户端库,支持多种编程语言。

  • 2012年:Eclipse基金会启动了Eclipse Mosquitto项目,提供了一个开源的MQTT代理(broker)实现。

  • 2014年:MQTT成为OASIS标准,这标志着它的发展进入了一个新的阶段,并进一步推动了开源社区对MQTT协议的兴趣和参与。

  • 2016年:MQTT 3.1.1版本被正式批准为OASIS标准,这是MQTT的第一个正式标准版本。

  • 2019年:MQTT 5.0版本发布,提供了许多新特性,包括更好的错误处理、共享订阅、消息属性和增强的安全性。开源社区迅速跟进,更新了各种开源实现以支持新版本。

  • 至今:MQTT的开源实现继续发展,如Eclipse Paho和Mosquitto等项目,这些项目的成功和普及直接促进了MQTT协议的广泛应用和发展。同时,其他开源项目如HiveMQ、VerneMQ等也提供了不同的功能和服务,丰富了MQTT的开源生态系统。

特点

 

  1. 轻量级:MQTT设计简洁,消息头很小,可以最小化网络带宽的使用,适合在资源受限的环境中运行,如物联网设备。

  2. 发布/订阅模式:MQTT使用发布/订阅消息模式,允许一个消息被发送到一个主题(topic),并且所有订阅了该主题的客户端都会收到这个消息。这种模式解耦了发布者和订阅者,提高了系统的可扩展性和灵活性。

  3. 服务质量(QoS)级别:MQTT支持三种不同的服务质量级别,以适应不同的网络环境和应用需求:

    • QoS 0:最多一次交付。消息可能会丢失,但不会重复。
    • QoS 1:至少一次交付。消息不会丢失,但可能会重复。
    • QoS 2:确保一次交付。消息不会丢失也不会重复。
  4. 持久会话:MQTT支持持久会话,客户端可以指示代理(broker)存储其订阅信息和未确认的消息,即使客户端断开连接后重新连接,也能恢复会话状态。

  5. 遗嘱消息(Last Will and Testament):客户端在连接到代理时可以指定一个遗嘱消息,如果客户端非正常断开连接,代理会将这个遗嘱消息发布到指定的主题。

  6. 小型传输优化:MQTT协议优化了小型传输,适合在带宽有限和不稳定的网络环境中使用,如移动通信网络或卫星链路。

  7. 安全性MQTT支持多种安全性选项,包括使用TLS(Transport Layer Security)加密传输,以确保数据的安全和隐私。

  8. 跨平台兼容性MQTT可以在多种平台上运行,包括嵌入式系统、服务器、移动设备等,支持多种编程语言。

  9. 易于使用和集成:MQTT的简单性和灵活性使其易于集成到现有的系统和应用程序中,同时也便于开发者快速上手和使用。

  10. 社区支持和开源实现:MQTT有广泛的社区支持,并且有多种开源实现,如Eclipse Paho和Mosquitto,这些实现提供了客户端和代理的代码,可以自由使用和修改。

  11. 适应性强:MQTT协议可以适应各种网络环境和应用场景,包括物联网、移动应用、智能家居、工业自动化等。

  12. 可扩展性:MQTT协议设计允许通过添加新的功能和服务来扩展协议,以适应未来的需求和发展

 MQTT 5.0   与    3.1.1的区别

MQTT 5.0是MQTT协议的第四个正式版本,它在2019年发布,提供了许多新特性和改进,与之前的3.1.1版本相比,MQTT 5.0在性能、功能和安全方面都有显著的提升。以下是MQTT 5.0与3.1.1版本之间的一些主要区别:

 

  1. 增强的认证和授权:MQTT 5.0提供了更灵活的认证和授权机制,支持多种认证方法。

  2. 消息和主题属性:MQTT 5.0增加了对消息和主题属性的支持,允许在发布消息时附加额外的元数据。

  3. 共享订阅:MQTT 5.0允许客户端通过共享订阅的方式来订阅主题,以提高系统的可扩展性和性能。

  4. 响应信息:MQTT 5.0支持响应信息,允许客户端在发布消息时请求一个响应。

  5. 改进的会话管理:MQTT 5.0提供了更精细的会话管理控制,包括会话过期的设置和会话终结的原因。

  6. 增强的错误报告:MQTT 5.0增加了更多的错误代码和原因字符串,使得错误报告更加详细和有用。

  7. 消息重传:MQTT 5.0在QoS 1和QoS 2中引入了消息重传机制,以提高消息的可靠传输。

  8. 流量控制:MQTT 5.0提供了流量控制功能,以避免过载。

  9. 用户属性:MQTT 5.0允许在连接、发布、订阅等操作中添加用户属性,以提供额外的上下文信息。

  10. 更好的性能和可扩展性:MQTT 5.0在设计上考虑了更好的性能和可扩展性,以适应未来的需求和发展。

  11. 兼容性:虽然MQTT 5.0引入了许多新特性,但它仍然保持了与3.1.1版本的兼容性。

 

 MQTT 常用的服务器

 

MQTT服务器(也称为MQTT代理或MQTT broker)是MQTT(Message Queuing Telemetry Transport)协议中的核心组件,负责接收客户端的连接请求、处理客户端的订阅和发布消息请求,并将消息路由到相应的订阅者。以下是几种常用的MQTT服务器:

 

  1. Eclipse Mosquitto:这是一个开源的MQTT服务器,由Eclipse基金会维护。它支持MQTT 3.1、3.1.1和5.0版本,具有高度的可扩展性和可靠性,适用于各种规模的部署。

  2. HiveMQ:这是一个商业化的MQTT服务器,提供企业级的功能和性能。HiveMQ支持MQTT 3.1、3.1.1和5.0版本,并且提供了丰富的插件和扩展功能。

  3. IBM MQTT Server:这是IBM提供的一个MQTT服务器,支持MQTT 3.1和3.1.1版本。它提供了高可用性和安全性,并且可以与其他IBM产品集成。

  4. VerneMQ:这是一个由Erlang社区开发的MQTT服务器,支持MQTT 3.1、3.1.1和5.0版本。它具有高可用性和可扩展性,并且支持多种认证和授权机制。

  5. EMQX:这是一个由EMQ公司开发的MQTT服务器,支持MQTT 3.1、3.1.1和5.0版本。它提供了丰富的插件和扩展功能,以及高可用性和安全性。//有大量的中文资料并且开源

 官网

Eclipse Mosquitto™ 开源 MQTT 代理

EMQX官网 

 

 MQTT 发布/订阅模式介绍

发布者(Publisher)//发信息

  • 发布消息:发布者是发送消息的客户端,它将消息发布到一个特定的主题(Topic)。
  • QoS级别:发布者可以选择不同的服务质量级别(QoS Levels),以控制消息的可靠传输:
    • QoS 0:最多一次(At Most Once) - 消息可能会丢失,但不会重复发送。
    • QoS 1:至少一次(At Least Once) - 消息不会丢失,但可能会重复发送。
    • QoS 2:精确一次(Exactly Once) - 消息不会丢失也不会重复发送。

订阅者(Subscriber)//接收信息

  • 订阅主题:订阅者是接收消息的客户端,它可以订阅一个或多个主题。
  • 接收消息:订阅者会接收所有发布到其订阅主题的消息。
  • QoS级别:订阅者也可以指定它希望接收消息的QoS级别。

代理(Broker)//服务器

  • 消息路由:代理是MQTT的核心组件,负责接收发布者的消息,并将消息路由到订阅该主题的订阅者。
  • 持久会话:代理可以存储订阅者和发布者的会话信息,以便在网络断开后重新连接时恢复会话状态。

遗嘱消息(Last Will and Testament)

  • 发布遗嘱:当客户端断开连接时,如果配置了遗嘱消息,代理会发布一个消息到指定的主题,通知其他客户端该客户端已经断开。

 主题(Topic)

  • 主题是 MQTT 进行消息路由的基础,它类似 URL 路径,使用斜杠 / 进行分层,比如 sensor/1/temperature。一个主题可以有多个订阅者,代理会将该主题下的消息转发给所有订阅者;一个 主题也可以有多个发布者,代理将按照消息到达的顺序转发。

 

 

 

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值