Page 34 - 网络电信2019年10月刊下
P. 34
解 决 方 案
时间收到大量请求,即使正常访问也会增大服务端和客户端开 到指定文件夹,然后解压文件,并进行broker相关属性配置后
销;二是,无法确认到达率。 启动服务。其次服务端要采用负载均衡和高可靠设置,建议使
方法二:SMS推送,服务器有新消息时,向客户端发送一条 用ZooKeeper和LevelDB的主-从模式。
特殊的短信的指令,终端获取后立即向服务器获取信息0。SMS 这里要注意的是如果为MQTT的部署主机不进行系统参数优
的优点是实时性较好,缺点是成本较高,每条消息都需要短信 化,则达不到预定效果,有几个参数需要修改(给出一些典型
费用,另外短信有可能被因为短时间密集发送或者其他原因被 设置):
安全软件拦截。 修改系统所有进程可打开的文件数量
方法三:推送方式,在client端和server端之间形成永久 sysctl -w fs.file-max=2097152
连接,通过长连接进行实时推送。 sysctl -w fs.nr_open=2097152
> vi /etc/sysctl.conf
三、MQTT协议介绍 fs.file-max = 2097152
MQTT是一个由IBM主导开发的,应用于物联网传输协议, fs.nr_open = 2097152
用于轻量级的消息传输,保障了在带宽不足和网络稳定性不够 设置服务最大文件句柄数
的网络环境中提供可靠的网络服务0。它具有以下的核心设计特 vim /etc/systemd/system.conf
点: DefaultLimitNOFILE=1048576
特性一:低开销,MQTT每消息标题可以缩短至只有2个字 持久化设置允许用户/进程打开文件句柄数:
节。而它的原始协议,MQ和HTTP都拥有高得多的消息开销0。 ulimit -n 1048576
特性二:对网络容忍度高,MQTT能从断开等故障中恢复0。 > vim /etc/security/limits.conf
特性三:专门为低功耗场景设计,支持百万级客户端,屏 设置TCP 协议栈网络参数
蔽客户端平台差异。 > vi /etc/sysctl.conf
特性四:防火墙容错性高。MQTT可以封装在同一个socket net.core.somaxconn=32768
连接中,显示为一个 HTTP升级请求,从而允许在这些情况下运 net.ipv4.tcp_max_syn_backlog=16384
行0。 net.core.netdev_max_backlog=16384
MQTT协议具有许多不同的功能,它与消息内容没有任何关 设置可用端口范围:
系。它通过 TCP/IP运行,TCP/IP可以提供基本网络连接0。 net.ipv4.ip_local_port_range='1000 65535'
MQTT为传递信息提供了几种服务质量等级: net.core.rmem_default=262144
“AtMostOnce”:根据底层Internet协议网络尽可能多 net.core.wmem_default=262144
地传递消息。消息可能会丢失。例如,在环境监测系统中传输 net.core.rmem_max=16777216
温度等数据中使用这种服务质量等级,不管是个别的读数丢失 net.core.wmem_max=16777216
了,还是有了新的数据立即更新,最终结果都不受影响。 net.core.optmem_max=16777216
“AtLeastOnce”:消息一定会送达,缺点是有重复递送的 #sysctl -w
可能。 net.ipv4.tcp_mem='16777216 16777216 16777216'
“Just Once”:确保你只收到一条信息。最慢但是最有效 net.ipv4.tcp_rmem='1024 4096 16777216'
的一种QoS等级。 net.ipv4.tcp_wmem='1024 4096 16777216'
总体来看,在专网条件下,采用基于MQTT协议完成了大规
四、机顶盒MQTT连接方案 模机顶盒的互联,实现了消息传递的能力,进而达到了物联网
在机顶盒中预置基于MQTT的长连接插件,内网云端部署 延展和智能家居的业务需求。
MQTT服务,机顶盒既可以通过超低功耗连接到MQTT服务端,而
服务端使用较少的硬件投入承载百万级用户连接。
服务器采用负载均衡模式采用负载均衡调度主机和多台部
署了MQTT服务(broker)的主机组成,部署了MQTT服务的主机
根据机顶盒链接数随时可以在线扩充,不影响业务使用。机顶
盒在开源软件基础上形成一个连接插件,并注册为服务,监听 参考文献
开机广播后启动MQTT client功能,与MQTT server(broker) [1] 勇敢的心,《通讯协议与即时通讯》,简书,https://www.
建立长连接,并上报自己的状态,同时接收server发来的订阅 jianshu.com/p/ca4aeabf55f6 ,2018.3.1
主题消息,然后进行处理(本地显示或者进行相关操作)。 [2] 贺大伟,《玩转物联网之MQTT》,博客园 ,https://www.
接下来就服务端和机顶盒端涉及问题稍作展开说明。首 cnblogs.com/jjg0519/p/7398868.html,2017.8.20
先是服务端MQTT服务可以采用Apache ActiveMQ等开源软件做 [3] 开发快, 《物联网项目开发必读 深度分析MQTT 协议优缺点》,
进一步优化后进行部署,以大家熟知的Apache pollo(Apache 电子发烧友论坛,http://bbs.elecfans.com/forum.php?mod=vie
activeMQ类似)为例,均为从官方网站下载相关代码,上传tar包 wthread&tid=911474&extra=page=3&typeid=470,2017.8.20
58 网络电信 二零一九年十月