> 文档中心 > EdgeX Foundry第二弹 架构介绍与启动

EdgeX Foundry第二弹 架构介绍与启动

本文为Edgex系列第二篇文章,主要介绍EdgeX 2.x总体架构,并启动相关服务,体验UI页面,有一个整体认知。

一、EdgeX Foundry介绍

官方描述:

EdgeX Foundry is an open source, vendor neutral, flexible, interoperable, software platform at the edge of the network, that interacts with the physical world of devices, sensors, actuators, and other IoT objects.

翻译:

EdgeX Foundry 是一个位于网络边缘的开源、供应商中立、灵活、可互操作软件平台,可与设备、传感器、执行器和其他物联网对象的物理世界进行交互。

个人理解:

EdgeX是一个边缘(靠近数据源的边缘地带,如工厂等)计算开发框架。南向连接设备,北向输出云端。基于SDK可以定制化各类协议接入驱动与应用服务,并提供物模型定义、定时任务、安全服务、规则引擎、数据导出等治理功能。

二、整体架构

南向设备:包含各类传感器与执行器。

设备服务:设备服务包含各类协议的设备驱动,目前提供MQTT,REST,SNMP,OPC-UA等,如果需要自定义设备接入协议,EdgeX提供了相应的SDK,我们只需要覆写相关方法即可实现设备的接入驱动。

C SDK参考:github.com/edgexfoundr…

Golang SDK参考:github.com/edgexfoundr…

核心服务:核心服务在EdgeX的南北两侧作为中间服务。它们是 EdgeX 功能的“核心”。核心服务是连接“事物”、收集传感器数据和 EdgeX元数据配置。核心由以下微服务组成:

  • 核心数据:用于从南侧对象收集的数据的持久存储库和相关管理服务,默认使用redis进行持久化,2.0版本之后核心数据模块不必要,其他服务可以通过Message Bus消息总线进行数据订阅,架构请参考下图:

  • Command:促进和控制从北侧到南侧的驱动请求的服务,即设备控制命令需要从核心命令服务执行,相关命令在解析物模型时建立。
  • 元数据:关于连接到 EdgeX Foundry 的对象的元数据存储库和相关管理服务。元数据提供了配置新设备并将它们与自己的设备服务配对的能力。主要存储了设备元信息(物模型等),设备与设备服务的关联关系。
  • 注册表和配置:提供服务关联与服务配置查询能力。

支持服务:支持服务包括广泛的微服务,包括边缘分析(也称为本地分析)。支持服务层中的微服务执行正常的软件应用程序职责,例如调度程序和通知/警报。 这些服务通常需要一定数量的核心服务才能运行。在所有情况下,都应考虑可选的支持服务。根据用例需求和系统资源,将这些服务排除在 EdgeX 部署之外。 支持服务包括:

  • 规则引擎:从1.2版本开始,EdgeX默认使用的规则引擎为eKuiper,提供多数据流操作、命令控制以及多端格式化导出等功能。eKuiper默认数据来源为app-rule-engine,topic为rule-events。另外可以通过设置eKuiper配置文件,修改为直接订阅message bus某类消息。
  • 调度程序:EdgeX 定时器,可以启动任何 EdgeX 服务中的操作。在配置指定的时间,服务将通过 REST 调用任何 EdgeX 服务 API URL 以触发操作。例如,在指定时间,调度程序服务调用核心数据 API 以删除已从 EdgeX 导出的旧感知数据。定时触发另外一种方式为配置设备auto event。
  • 警报和通知:出发告警规则,发送警报或通知,可以发送到邮件。

应用服务: 是从 EdgeX Foundry 获取数据以在边缘处理或者发送到外部系统前进行处理的模块。应用程序服务提供了在发送到某一的端点或者发送回内部其他应用程序服务以供使用之前的准备(转换、丰富、过滤等)和整理(格式化、压缩、加密等)数据的相关功能。目前支持的开箱即用的导出端点包括 HTTP 和 MQTT 端点,该端点基于 app-service-configurable服务实现,后续我们也会用到。

安全服务:密钥管理,安全控制。本文暂不涉及。

注:2.x版本各服务均提供REST API,swagger参考地址: docs.edgexfoundry.org/2.1/api/Ch-…

三、服务启动

克隆edgex-compose项目:

git clone git@github.com:edgexfoundry/edgex-compose.git git checkout ireland复制代码

生成docker-compose.yml配置:

cd edgex-compose/compose-builder $ make gen ds-virtual no-secty ui复制代码

修改端口绑定ip:

vi docker-compose.yml替换所有`127.0.0.1`为`0.0.0.0`,或直接删除,否则外网无法访问。也可以使用`sed`统一替换。复制代码

在yml配置文件目录下启动EdgeX foundry

docker-compose up -d复制代码

注:演示使用2.0ireland版本,建议切换到2.1Jakarta长期维护版本。

四、UI体验

本节我们通过UI直观体验一下Edgex提供的边缘治理功能。特别申明:2.0版本无中文界面,2.1版本由vmware中国提供中文版本控制台,接下来访问 ${ip}:4000 ,如果修改了端口,替换端口即可。打开后如图所示:

我们看左侧的导航栏:

Dashboard看板 :主要包含设备服务、设备、物模型、定时器、通知、事件、核心数据等内容。

System :包含系统服务监控与metrix,并提供服务状态查看与启停等功能。

metadata :元数据部分主要是已注册设备相关的信息,如设备服务、设备信息、设备命令、物模型等。

DataCentor :核心数据服务数据中心,可以实时查看上报数据。

scheduler :定时器服务,主要包含两部分,interval和intervalAction,类似于cron表达式与要执行的action。

notifications :通知告警模块,主要包含通知定义与订阅。

ruleEngine :规则引擎,可以创建流且可以通过sql创建过滤规则。

Appservice :应用服务,默认包含一个app-rule-engine,用于构建pipeline处理链路,eKuiper默认的数据来源也是app-rule-engine。

五、参考资料

docs.edgexfoundry.org/2.1/microse… docs.edgexfoundry.org/2.1/example… github.com/edgexfoundr… docs.edgexfoundry.org/2.1/api/Ch-…