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 客户端在订阅或发布时即自动的创建了主题,开发者无需再关心主题的创建,并且也不需要手动删除主题。
public static string GetMD5(string str) { //创建MD5对象 MD5 md5 = MD5.C...
private const string fantizi = "高久峰是個程序員"; private const string jiantizi = "高久峰是个程序员...
1.文件redis-2.6.14.tar.gz的上传 /home/john/创建rdtar文件夹 上传redis-2.6.14.tar.gz至rdtar文件夹 2.解压文件 cd /home/john/rdtar tar &n...
1.设置key的value set name gao2.获取key的value get name3.删除key del key1 key2 ... Keyn4.修...
1.set key value [ex 秒数] / [px 毫秒数] [nx] /[xx]如: set a 1 ex 10 , 10秒有效Set a 1 px 9000 , 9秒有效注: 如果ex,px同时写,以后面的有效期为准如 set a 1 ex 100 px 9000...
1.lpush key value 作用: 把值插入到链接头部(左边)2.rpush key value 作用: 把值插入到链接尾部(右边)3.lrange key start stop 作用: 返回链表中[start ,stop]中的元素 规律: 左数从0开始,...