概述EdgeXFoundry最初是一个建立在戴尔运行的IOT网关上的系统,后来开源了。EdgeXFoundry就像一个介于硬件和软件之间的中间件,向南连接各种设备和传感器,向北连接应用程序。EdgeXFoundry框架有四个服务层和两个基础系统服务,分别是DeviceService、CoreService、SupportingService和ApplicationServices;安全服务(Security)和系统管理服务(Management)。EdgeXFoundry系统架构图DeviceService(设备服务层)DeviceService位于系统架构图的底部,是与硬件(设备和传感器)交互的层。机房服务器、精密空调、路由器等南向设备,温湿度计、烟雾探测器等传感器设备服务设备服务可以通过协议与各个设备进行通信。设备服务将物联网对象产生和通信的数据转换成通用的EdgeXFoundry数据结构,并将转换后的数据发送给核心服务层(CoreService)和其他层的微服务。简单来说,DeviceService负责收集设备数据,并将数据发送给其他层或其他服务;设备服务充当EdgeX与实际设备和传感器之间的接口。DeviceService(设备服务)在刚启动的时候会做这些事情:建立设备服务和设备的引用信息,让EdgeX的其他部分知道DeivceService设置了DeviceService(设备服务)来通过Edgex管理设备。这个时候请教各位大哥一个问题,DeviceService可以独立运行吗,如果可以,如何单独运行?单独运行后如何与CoreService传输数据?答案是肯定的。EdgeX微服务的单个实例可以分布在多个主机平台上。一个或多个EdgeX微服务的主机平台称为节点。####CoreService(核心服务层)Coreservice是EdgeX的核心部分,是南北桥的中介。核心服务包括核心数据(coreData)、命令(Command)、元数据(Metadata)、注册与配置(Registry&Config)等微服务。元数据元数据存储连接到EdgeX对象和相关管理服务的元数据存储库。元数据提供了将新设备与设备服务配对的能力。简单的说就是将设备配置文件DeviceProfile上传到metadata中进行存储。所有的DeviceProfile都可以通过GET、PUT和ID更新配置文件从元数据中获取,并且可以通过POST创建一个新的DeviceProfile。(DeviceProfile设备配置文件记录了设备的名称,描述了制造商的版本,有什么属性和方法等)元数据微服务知道如何与传感器和其他服务进行通信(核心数据coredata,corecommand核心命令)。元数据可以管理连接到EdgeX的设备,知道设备上报的数据,知道如何向设备发送命令;但元数据就像幕后的大老板,老板吩咐员工去做事;元数据不会通过设备服务和核心数据。收藏;同样元数据不会直接向设备发送命令,命令是由核心命令(coreCommand)和设备服务(DeviceService)执行的。核心数据(coreData)核心数据微服务为采集到的数据提供持久化服务。DeviceService收集的数据流向coreData,coreData会将数据存储在系统的边缘(比如网关),并提供一定的安全和保护,直到数据北上。说到核心数据,还有绕不开的Event/Readings。事件代表一个或多个传感器读数的集合,EdgeX在传感器收集到数据后发送一个事件。读数表示设备或传感器的响应。命令(Command)命令是通用的和标准化的。通常,有两种类型的命令被发送到设备——GET&PUT。GET命令向设备请求数据,常用于向设备请求最新的传感器数据。PUT命令将向设备发送命令以打开和关闭它或进行一些调整。SuppotingService(支持服务层)支持服务包括范围广泛的微服务,包括边缘分析、日志记录、调度和数据清洗;支持服务包括规则引擎、调度、日志记录、警报和通知。目前,Logging服务在EdgeXv1.2中已经被弃用,在以后的EdgeX版本中将删除日志记录。Alerts&Notifications(警报和通知)通知在EdgeX框架中非常重要。当发生紧急情况时,接收者可以选择以适当的方式接收通知,包括短信、电子邮件、REST回调、MQTT等。当通知微服务收到通知时,通知会在内部传递给通知处理程序。通知处理程序首先持有通知,如果给定的通知是紧急的,则立即将其传递给调度助手,如果是正常的,则传递给消息调度器。RulesEngine&KuiperRulesEngine规则引擎已在EdgeXv1.2启用。在日内瓦,EdgeX与EMQXKuiper合作。Kuiper是一款轻量级的开源软件,实现物联网边缘分析和流处理。用户可以实现快速的数据处理和编写SQL语句。Kuiper规则引擎由三部分组成,Source,SQL,SinkSource是流数据的来源,可以是MQTT服务器,也可以是EdgeX的消息总线。SQL是处理指定业务逻辑以提取、过滤或转换数据的地方。Sink用于将分析结果发送到特定目的地,例如将结果发送到MQTTbroker。(关系如下图所示)Scheduling其实这是一个内部调度时钟,可以设置为间隔运行。安全安全组可以包括设备、传感器和其他由Edgex管理的物联网对象的数据和控制。安全组有两个主要组件,即:安全存储-用于提供安全位置来保存EdgeX机密。EdgeX机密是其他服务用于连接到云系统的数据库访问密码。Securitystore微服务中存储了令牌、密码、证书等各种机密信息。安全存储和其他微服务之间的通信由TLS保护。API网关-作为反向代理来限制对EdgexREST资源的访问和控制操作。API网关是所有EdgeXREST通信的单一入口点,是外部客户端和EdgeX微服务之间的保护层,防止未经授权访问EdgeXRESTAPI。API网关接收客户端请求,验证客户端身份,并将请求重定向到相关微服务。管理(系统管理工具)系统管理工具为外部管理系统提供一个中央联系点,以启动/停止/重新启动EdgeX服务,获取服务的状态/健康状况,或获取EdgeX服务的指标。写在最后:本文只是对EdgeX框架的一个总体介绍,本人对EdgeX框架也有了初步的了解,如有错误请指正。另外,如果你觉得我写的有意思,请关注公众号程序员他,我在公众号等你。本文由博客群发、多发等运营工具平台OpenWrite发布。
