Mainflux是一个由法国的创业公司开发并维护的安全、可扩展的开源物联网平台,使用 Go语言开发、采用微服务的框架。Mainflux支持多种接入设备,包括设备、用户、APP;支持多种协议,包括HTTP、MQTT、WebSocket、CoAP,并支持他们之间的协议互转。
Mainflux的南向接口连接设备,北向接口连接应用,提供一个完整的从设备端到平台到应用的解决方案。
功能特性
Mainflux 物联网平台包含以下功能特性:
- 支持多协议连接及桥接(HTTP, MQTT, WebSocket 和 CoAP)
- 设备管理和配置(零接触配置)
- 使用 X.509 数字证书进行双向认证
- 精细化的访问权限控制
- 支持消息持久化 (Cassandra, InfluxDB, MongoDB, PostgresSQL)
- Platform logging and instrumentation support (Grafana, Prometheus and OpenTracing)
- 平台支持记录日志和基础设施
- 使用 Docker 和 Kubernetes 进行基于容器的部署
- ontainer-based deployment using Docker and Kubernetes
- 集成 LoRaWAN
- SDK
- CLI
- 占用内存小,执行速度快
- 领域驱动的设计架构,高质量的代码和测试覆盖率
MainFlux 服务架构
Mainflux 物联网平台包含以下服务:
服务 | 描述 |
用户 | 管理平台的用户以及有关用户和组的身份验证问题 |
事物 | 管理平台的事物、渠道以及与事物和渠道相关的身份验证问题 |
http 适配器 | 提供HTTP接口,用于通过HTTP发送消息 |
mqtt 适配器 | 提供 MQTT 和 MQTT over WS 接口,用于通过 MQTT 发送和接收消息 |
WS-适配器 | 提供WebSocket接口,用于通过WS发送和接收消息 |
适配器 | 提供CoAP接口,用于通过CoAP发送和接收消息 |
opcua 适配器 | 提供 OPC-UA 接口,用于通过 OPC-UA 发送和接收消息 |
lora 适配器 | 提供 LoRa 服务器转发器,用于通过 LoRa 发送和接收消息 |
mainflux-cli | 命令行界面 |
Mainflux 核心模块
边缘计算网关
Mainflux IoT 物联网平台提供边缘网关设备管理服务,包含传感器原始数据处理、过滤和存储功能,减少设备(传感器/执行器)上云的负载、降低配置难度。
上图展示的是运行 Agent、Export 和 Mainflux 服务最小部署的边缘网关。
Mainflux 服务支持设备管理和 MQTT 协议,NATS 是中央消息总线,因为它是 Mainflux 中的默认消息代理,它也成为其他服务的中央消息总线,以及任何新的自定义Agent开发Export的服务,这些服务可以构建为与网关上具有任何硬件支持接口的设备,这些服务会将数据发布到消息代理,Export服务可以在消息代理中获取数据并将其发送到云。
官网和源码
- 官网:https://mainflux.com
- GitHub:https://github.com/mainflux
- 开发文档:https://docs.mainflux.io