本文为Edgex系列第二篇文章,主要介绍EdgeX 2.x总体架构,并启动相关服务,体验UI页面,有一个整体认知。
官方描述:
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元数据配置。核心由以下微服务组成:
支持服务:支持服务包括广泛的微服务,包括边缘分析(也称为本地分析)。支持服务层中的微服务执行正常的软件应用程序职责,例如调度程序和通知/警报。 这些服务通常需要一定数量的核心服务才能运行。在所有情况下,都应考虑可选的支持服务。根据用例需求和系统资源,将这些服务排除在 EdgeX 部署之外。 支持服务包括:
应用服务: 是从 EdgeX Foundry 获取数据以在边缘处理或者发送到外部系统前进行处理的模块。应用程序服务提供了在发送到某一的端点或者发送回内部其他应用程序服务以供使用之前的准备(转换、丰富、过滤等)和整理(格式化、压缩、加密等)数据的相关功能。目前支持的开箱即用的导出端点包括 HTTP 和 MQTT 端点,该端点基于 app-service-configurable服务实现,后续我们也会用到。
安全服务:密钥管理,安全控制。本文暂不涉及。
注:2.x版本各服务均提供REST API,swagger参考地址: docs.edgexfoundry.org/2.1/api/Ch-…
克隆edgex-compose项目:
git clone [email protected]: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直观体验一下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-…