Steve Sun, a full-stack developer

边缘计算模式——数据管道

2022.09.18

问题

在物联网多层架构设计中,数据从终端设备流向云端,应该在哪一层做数据处理,哪一层做数据展示?分层的依据是什么?

解决方案

架构设计

边缘计算的三层数据管道。

  • 数据源是由若干终端设备组成的,内置在设备中的 agent 负责采集设备的基础数据如 cpu,内存使用量,应用统计数据等。
  • Edge(边缘)节点主要负责数据的处理,如 InfluxDB 通常设置在中间这一层。
  • Cloud(云端)节点是地理位置无关的,有容灾和扩展能力的云端服务层,因为边缘节点的硬件限制,扩展性不如云端,因此通常经过加工的数据从边缘节点发送到云端做持久化和数据展示。云端节点也负责一部分复杂数据的加工和聚合。

Edge 层

Edge 层的通常由一个 gateway(网关),数据处理服务,存储服务和若干的应用服务组成。因为硬件和维护的限制,Edge 层通常安装的服务数量和分配的资源有限。它主要负责数据的轻量级加工和聚合,减少从 Edge 层到 Cloud 层之间数据传输的带宽,同时快速地监控、反馈问题给终端设备。

Gateway

Gateway 通常要求能够根据终端设备数据自适应扩展。通常 gateway 还有设备 ID 识别,权限认证等功能。对于数据量较大的场景,gateway 需要缓存认证服务的状态,防止并发过大导致认证服务崩溃。

Data processors

数据处理服务负责对终端发来的数据根据各种指标计算出复合指标存储到数据库或者数据仓库中。通常这一层会设置一个消息队列 MQ,如 Kafka,但是仍然因为 Edge 层设备资源的限制,消息队列最好是系统级别共享的并且能够缓存一段时期的数据,之后数据消费者(应用服务)可以根据自身需要订阅数据流。

常用的时序数据库,如 InfluxDB,内置了 Task 功能,将数据处理和存储合二为一。大大简化了这一层的开发工作。

System Services & Storage

这一层由数据库和若干系统服务组成。向上层提供系统级别的 API 和数据。值得注意的是,数据库通常不会存储长期数据,因为 Edge 层存储容量的限制和不易扩展的特性,会给数据库设置 retention period 参数,令过期数据自动销毁或通过定时任务Downloadsampling(降采样)

系统服务一般由认证服务、数据 API、设备管理 API 等服务组成,这一层需要完成对设备的注册发现和管理。

小结

以上就是对边缘计算的三层架构的概述和 Edge 层的设计。根据工作中的实际情况,应该重点关注几方面的问题:

  • Edge 层的扩展性,当设备数据急速增长时是否有能力应对。
  • Edge 层的服务拆分和数据持久化策略。因为部署环境和性能的限制,开发人员并不能像 Cloud 端开发一样快速响应 Edge 节点的情况,因此 Edge 层最考验开发者根据实际用户场景调参,自动化扩展、恢复的能力。
comments powered by Disqus