文章
问答
冒泡
EdgeX Foundry 3.0 介绍

简介

Edgex Foundry是一个开源的、边缘网络软件平台,它直接与设备、传感器等物联网设备进行交互,简单的说,Edgex Foundry就是一个连通物理世界与云平台软件信息系统的边缘中间件。

部署方式

EdgeX最初是由Dell构建,在物联网网关上运行,但随着EdgeX体系对微服务架构的支持,现在EdgeX微服务的单个实例可以分布在多台服务器上,一个或多个EdgeX微服务的服务器称为节点。这使EdgeX能够在边缘的任何地方利用计算、存储和网络资源。

这种松散耦合的体系架构允许跨节点分布,从而进一步可以实现边缘计算的分层逻辑。比如通信服务可以部署在PLC、网关上运行,或者嵌入更智能的传感器中,而其他的EdgeX服务则可以部署在网络服务器上。因此,部署的范围可能包括嵌入式传感器、控制器、边缘网关、服务器和云系统。

EdgeX微服务可以部署在一组计算节点上,以最大限度得利用资源,同时也可以将更多得智能处理设备放在更靠近物理边缘的位置。

EdgexFoundry架构

Edgex Foundry其实就是一组微服务集合的统称,Edgex Foundry包括4个服务层,2个基础模块。

4个服务层:

  • 核心服务层(Core Services Layer)

  • 支持服务层(Supporting Services Layer)

  • 应用服务层(Application Services Layer)

  • 设备服务层(Application Services Layer)

2个基础模块:

  • 安全模块(Security)

  • 系统管理模块(System Management)

核心服务层(Core Services Layer)

核心服务可以认为是EdgeX南北两侧的中介,它是物理世界和IT系统之间提供了通信中介服务。其实看名字就晓得,这层服务都是一些很重要的服务,数据流转、指令下发、以及存储EdgeX中相关的配置信息、设备信息,核心服务包含以下几个服务:

  • Core Data:南侧(物理设备侧)数据的存储以及相关的管理工作

  • Command:控制北侧到南侧指令下发执行的服务

  • Metadata:连接到EdgeX Foundry相关服务或设备的元数据存储工作

  • Registry and Configuration:其实就是EdgeX Foundry微服务的注册中心和配置中心,EdgeX Foundry默认使用Consul

支持服务层(Supporting Services Layer)

支持服务就是一些附加服务,比如边缘分析服务,正常的软件服务比如调度和数据清理,这些全由支持服务层来提供。

支持服务是基于一些核心服务才能运行的,在通常情况下,支持服务可以被认为是可选择的,就是在进行Edgex部署的时候可以不包含这些服务。

支持服务层包含以下微服务:

  • Rules Engine(规则引擎):该服务基于EdgeX实例收集的传感器数据在边缘端执行if-then条件驱动。该服务可以用去取代或增加相关的数据分析服务。

  • Scheduler(任务调度):在指定的调度任务中,服务将通过任何的EdgeX提供的API服务以URL的方式触发操作,例如:定期调用核心数据API来清理历史事件(数据)。

  • Alerts and Notifications(告警和通知):通过该服务可以发送相关警报或通知。

应用服务层(Application Services Layer)

应用服务层是从EdgeX提取、处理/转换设备数据并将其发送到其他系统或平台的方法。现在EdgeX也提供了一些应用服务示例,可以将数据发送到许多云提供商(Amazon IoT Hub、Google IoT Core、Azure IoT Hube、IBM Watson IoT…),MQTT和HTTP REST端。

应用服务基于“方法管道(functions pipeline)”的方式进行设计。方法管道是按指定顺利处理消息的函数集合。函数管道中的第一个方法就是触发器,触发器开始方法管道的执行工作。比如,触发器接收到了类似于消息队列中的消息,然后每个方法依序处理这个消息,常见的操作包括过滤、转换、压缩和加密等。

设备服务层(Application Services Layer)

设备服务连接物理设备,相当于就是设备的驱动。

设备服务可以是一个服务连接多个物理设备。物理设备可以是简单的单个物理设备,也可以是另一个网关(以及该网关的所有设备)、设备管理器,充当EdgeX Foundry的设备或设备集合的设备聚合器。

设备服务通过每个设备的接入协议于设备进行通信。设备服务将物联网设备生成和通信的数据转换为通用的EdgeX Foundry数据结构(事件),并将转换后的数据发送到核心服务层,并发送到EdgeX Foodry其他层中的其他微服务。

EdgeX提供了很多使用通用物联网协议对接的设备服务示例,比如Modbus、BACnet、MQTT等。

安全模块(Security)

EdgeX Foundry的安全模块主要提供对接入的设备以及设备数据的保护,包含两个主要安全组建:

  • 安全存储,用于保护EdgeX相关机密信息,比如相关服务连接到云系统数据库的访问密码。

  • API网关服务,用以对EdgeX REST资源的访问控制

系统管理模块(System Management)

为外部系统提供监控接入点,以便对EdgeX服务运行状态、服务运行指标(如内存使用、CPU使用)进行监控,并可以启动/停止/重新启动EdgeX服务。

软件服务开发SDK

EdgeX提供了两种类型的SDK来帮助创建北向和南向服务。南北向服务的SDK提供服务基本操作的所有脚手架代码,使连接新设备或云端系统变得更容易。目前EdgeX提供了以下SDK:

  • Golang版本的设备服务SDK(Golang Device Service SDK)

  • C版本的设备服务SDK(C Device Service SDK)

  • Golang版本的应用服务SDK(Golang Application Functions SDK)

EdgeX如何工作的

设备数据采集

EdgeX的主要工作就是从传感器和设备采集数据,并将这些数据上报到北侧应用。下面基于Modbus设备服务说明一下这整个过程:

1)设备服务可以将消息(事件)发送到消息总线(message bus,可以基于redis或MQTT实现,默认是redis)上,订阅者(application service或者core data或者是其他)就可以从消息总线上订阅到这个消息(事件)了。

2)另外设备服务也可以通过REST接口将事件发送到core data service。

当core data接收到事件之后(不管是通过message bus还是rest),都会先将事件数据进行存储。EdgeX默认使用Redis进行存储。当然也允许使用其他的数据库。存储并不是必须的,也可以配置成关闭。考虑数据持久化一般有两种原因:

  • 边缘节点目前不在线,在断线期间,设备数据必须要先存储下来,以便后继连上之后北向进行消费。

  • 在一些场景下,设备数据的分析功能需要用到历史数据。

当core data基于rest接收到事件之后,它也会将事件消息发送到message bus的特定topic上,以便应用服务进行订阅消费,流程如下图所示:

应用服务接收到事件消息之后,会进行相关的处理操作,然后发送到云端,流程如下:

边缘分析与驱动

EdgeX允许对从边缘采集的数据进行本地分析,意思就是事件由本地分析处理,并可用于触发设备上的操作。

就像应用服务接收事件进行处理并上报到云端系统一样,应用服务也可以处理EdgeX事件,以及其包含的设备数据,并将其发送到任意端点,如Step4:

该服务可以处理事件数据,并做出触发设备服务的决定。例如:它可以检查发动机的压力读数是否大于60 PSI。当确定这样的规则为真时,服务调用核心命令服务来触发某些操作,如在某个可控设备上“打开阀门”(参见Step5):

核心命令服务(COMMAND)接收到请求之后,会调用所属设备服务来执行(Step6):

设备服务接收到请求之后,会根据协议进行指令转换,然后将指令发送到对应的设备(Step7):

edgexfoundry

关于作者

justin
123456
获得点赞
文章被阅读