Skip to content

Commit

Permalink
sync blog
Browse files Browse the repository at this point in the history
  • Loading branch information
emqx-ci-robot authored and Swilder-M committed Dec 28, 2023
1 parent f12d8ba commit a6a2421
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
1 change: 1 addition & 0 deletions README-ZH.md
Original file line number Diff line number Diff line change
Expand Up @@ -723,6 +723,7 @@ Guarantee the availability and reliability of the IoT platform.

## [应用案例](https://www.emqx.com/zh/blog/category/use-cases)

- [EMQX 在物联网设备监控和控制的应用实践](https://www.emqx.com/zh/blog/application-of-emqx-in-iot-device-monitoring-and-control) ([Edit](https://github.com/emqx/blog/blob/main/zh/202312/application-of-emqx-in-iot-device-monitoring-and-control.md))
- [EMQX 在智能垃圾分类与监测项目中的实践应用](https://www.emqx.com/zh/blog/application-of-emqx-in-smart-waste-sorting-and-monitoring) ([Edit](https://github.com/emqx/blog/blob/main/zh/202312/application-of-emqx-in-smart-waste-sorting-and-monitoring.md))
- [实时数采、云边协同:EMQ 助力大型新能源储能系统智能运营](https://www.emqx.com/zh/blog/empowers-intelligent-operation-of-large-scale-new-energy-storage-systems) ([Edit](https://github.com/emqx/blog/blob/main/zh/202312/empowers-intelligent-operation-of-large-scale-new-energy-storage-systems.md))
- [工业智能:英特尔与 EMQ 推出联合工业解决方案](https://www.emqx.com/zh/blog/intel-and-emq-launch-joint-industrial-solution) ([Edit](https://github.com/emqx/blog/blob/main/zh/202311/intel-and-emq-launch-joint-industrial-solution.md))
Expand Down
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>

0 comments on commit a6a2421

Please sign in to comment.