分布式开源物联网MQTT消息服务器EMQ怎么做数据的存储?

论坛 期权论坛 期权     
梁华盛   2018-9-24 01:03   9859   4

刚接触mqtt:

1、想用 EMQ 做 MQTT代理服务器Broker ;

2、百万的终端设备采集数据通过 MQTT 协议public到Broker

3、EMQ 好像已经做了消息持久化到schema.DAT一个文本文件,这些应该是待转发的缓存消息

问题:

我需要对所有收到的传感器的消息(温湿度,浓度等等数据)做存储和逻辑处理,想存到MySQL,我是需要单独开个 MQTT CLIENT 订阅所有消息吗?

用一个 MQTT Client 订阅通配符主题 # ,收到后将数据做异步 Mysql 存储,这样可行吗?大量的传感器设备到Broker,Broker全部推送到这一个 MQTT Client来对消息分析并存储,这能处理的过来吗?这想法不知道对不对,Broker里面有没有提供数据处理的接口?可以从Broker直接对数据处理,高手过来指点一下,谢谢了

分享到 :
0 人收藏

4 个回复

倒序浏览
2#
toplinq  3级会员 | 2018-9-24 01:03:25

谢邀,并不是这个领域的专家,所以我提供的只是浅显的答案

EMQ - 百万级开源MQTT消息服务器 - EMQ - 百万级开源MQTT消息服务器 2.2-beta.1 文档

从以上文档来看,EMQ是消息服务器,既然是MQTT消息服务器,当然可以有client来订阅,当然只有一个订阅者也是可以的,这样可以变成异步,也可以去耦合,降低开发难度,但是消息服务器分发的作用没有太多的体现,考虑到扩展,直观地看上去是可以的。

3#
2pw2  1级新秀 | 2018-9-24 01:03:27

emqtt商业版本是带消息持久化的,开源版本需要自己做。

我们也在使用emq,目前方案是做一个插件连接到kafka,把收到的消息都丢进去。后端在订阅kafka消息,这样可以接入spark等异步处理消息。当然,直接从emq到数据库也是可行的,不过性能肯定没有到中间件好。

4#
徐喵喵  1级新秀 | 2018-9-24 01:03:28

我只是在物联网行业做公众号的,为什么要给我推荐这么技术的问题呢~对物联网rfid感兴趣的可以关注公众号哈

5#
清哥哥  1级新秀 | 2018-9-24 01:03:29

之前蛋疼是用EMQ还是Mosquitto,后面发现Mosquitto好像也不能直接挂上Mysql ,于是铁了心用EMQ。目前想在EMQ上插入MySQL 我知道的方法如下。

(1)实现存储的最简单方法是添加一个订阅通配符主题的附加客户端(在MQTT中恰好是)。这可确保客户端接收代理分发的所有消息。现在,客户端可以在每次消息到达时将消息持久保存到MySQL数据库。如题主所说。但是缺点也是明显的。订阅的越多越多,客户端压力越来越大不说,还需要处理断线重连问题。The missing piece between MQTT and a SQL database in a M2M landscape请用力戳这里。有文 讲解了一丢丢。

(2)EMQ提供了钩子函数,可以借助钩子函数+Dreamfactory 方式实现。具体步骤请戳这里 raviyp.com/embedded/233 有文有视频

(3)按照EMQ官方文档,用erlang 自己写插件。写插件和插入插件见官方文档扩展插件 (Plugins) - EMQ - 百万级开源MQTT消息服务器 2.2-beta.1 文档

(4)买买买。没有什么问题是用钱解决不了的,如果有,多花点钱。EMQ直接提供了EMQ-mysql插件收费版本。见官网下二维码。

———————————————————————————————————————

个人建议。第2/3/4方式较为可取,第1方式操作过于骚气,后期维护都是坑。不推荐。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP