MQTT(Message Queuing Telemetry Transport)由IBM于1999年开发的一种基于"发布订阅模式"的轻量级的消息传输协议!
发布订阅模式是一种传统的客户端-服务器架构的替代方案
,因为一般传统的客户端-服务器是客户端能够直接和服务器进行通信完成消息的传输。发布订阅模式会将发送消
息的发布者publisher与接收消息的订阅者subscribers进行分离
,publisher与subscribers 并不会直接通信,他们甚至都不清楚对方是否存在,他们之间的交流由
第三方组件broker
1、空间解耦:publisher 与 subscriber 并不知道对方的存在。
2、时间解藕:publisher 与 subscriber 并不一定需要同时运行。
MQTT它在物联网
它的主要特点包括:
1、轻量级:物联网设备通常在处理能力、内存和能耗方面受到限制。MQTT开销低、报文小
的特点使其非常适合这些设备,因为它消耗更少的资源,即使在有限的能力下也
能实现高效的通信。
2、可靠:物联网网络常常面临高延迟或连接不稳定的情况。MQTT支持多种QoS等级、会话感知和持久连接
,即使在困难的条件下也能保证消息的可靠传递,使其非常适合
物联网应用。
3、安全通信:安全对于物联网网络至关重要,因为其经常涉及敏感数据的传输。为确保数据在传输过程中的机密性,MQTT提供传输层安全(TLS)和安全套接层(SSL)
加密功能
。此外,MQTT 还通过用户名/密码凭证或客户端证书提供身份验证和授权机制,以保护网络及其资源的访问。
4、双向通信:MQTT的发布-订阅模式为设备之间提供了无缝的双向通信方式。客户端既可以向主题发布消息,也可以订阅接收特定主题上的消息
,从而实现了物联网生态
系统中的高效数据交换,而无需直接将设备耦合在一起。这种模式也简化了新设备的集成,同时保证了系统易于扩展。
5、语言支持:物联网系统包含使用各种编程语言开发的设备和应用。MQTT具有广泛的语言支持
,使其能够轻松与多个平台和技术进行集成,从而实现了物联网生态系统中
的无缝通信和互操作性。常见编程语言的支持:PHP、Node.js、Python、Golang、Node.js、java等。
MQTT客户端
任何运行MQTT客户端库[MQTT开发工具包]
的应用或设备都是MQTT客户端。例如使用MQTT的即时通讯应用是客户端,使用MQTT上报数据的各种传感器是客户端,各种MQTT
测试工具也是客户端。
MQTT Broker
MQTT Broker是负责处理客户端请求的关键组件,包括建立连接、断开连接、订阅和取消订阅等操作,同时还负责消息的转发。一个高效强大的MQTT Broker能够轻松应
对海量连接和百万级消息吞吐量,从而帮助物联网服务提供商专注于业务发展,快速构建可靠的MQTT应用。
主题
MQTT主题本质上是一个UTF-8编码的字符串,是MQTT协议进行消息路由的基础。可以理解为就是通过主题对消息进行分类
。MQTT主题类似URL路径,使用斜杠/
进行分
层:
chat/room/1
sensor/10/temperature
为了避免歧义且易于理解,通常不建议主题以/
开头或结尾,例如 /chat
或 chat/
。MQTT主题不需要提前创建。MQTT 客户端在订阅或发布时即自动的创建了主题,开发者无需再关心主题的创建,并且也不需要手动删除主题。
c#中string和StringBuilder直接看看执行速度。(2).String类型累计赋值Test  ...
Application 对象用于存储和访问来自任意页面的变量,类似 Session 对象。不同之处在于所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。很多的书籍中介绍的Application对象都喜欢以统计在线人数来介绍Application 对象...
1.远程仓库的协作模式开发者把自己最新的版本推到线上仓库,同时把线上仓库的最新代码,拉到自己本地即可2.注册git帐号国外: http://www.github.com国内: http://git.oschina.net2.在码云创建项目,不要初始化readmegit push https://gi...
git pull https://git.oschina.net/392223903/learn.git master 换为您的git地址...
日志查看:git log版本切换:方式1:git reset --hard HEAD^ 倒退一个版本git reset --hard HEAD^^ 倒退两个版本方式2:(版本号的形式,建议版本号码补充完...
public static string GetMD5(string str) { //创建MD5对象 MD5 md5 = MD5.C...