EdgeX物联网平台

一、概述

EdgeX Foundry是一个由Linux基金会支持的边缘计算开源平台。它的定位是作为通用工业物联网边缘计算通用框架,部署在路由器和交换机等边缘设备上。EdgeX Foundry为各种传感器、设备或其他物联网器件提供即插即用功能,并管理它们,进一步收集和分析它们的数据,或者导出至边缘计算应用或云计算中心做进一步处理

EdgeXFoundry 可被视为硬件与软件之间的中间件,它南向连接各种设备和传感器,北向连接应用程序。

二、系统架构

2.1 架构原则

  1. 必须与平台无关
  • 硬件(x86,ARM)
  • 操作系统(Linux, Windows, MacOS, …)
  • 支持分布式(通过微服务架构设计支持在边缘节点,网关,雾节点、云平台等上部署)
  • 部署/编排(Docker, Snaps, K8s, roll-your-own…)
  • 协议(北侧协议或南侧协议)
  1. 必须非常灵活
  • 微服务化 - 平台的任何部分都可以通过其他微服务或软件组件进行升级、替换或增强
  • 灵活伸缩性 - 允许服务根据设备功能和用例进行扩展和缩减
  1. 应该提供“参考实现”服务,但鼓励最优解决方案
  • 设备驱动参考实现
  • 应用服务参考实现
  1. 必须提供存储和转发能力
  • 高度自治:支持断开连接/远程边缘系统
  • 断点续传:处理间歇性连接
  1. 必须支持和促进“智能”向边缘移动,以便解决
  • 驱动延迟问题
  • 带宽和存储问题
  • 远程操作问题
  1. EdgeXFoundry必须支持棕色和绿色设备/传感器的现场部署
  • 棕色设备:边缘/物联网部署中的旧设备(节点、设备、传感器),通常使用旧协议
  • 绿色设备:具有现代协议的新设备
  1. EdgeXFoundry必须是安全的,易于管理的
  • 独立安全模块 - 支持自身安全性管理
  • 零信任机制 - 适合于更多安全性高的场景

2.2 部署范围

EdgeX 微服务的单个实例可以分布在多个主机平台上。一个或多个 EdgeX 微服务的主机平台称为节点。这使 EdgeX 能够利用计算、存储和网络资源,无论它们位于边缘的哪个位置。

EdgeX 松耦合架构可实现跨节点分布,从而实现分层边缘计算,部署范围可能包括嵌入式传感器、控制器、边缘网关、服务器和云系统。

2.3 整体架构

EdgeX Foundry 是开源微服务的集合。这些微服务分为4个服务层和2个底层增强系统服务。

服务层:

  • 核心服务层 - Core Services Laye吃的。。
  • lsr
  • 支持服务层 - Supporting Services Layer
  • 应用服务层 - Application Services Layer
  • 设备服务层 - Device Services Layer

底层系统服务:

  • 安全 - Security
  • 系统管理 - System Management

2.3.1 设备服务层

设备服务是与传感器/设备或物联网对象(“物”)交互的边缘连接器,其中包括机器、机器人、无人机、HVAC 设备、相机等,还包括未来的无人驾驶汽车、交通信号、全自动快餐设施等。通过利用可用的连接器,可以控制设备并/或传输数据至 EdgeX 或从其传输数据。您还可以使用设备服务 SDK 来创建您自己的 EdgeX 设备服务

设备服务可以同时为一个或多个设备(传感器、执行器等)提供服务。设备服务管理的设备可能不是简单的、单一的物理设备。该设备可以是另一个网关(以及该网关的所有设备)、设备管理器、充当 EdgeX Foundry 设备或设备集合的设备聚合器。

设备服务通过每个设备对象本机的协议与设备、传感器、执行器和其他 IoT 对象进行通信。设备服务将 IoT 对象生成和通信的数据转换为通用 EdgeX Foundry 数据结构,并将转换后的数据发送到核心服务层以及 EdgeX Foundry 其他层中的其他微服务。

2.3.2 核心服务层

核心服务了提供事物 (OT) 与 系统 (IT) 之间的中介通信,是北向和南向之间的重要中介。通过这些服务可大体了解给定部署中连接了哪些设备,正在传输哪些数据以及 EdgeX 配置方式

核心服务包括:

  • 核心数据 - Core Data:由南向设备和传感器收集的用于数据读取的集中式数据库。
  • 核心命令/控制 - Command:代表其他微服务、应用和外部系统对设备执行明亮/操作,这些命令存储在元数据中。
  • 元数据 - Metadata:由其他服务使用,用于了解设备以及如何与之进行通信。元数据提供了配置新设备并将其与其拥有的设备服务配对的能力。
  • 注册表和配置 - Registry and Configuration:集中化并简化服务配置数据。该服务使用开源项目Consul来进行键值存储,并且客户端可以通过REST API访问EdgeX。为其他EdgeX微服务提供有关EdgeX内关联服务和微服务配置属性(即初始化值存储库)的信息。

2.3.3 支持服务层

支持服务包括边缘分析(也称为本地分析)等微服务,以及典型的软件应用功能,例如日志记录、计划和数据清理等功能。支持服务通常需要一些核心服务才能发挥作用。在实际部署过程中在EdgeX架构中是可选的。

支持服务包括:

  • 规则引擎:参考实现边缘分析服务,根据收集的传感器数据在执行 if-then 条件驱动。EMQ X Kuiper是EdgeX参考规则引擎,可让用户在边缘实现快速数据处理并使用SQL编写规则。
  • 服务:按照配置时间间隔或者计划在任意EdgeX服务中心执行操作
  • 警报和通知:向系统或工作人员发送警报/通知,以提醒他们另一项微服务在节点上发现了问题。

2.3.4 应用服务层

应用服务是指将感应到的数据从EdgeX提取、处理/转换和发送到所选端点或应用的方式。这些服务可以使分析数据包、企业或本地应用,也可以是Azure IoT Hub、AWS IoT或Google IoT Core等云系统。

目前支持的开箱即用终端节点包括 HTTP 和 MQTT 端点,但将来将包括其他产品,并且可能会 包括 自定义终端节点。数据导出主要包括HTTPPost和MQTTSecretSend两个方式。

应用程序服务基于 “Functions Pipeline” 的理念, “Functions Pipeline” 是按照指定顺序处理消息的Functions的集合,“Pipeline” 中的第一个Function是触发器,触发器负责启动 “Functions Pipeline” 的执行。

2.4.3.1 Trigger

sdk中主要包括两种触发器:

  • HTTP请求:通过http请求post核心数据
  • 消息订阅:通过消息队列订阅
2.4.3.2 Function

常见function包括过滤、转换(即转换为 XML 或 JSON)、压缩和加密功能。比如下图的应用服务主要包括4个function:

  • DeviceNameFilter :过滤与指定 ID 不匹配的事件
  • ValueDescriptorFilter :过滤不符合指定数值的事件
  • XMLTransform 和JSONTransform:将数据转化为xml或者json格式
2.4.3.3 Export

sdk中主要包括两种function:

  • HTTP请求:通过http请求post核心数据到指定的应用端
  • 消息发布:通过消息队列发布消息

2.3.5 系统服务层

2.3.5.1 安全基础服务

EdgeX Foundry的安全组件可以保护EdgeX Foundry管理的设备、传感器和其他物联网对象。

基于EdgeX是一个“中立的边缘网络开源软件平台供应商”这一事实,EdgeX的安全特性也建立在开放接口和可插拔、可替换模块的基础上。

主要有两个安全组件

安全仓库: 用于提供保存 EdgeX 机密的安全位置。比如:其他服务连接到云数据库的访问密码等。

API网关:作为反向代理来限制对 EdgeX REST 资源的访问并执行访问控制相关的工作。

2.3.6 软件开发套件(SDKs)

EdgeX 提供了两种类型的 SDK 来协助创建北向和南向服务,特别是创建应用程序服务和设备服务。用于北向和南向服务的 SDK 通过为开发人员提供负责服务基本操作的所有脚手架代码,使连接新事物或新的云/企业系统变得更容易。从而使开发人员能够专注于与南向或北向对象的连接细节,而无需担心微服务的所有原始管道。

主要的SDKs:

  • Golang 设备服务 SDK(大部分设备服务)
  • C 设备服务 SDK(少数设备服务)
  • Golang 应用函数 SDK(目前有且只有 Golang 版本)

三、工作原理

3.1 北向链路

EdgeX 的主要工作是从传感器和设备收集数据,并将这些数据提供给北向应用程序和系统。数据由使用该设备协议的设备服务从传感器收集。

3.1.1 设备数据上传到核心数据服务

  • 消息总线通过消息总线(redis stream或者MQTT)传输到应用服务数据服务
  • REST API通过rest api分别传输数据服务应用服务

数据服务数据存储方式:

  • 本地存储:边缘端的redis(内存型)、mysql(关系型)、mongoDB(非关系型)、influxDB(时序型)等数据库。其中,边缘保存的原因如下:
    • 断点续传 - 边缘节点并不总是连接的。在断网运行期间,必须保存传感器数据,以便在连接恢复时可以向北传输。这称为存储和转发能力。
    • 历史参考 - 在某些情况下,传感器数据分析需要回顾历史,以便了解趋势并根据历史做出正确的决策。如果传感器报告现在温度为 30°C,您可能想知道十分钟前的温度是多少,然后再决定调整加热或冷却系统。如果温度为 40°C,您可能会认为十分钟前进行的降低室温的调整足以使房间降温。历史数据的背景对于本地分析决策非常重要。
  • 云存储:通过REST API或者消息总线传输到云服务

3.1.2 核心数据上传到应用服务

当核心数据从设备服务接收事件对象时,它会将传感器数据事件放在发往应用程序服务的消息主题上。

主要采用消息总线方式进行上传:

  • 使用设备服务的消息总线
  • 单独从核心数据服务新建消息总线

默认情况下,Redis Pub/Sub 用作消息传递基础设施(步骤 Step 2)。 MQTT 或 NATS(在构建期间选择加入)也可以用作核心数据和应用程序服务之间的消息传递基础设施。

3.1.3 应用服务上传

应用程序服务根据需要转换数据并将数据推送到端点。它还可以在将事件发送到端点之前对事件进行过滤、丰富、压缩、加密或执行其他功能(步骤 Step 3)。

端点包括:

  • HTTP/S 端点
  • MQTT 主题
  • 云系统(云主题)

3.2 南向链路

3.2.1 应用服务规则引擎

规则引擎主要包括

  • eKuiper – 一个开源规则引擎
  • AI Agent 机器学习模型代理

3.2.2 规则引擎到命令服务

规则引擎可以探索传感器事件数据并做出触发设备驱动的决定。

例如,它可以检查发动机的压力读数是否大于 60 PSI。当确定这样的规则为真时,分析包会调用核心命令服务来触发某些操作,例如在某些可控设备上“打开阀门”(步骤 Step 5)。

3.2.3 命令服务设备服务

核心命令服务获取动作请求,并根据请求确定需要动作于哪个设备;

然后调用所属设备服务来执行驱动(步骤 Step 6)。核心命令允许开发人员在启动之前采取额外的安全措施或检查。

3.2.4 设备服务设备

设备服务接收启动请求,将其转换为特定于协议的请求,并将请求转发到所需的设备(步骤 7)。

四、参考资料

官方文档Introduction - EdgeX Foundry Documentation

wiki网站:EdgeX Wiki - Confluence

edgex存储库https://github.com/edgexfoundry

golangGolang 开发笔记 - 《Golang 开发笔记》 - 书栈网 · BookStack

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值