EdgeX系列之EdgeX Foundry介绍
写在前面
最近大家都在提云边端,领导要求项目也要上云边端,于是对边缘计算框架EdgeX Foundry进行了调研学习,打算写一个系列,记录一下学习历程。
- EdgeX系列之一 – EdgeX Foundry介绍
- EdgeX系列之二 – 准备工作
- EdgeX系列之三 – 连接MQTT设备
- EdgeX系列之四 – 数据库访问
- EdgeX系列之五 – 设置定时任务
- EdgeX系列之六 – 连接云端服务
- EdgeX系列之七 – 入门资料介绍
正文
EdgeX Foundry用一句话来介绍,就是Linux基金会下的硬件和操作系统无关的开源中立的边缘计算微服务框架,用于统一工业物联网边缘计算解决方案的生态系统。
性能目标
在性能上占用很小,EdgeX的目标是要能够在树莓派3(1GB内存,64位CPU,32GB以上存储空间)上运行所有服务。开发人员社区还希望把EdgeX的启动时间降低到1分钟以内。从数据接收到动作响应的延迟不超过1秒。
发布的路线图
'Barcelona': October 2017
'California': July 2018
'Delhi': November 2018
'Edinburgh': July 2019
'Fuji': November 2019
'Geneva': ~ April 2020
'Hanoi': ~ October 2020
'Ireland': ~ April 2021
'Jakarta': ~ October 2021
'Kamakura': ~ April 2022
主要特点:
提供一个灵活的微服务架构,能够支持任何异构组件的组合。硬件无关(x86,ARM)、操作系统无关(linux、windos、mac os)、应用环境无关(Java, JavaScript, Python, Go Lang, C/C++)。允许服务根据设备能力和用例向上或向下伸缩,用一个通用的API规范化对不同协议设备通讯,可以把参考架构的微服务(北向消息总线、规则引擎、数据库)快速替换为开源或私有的软件。提供最好的工业级安全、管理性、性能、可靠性的同时,还支持可扩展性。支持微服务的即插即用,无需架构变更(允许开发人员用Go写的微服务替换Java写的微服务)。允许开发社区不断完善来提供各种技术指标。
EdgeX Foundry框架连接各种设备和云平台,设备侧称为南向,云平台侧称为北向。
南向
EdgeX通过设备服务来与设备和传感器对接。对接包括两部分:一是协议解析驱动程序,根据设备协议向设备发送命令,获取设备的实时数据并发送到核心数据服务。二是设备服务接收命令服务下发的命令,根据命令向协议解析驱动程序发送控制命令,然后驱动再根据设备协议向设备发送控制命令。
北向
EdgeX通过导出服务,从核心数据服务收设备实时数据,按照EAI模式进行处理转换,然后把转换后的数据发送到各种云平台(Azure IoT Hub, AWS IoT Core, Google IoT Core等)和企业信息系统(ERP,MES,CRM等)。
部署
EdgeX的微服务部署很灵活,根据应用特点和现场环境,可以部署在不同的资源所在位置。
第一种部署场景: 现场靠近设备侧部署设备服务,用于采集设备数据和执行控制命令。核心服务、分析服务和导出服务则部署在云端。
第二种部署场景: 现场靠近设备侧部署设备服务,其余服务部署在网关上,网关将数据再发送到云端。
第三种部署场景: 设备服务、核心服务、导出服务和分析服务都部署在边缘侧。
第四种部署场景: 设备服务和核心服务部署在网关上,导出服务和分析服务部署在雾计算节点上,分析后的数据由雾计算节点发送到云端。
第五种部署场景: 设备服务部署在现场嵌入式单片机上,核心服务、分析服务和导出服务部署在雾计算节点上,雾计算节点再连到云端。
总体架构
设备服务负责采集数据及控制设备功能。
核心服务负责本地存储分析和转发数据,以及控制命令下发。
导出服务负责上传数据到云端或第三方信息系统,以及接收控制命令转发给核心服务。
支持服务负责日志记录、任务调度、数据清理、规则引擎和告警通知。
安全服务、管理服务这两个软件模块虽然不直接处理边缘计算的功能性业务,但是对于边缘计算的安全性和易用性来说很重要。
不同服务之间主要采用 RESTful API 接口进行交互。但是有的服务之间为了提高性能,通过消息总线交换数据。
EdgeX可通过docker-compose等部署工具部署服务。不同服务可以在同一个计算节点上运行,也可以在不同计算节点上运行。
由于采用了微服务风格架构,不同服务可以用不同语言开发,如Java,Go,C语言等。
EdgeX的总体数据流
- Device Service从设备采集实时数据。
- Device Service把设备实时数据发送给Core Service,并本地持久化存储。
- Core Service把实时数据发送给Export Service,由后者再发送到云端服务器或企业信息系统。
- 数据在边缘侧的分析软件中进行分析,然后根据分析结果通过Command service发送控制命令触发设备动作。
参考资料:
本文地址:https://blog.csdn.net/ewtewtewrt/article/details/110110192