MQTT Broker Mosquitto(二)数据结构
本文主要介绍一下Mosquitto中用到的比较重要的数据结构,为之后的流程处理讲解奠定基础。为了清晰,结构体展示时只保留重要成员。
本文主要介绍一下Mosquitto中用到的比较重要的数据结构,为之后的流程处理讲解奠定基础。为了清晰,结构体展示时只保留重要成员。
写这个系列文章其实出发点有很多。一方面是很早之前看到了一个开源物联网云平台项目,叫做iotgo,有兴趣的同学可以去搜索后了解一下。iotgo使用的是node.js语言编写,是一个物理网设备管理的平台。我抽出了十一假期研究了一下它的源码:它使用angular做前端,前端通过websocket实时从后台获取设备信息,所有的设备通过socket与平台通讯。但是这个框架我还是觉得很别扭,可能在我看来一个网站只是一个用户接口而已,不应与设备直接打交道,于是我想起来了MQTT(只是一个协议),当时实验室有同学在用这个做项目。设备可以通过MQTT协议与服务器进行通信,然后网站只需要与代理服务器进行交互信息。目前开源的MQTT服务器众多,但性能参差不齐,比较常用的是Mosquitto,EMQTT等等。Mosquitto被广泛地应用在各种研究和实际项目,但在阅读其源码的过程中,发现它还有很多性能可以提升的地方。所以提升MQTT服务器性能成了我的毕业设计,我想将自己理解和修改Mosquitto过程记录下来分享出来,这些是我写这系列文件的初衷之一。
Apollo是一款由Apache研发的一款MQTT broker。借用官方的介绍:ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. It accomplishes this using a radically different threading and message dispatching architecture. Like ActiveMQ, Apollo is a multi-protocol broker and supports STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets.