物联网通信是物联网的一个核心内容,目前物联网的通信协议并没有一个统一的标准,比较常见的有 MQTT、CoAP、DDS、XMPP 等,在这其中,MQTT(消息队列遥测传输协议)应该是应用最广泛的标准之一。其主要提供了订阅/发布两种消息模式,非常简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发。
发展到今天,MQTT Broker 也已经有了诸多实现,包括 EMQ X、HiveMQ、Mosquito 等等。物联网数据采集涉及大量设备接入和海量的时序数据传输,这些 MQTT Broker 能够与 TDengine 完美组合,应对物联网场景中的海量时序数据的传输、存储和计算。
前段时间,在EMQ X 研发团队和 TDengine 研发团队的共同努力下,我们已经实现了EMQ X 通过规则引擎将设备消息存储到 TDengine 中(点击这里,阅读详细内容)。在双方开源社区都获得了积极的反馈。
TDengine 社区也有不少伙伴都在问,是否支持从其他 MQTT Broker 存数据到 TDengine 中。鉴于 TDengine 是开源且包容的,我们打算,让这个问题,从社区中来,到社区中去。未来我们将举办一系列 MQTT 挑战赛,第一期就从 HiveMQ 开始。本期挑战最终要向开源社区小伙伴交付一个 HiveMQ extension:使 HiveMQ 使用 TDengine 存储收到的数据。
当然,奖金也是非常丰厚的,我们不是标题党,只要你的程序符合我们的接收标准,TDengine官方奖励一万元人民币,并且邀请你加入 TDengine Contributor 俱乐部。
你需要做到什么?
开发要求:
1. 支持 TDengine 2.0 RESTful API 和 JDBC API 进行数据存储
2. 支持 HiveMQ v4,遵守 HiveMQ extension 开发规范,详见:
https://www.hivemq.com/docs/hivemq/4.5/extensions/introduction.html
3. 符合HiveMQ 的 extension 测试要求,并提供测试报告。详见:
https://www.hivemq.com/docs/hivemq/4.5/extensions/testing-extension.html
4. 长时间运行无内存泄漏。
5. 支持 Docker 部署环境
其他要求:
1. 提供完整的文档,描述代码逻辑架构、编译步骤和 TDengine / HiveMQ 共同部署方法。
2. 代码需要以 Apache 或 MIT 或 BSD License 之一开源。
如何验证你的工作?
验证方法:
1. 使用 HiveMQ Community Edition 的 Docker 镜像部署 HiveMQ MQTT broker:
HiveMQ Community Edition 下载地址:
https://github.com/hivemq/hivemq-community-edition
2. 使用 TDengine 2.0 社区版进行数据落盘存储:
TDengine 2.0 社区版下载地址:
https://www.taosdata.com/products/#community-edition-link
3. 使用开源软件MQTTLoader进行 MQTT 多客户端消息发送压力测试(为便于测试,使用本机或者局域网环境进行压力测试):
MQTT Loader 下载地址:
https://github.com/dist-sys/mqttloader
如何提交你的作品?
交付要求:
1. 按照上述开发要求实现的HiveMQ extension;
2. 按照上述其他要求编写的完整且详尽的文档。
提交方式:
开发者需在竞赛期限内提供 extension 源代码和文档(MarkDown格式),提交 Pull Request 到 TDengine 在 GitHub 的 Repo。
你将获得什么?
优胜奖:
1. 优胜者获得现金奖励 10,000 元 RMB(税前);
2. 成为 TDengine Contributor 俱乐部成员,受邀参与 TDengine 线上、线下社区活动。
*优胜者:以代码被TDengine接收为准,评选出一名。
积极参与奖:
所有参加竞赛并提交作品者均会获得 TDengine 纪念礼品一件。
重要时间节点
竞赛起始时间:9月 8 日
作品提交截止时间:10 月 7 日
作品评选时间:10 月 8 日~ 10月 22 日
参赛的同学,可以微信搜索“tdengine”添加小T为好友,备注“mqtt”,方便提交作品后与我们取得联系。