前言:最近在研究车联网场景下,大量车辆会同时在线,并且会同时上传数据,这就需要能支持大量的连接数以及大量的数据吞吐的构件。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。MQTT现在主要用于即时通讯,物联网M2M,物联网采集等。本文就社区上常见的开源MQTT服务器在常见操作系统上的搭建做详细介绍。目前一些开源MQTT服务中间件有:
1)EMQTT:github 3265 stars
2)Mosquitto:github 1645 stars
3)Apollo:ActiveMQ的升级版,github 109 stars,但是该项目已经有3~4年没有更新。而其号称的老版本ActiveMQ反而更新更加频繁。
以上来自于:常见MQTT服务器搭建与试用
MQTT其实是一个适用于物联网场景(低带宽,网络不稳定等)的通讯协议。而实现了MQTT协议的常用的服务器有上面三种,我选择了第一种emq服务器,是国产开源的,更新较为频繁,官方压测数据单节点达到百万连接等。
MQTT服务器在我理解是要解决两个关键问题的:
1,大量的物联网设备同时连接数。
2,大量物联网设备连接上后的数据转发能力(MQTT服务器本身不存储数据,只做转发,比如转发到kafka,或者数据库)。
MQTT是一种订阅、发布的通讯模型,通过订阅和发布topic进行通讯,和kafka这些消息中间件较为类似。不同的是mqtt客户端与mqtt服务端可以设定服务质量Qos来确保数据按照预期传输,还有遗言等功能。mqtt客户端既可以是订阅者,也可以是发布者,而mqtt服务端就是上面说的这些开源组件,主要作用就是和大量mqtt服务端建立连接,并转发大量mqtt服务端发送的消息。