写这个系列文章其实出发点有很多。一方面是很早之前看到了一个开源物联网云平台项目,叫做iotgo,有兴趣的同学可以去搜索后了解一下。iotgo使用的是node.js语言编写,是一个物理网设备管理的平台。我抽出了十一假期研究了一下它的源码:它使用angular做前端,前端通过websocket实时从后台获取设备信息,所有的设备通过socket与平台通讯。但是这个框架我还是觉得很别扭,可能在我看来一个网站只是一个用户接口而已,不应与设备直接打交道,于是我想起来了MQTT(只是一个协议),当时实验室有同学在用这个做项目。设备可以通过MQTT协议与服务器进行通信,然后网站只需要与代理服务器进行交互信息。目前开源的MQTT服务器众多,但性能参差不齐,比较常用的是Mosquitto,EMQTT等等。Mosquitto被广泛地应用在各种研究和实际项目,但在阅读其源码的过程中,发现它还有很多性能可以提升的地方。所以提升MQTT服务器性能成了我的毕业设计,我想将自己理解和修改Mosquitto过程记录下来分享出来,这些是我写这系列文件的初衷之一。
Mosquitto是什么
Eclipse Mosquitto™ is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for “Internet of Things” messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino.
Eclipse Mosquitto™是一个开源(EPL/EDL协议)的MQTT 3.1和3.11消息代理服务器。MQTT是一个基于发布/订阅模式的轻量级消息引擎。它非常适用于物联网场景,比如那些低功耗传感器、移动设备例如手机、嵌入式电脑和类似Arduino这样的微处理器。