-
Notifications
You must be signed in to change notification settings - Fork 69
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f12d8ba
commit a6a2421
Showing
2 changed files
with
61 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
60 changes: 60 additions & 0 deletions
60
zh/202312/application-of-emqx-in-iot-device-monitoring-and-control.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
> 作者:whook, EMQX 社区用户。 | ||
我目前任职于一家专注于物联网设备生产的公司。我们的设备需要监控超过 100 个指标信息,并支持远程控制。为了实现这一目标,我们设计了一套高效的系统架构,同时在架构中采用了 EMQX 来分发大吞吐量的实时物联网设备数据。这套架构的目标是实时处理和精确存储物联网设备数据,并确保系统的稳定性和用户的使用体验。 | ||
|
||
公司设备首先会采集各种指标信息,并将其编码为 Protobuf 格式,然后通过 [MQTT 协议](https://www.emqx.com/zh/blog/the-easiest-guide-to-getting-started-with-mqtt)发送到 EMQX (高性能 MQTT 消息中间件)。EMQX 接收到信息后,会将其分发至 IOT-GATEWAY 进行处理 (IOT-GATEWAY 是我们自研系统的核心组件,负责处理并分发所有从设备发出的消息)。IOT-GATEWAY 将消息处理完毕后,会将其发送至 Kafka (分布式流处理平台,专门处理大量实时数据)。数据进入 Kafka 之后,其他业务系统便可获取数据并进行各类操作,比如数据分析、数据存储等。 | ||
|
||
![架构图](https://assets.emqx.com/images/6a3a9e15df9d93d1558ae4cbaa5e063c.png) | ||
|
||
这一系统架构完美满足了我们对设备指标信息的实时监控需求,并且支持远程控制功能。用户不仅可以在我们的平台上进行操作,还可以通过小程序或 APP 下达指令。这些指令会迅速发送到设备并得到执行,使用户能够随时随地控制设备。总的来说,这是一个高效、实时、可控的物联网设备监控和控制系统,能够满足各种业务需求。 | ||
|
||
同时,为了确保系统的稳定性和高性能,我们将 EMQX 升级到了 5.0.11 版本。这一新版本带来了许多全新的特性和改进,能够更好地支持我们业务的运行。 | ||
|
||
# 数据流详细说明 | ||
|
||
在系统架构中,我们采用了数据流处理方式,以确保数据的实时性、准确性和安全性。 | ||
|
||
首先,设备通过公网接入,利用物联网卡的 4G 网络实现连接。这一步骤不仅确保了设备与互联网的稳定连接,而且 4G 网络能够保证数据传输的高速和稳定。 | ||
|
||
设备接入网络后会连接到 EMQX 集群。EMQX 是 EMQ 公司旗下一个强大的 MQTT 消息中间件,能够处理大量的并发连接。设备接入 EMQX 集群后,通过 EMQX 的桥接功能,将数据量大的实时信息(每秒一条)转发到另一个 EMQX 集群,实现数据的分流。这种分流设计可以有效减轻单一集群的压力,从而保证系统的稳定运行。 | ||
|
||
桥接的 EMQX 集群连接的是我们自主研发的 IOT-GATEWAY。它支持动态扩容缩容,能够根据实时数据的大小,自动调整处理能力。IOT-GATEWAY 会将实时数据转发到 Kafka。对于非实时数据,系统会通过另一个IOT-GATEWAY 进行处理,最后也将数据转发到 Kafka,以确保所有数据都能得到有效的处理。 | ||
|
||
当数据进入 Kafka 后,我们设置了实时数据处理模块和非实时数据处理模块。实时数据处理模块接收 Kafka的实时数据,并将消息解析后存入 DWS,同时将设备最新的实时消息存入 Redis 和 MySQL,以备后续查询。非实时数据处理模块则主要对远控数据进行处理,确保远程控制的顺畅进行。 | ||
|
||
此外,还有 WEB-SERVICE 模块,这是对应 web、APP、小程序和平台的后台服务。它为用户提供设备最新情况的查看、远程控制设备的功能、用户设备权限的处理以及设备基础信息的管理等服务。 | ||
|
||
# 数据流 Topic 设计 | ||
|
||
在系统设计中,我们将client_id设定为设备出厂时的唯一编号。这种设计突出了设备的唯一性,确保了设备在整个系统中的唯一标识。 | ||
|
||
关于设备上行数据的主题(Topic)设计,我们采用了如下的格式: | ||
|
||
> mqtt/client/topic/CLIENT_ID/业务名称 | ||
这种设计让我们能够轻松监控某一具体设备的上行信息。通过将CLIENT_ID和业务名称相结合,我们可以更精确地了解设备的运行状态和业务处理情况,从而进行更有效的管理和决策。 | ||
|
||
在平台下行数据的主题(Topic)方面,我们采用了以下格式: | ||
|
||
> mqtt/server/topic/CLIENT_ID/业务名称 | ||
这种设计方便我们监控某一具体平台的下行信息。在某业务的数据流量较大的情况下,我们可以及时进行业务拆分,解决系统压力问题,确保系统的稳定性。 | ||
|
||
总体来说,Topic设计的目标是实现对设备信息和平台信息的精确监控,以及在系统压力增大时进行有效应对。通过这样的设计,我们可以确保系统的稳定运行,同时提高系统的处理效率和响应速度。 | ||
|
||
# 当前平台使用的 EMQX 功能 | ||
|
||
- 通过订阅 EMQX 系统级别的上下线主题,实时监控每个设备的上线和下线信息,从而提供实时的设备运行状态。 | ||
- 在用户管理方面,我们采用外置的 MySQL 数据库进行用户数据存储,这样不仅可以确保用户数据的稳定可靠,还便于进行用户数据的查询和管理。 | ||
- 在权限管理方面,我们设置了ACL(Access Control List)权限管理,对高权限用户和设备用户进行了区分。设备用户只能订阅普通主题,而不能订阅系统主题,从而有效防止设备用户对系统主题的非法访问。 | ||
- 通过实时流量监控,我们可以精确了解每个主题的流量情况,便于进行流量调控和系统优化。 | ||
- 在数据桥接方面,我们采用了 MQTT 桥接进行流量控制,有效控制了数据流量,确保系统的稳定运行。 | ||
- 我们采用了静态集群的方式,增强了系统的可用性,提高了系统的稳定性和可靠性。 | ||
- 此外,我们还设置了共享订阅的功能,实现了消费负载均衡,进一步提高了系统的处理效率和响应速度。 | ||
|
||
<section class="promotion"> | ||
<div> | ||
咨询 EMQ 技术专家 | ||
</div> | ||
<a href="https://www.emqx.com/zh/contact?product=solutions" class="button is-gradient px-5">联系我们 →</a> | ||
</section> |