ribbon netty,netty 源码分析
关于mqtt、mosquito的技术交流,可入群:221779856
本文由mtdjc撰写,转发请标注原址:
blog.csdn.net/houjixin/article/details/21461225 33558号
一、 Mosquitto简介
Mosquitto是一款开源的消息代理软件,实现了MQTT v3.1消息推送协议,支持轻量级、可分发/订阅的消息推送模式。是目前广泛使用的低功耗传感器。
Mosquitto采用发布/订阅模式实现MQTT协议。这种设计模式在服务器程序中管理通信终端之间的关系,大大减少了客户端的开发和维护。
1.1、 mqtt协议简介
队列遥测传输(mqtt)是IBM开发的即时通讯协议,可以成为物联网的重要组成部分。对于一些APP应用来说,这个协议可以用来和客户端保持长时间的连接。关于mqtt更详细的介绍,请访问其官方网站:http://mqtt.org/.
其他版本的源代码:http://mosquitto.org/files/source/
1.2、 出版/订阅模式简介
发布/订阅模型定义了如何向名为topic的节点发布和订阅消息。这个话题可以看作是消息的传输媒介,发布者向其发布消息,订阅者向其订阅消息。这种模型使得消息订阅者和消息发布者相互独立,可以保证消息的发布没有联系。
在Tcp协议中,Tcp连接只提供一对一的可靠传输。比如主机A和B通信时,发起Tcp连接的一方只需要知道对方的ip地址和端口号,如下图1-1所示。
图1-1一对一的交流
每个tcp连接由以下五个因素决定:
发送源ip地址、发送源端口号、目ip地址、目的端口号、通信协议
在实际的程序开发过程中建立连接后,通信双方可能需要保持连接,以备下次数据传输时使用。另外,通信终端的数量可以是多个,如下图1-2所示,每个终端需要维护所有的通信关系。
图1-2多对多通信
在这种情况下,每个参与通信的客户端要维护的连接数将变得巨大,这对程序的开发和实现非常不利。发布/订阅模型是这个问题的解决方案。通过增加一个中间层,中间层可以保持这种多对多的关系,如下图1-3所示。这个中间层通常被称为服务器。
图1-3中间层多对多通信的增加
通过增加一个中间层服务器,每个客户端只需要保持与服务器的连接,而客户端之间的关系由中间服务器维护。这种设计模式将复杂的通信关系维护从客户端分离出来,使得客户端的开发和维护变得非常容易。
这就是蚊子项目的工作原理。在蚊子程序中,客户端之间的关系是通过订阅树来维护的。
1.3、 Mosquito
蚊子源目录结构介绍。
-蚊子-1.2
-客户端
-示例
- mysql_log
-温度转换
-安装程序
-图书馆
- cpp
- jsws
- python
-徽标
-男人
-阿宝
-利莫斯基托
-蚊子
- mosquitto.conf
-莫斯基托酒吧
-莫斯基托_sub
- mosquitto-tls
- mqtt
-杂项
-当前成本
- gnome面板
-安全性
-服务
-莫尼特
- svscan
-暴发户
- src
-数据库转储
-测试
-经纪人
- c
-图书馆
- c
- cpp
- python
- python3
- ssl
-德摩卡
-鲁特卡
-签名
值得注意的目录有三个:/mosquito-1.2/src、/mosquito-1.2/lib和/mosquito-1.2/client,其中主要是src和lib目录
Mosquito的源代码和相关文档可以从官网获得。官方网站是http://mosquitto.org/.
Mosquitto客户端和服务器执行命令。
[1]发布者客户端执行命令的示例:/mosquitto _ pu B-h 192 . 168 . 6 . 243-p 1883-t 111 -m 这是杰森。后-u111-p111
[2]由订户客户端执行的命令的示例:/倔强的黄蜂60 -d -c -u hjx -P hjx
[3]Mosquitto服务器执行的命令示例:/mosquitto