相关概念
- MQTT 是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT 是专门针对物联网开发的轻量级传输协议。MQTT 协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。
- Gateway 中文意思为网关,表示一个网络连接另一个网络的关口。在这里可以理解为,接收前端设备产生的数据,对数据进行存储、转换或其它处理,然后将数据发送至云端的处于数据传输中枢的设备。
示例简介
本示例用来介绍 Informix 物联网应用的简单实现,通过该示例可以直观的理解 Informix 在物联网应用中扮演的角色及其价值。
模拟场景介绍
边缘设备作为 Gateway 来收集传感设备发出的实时温度和湿度数据,在对收集的数据进行相应分析或处理后将其传输到 Bluemix 云平台进行存储和分析。
技术架构
边缘设备作为 Gateway 来收集传感设备发出的实时温度和湿度数据,在对收集的数据进行相应分析或处理后将其传输到 Bluemix 云平台进行存储和分析。
图 1. 技术架构
IoTF (Internet of Things Foundation) 为 Bluemix 上的 MQTT Server,Gateway 上的应用程序和 Bluemix 上的应用程序可以注册成为 MQTT Client,从而连接到 IoTF,基于 MQTT 协议,根据约定的主题,以 Publisher 和 Subscriber 的角色进行通信。
Sensor Simulator 为用 Java 程序模拟的传感设备,其以一定时间间隔来不断生成温度和湿度数据,该类型的数据为具有时间特性且按照先后顺序排列,在这里我们称之为时间序列数据。
在 Gateway 和 Bluemix 上均部署 Informix 数据库用于时间序列数据的存储和分析。Informix 占用资源少,具有自动内存管理、自动空间配置等自我管理的功能,可扩展性好,功能强大,特别是其具有专门用来处理时间序列数据的数据库引擎,因此本示例选择将其作为 Gateway 和 Bluemix 上的数据库服务器(部署在 Bluemix 上的 TimeSeries Database Service 为 Informix 专门用来处理时间序列数据的数据库服务)。
Gateway 上的 Java App 用来将 Sensor Simulator 生成的温度和湿度数据保存在嵌入的 Informix 数据库中。
Gateway 上的 Python App 对 Informix 数据库中存储的温度和湿度数据按照一定时间单位进行简单地聚集分析,然后以 Publisher 的角色将聚集结果(仍然为时间序列数据)通过 MQTT 协议发布到 Bluemix 的 IoTF。
Bluemix 上的 Java Web APP 以 Subscriber 的角色通过 MQTT 协议接收 Gateway 上的 Python App 发布的时间序列数据并将其保存到 Time Series Database 中;该 APP 同时还具有在 Time Series Database 中进行 DDL 和 DML 操作的功能,可以进行时间序列表的 CRUD 操作,因此可以利用其对数据库中保存的数据进行查询和分析。