之前介绍过EdgeX边缘计算微服务框架简介和边缘计算框架的需求,我们已经了解了边缘计算遇到的五大问题。在本文中,我们来看一下EdgeX Foundry是如何解决这五大问题的。
作者:与子同袍
首发:物联网前沿技术观察
问题1:各种协议、各种模型、各种格式
如何连接各种通信协议的南向设备?
从边缘计算网关到被连接的物这个方向(南向),EdgeX通过设备服务来与设备和传感器对接。
对接包括两部分:一是协议解析驱动程序根据设备协议向设备发送命令获取设备的实时数据并发送到核心数据服务。二是设备服务接收命令服务下发的命令,根据命令向协议解析驱动程序发送控制命令,然后驱动再根据设备协议向设备发送控制命令。
如何与各种北向系统对接?
从边缘计算网关到云平台这个方向(北向),EdgeX通过导出服务,从核心数据服务收设备实时数据,按照EAI模式进行处理转换,然后把转换后的数据发送到各种云平台(Azure IoT Hub, AWS IoT Core, Google IoT Core等)和企业信息系统(ERP,MES,CRM等)。
在把数据发送到云平台这个方向之前,根据业务需要可以对数据进行过滤、聚合、转换、enrich(增加设备相关的元信息、位置信息等)、格式转换(JSON、XML、CSV)、压缩(节省流量)、加密(安全)等。
问题2:边缘侧分析
EdgeX参考实现的规则引擎服务是对接到规则引擎JBoss Drools。第三方软件开发商可以提供增值服务,对接到其他分析引擎上,比如FogHorn。
分析引擎的分析结果还可以再发送给核心命令,用于控制现场设备。
问题3:快速持续的改进
持续改进 比如对于连设备,为了方便部署,要根据设备通信协议,对工控设备比如西门子PLC,或者modbus设备进行设备自动发现,就像以前的nms网管软件一样自动发现设备,从而大大减轻部署工作量。
升级部分组件,而不会影响其他组件功能 边缘计算软件由许多微服务组成。如果其中有的服务需要升级版本,不会影响到其他组件的功能。
随着未来发展,改进性能,从而可以在性能更低的硬件上运行 比如之前是用Java开发的,Java占用内存高,JVM安装占用磁盘空间大,对于运行采集设备数据的驱动程序的硬件来说太重了,那以后用Go语言或C语言开发,从而占用内存更少,运行效率更高。
能够和云端的服务进行整合 通过边缘计算的一个agent调用云端的机器学习分析服务。
问题4:如何让不同供应商提供差异化增值服务
EdgeX设计时就考虑到,要能让不同的软件供应商可以基于这个框架提供差异化的增值服务。例如:
- IoTech 提供类似红帽对Linux那样的商业技术支持服务,来帮助客户二次开发边缘计算软件
- 通过MongoDB在边缘和云之间同步数据。
- IoTech针对嵌入式系统开发了实时的设备采集程序。
- Aicas开发了Jamaica JVM虚拟机,可以运行在嵌入式设备上,从而运行更快更小的EdgeX服务。
- RSA提供安全特性保护授信设备,保护数据隐私和数据安全。
那些重要但是无法商业化的边缘计算框架的功能模块,比如日志服务等,则让EdgeX Foundry开源社区来开发维护。
问题5:如何最大化资源使用
EdgeX设计时就考虑到,要能让不同的软件供应商可以基于这个框架提供差异化的增值服务。例如:
EdgeX的微服务部署很灵活,根据应用特点和现场环境,可以部署在不同的资源所在位置。
第一种部署场景,现场靠近设备侧部署设备服务,用于采集设备数据和执行控制命令。核心服务、分析服务和导出服务则部署在云端。
第二种部署场景:现场靠近设备侧部署设备服务,其余服务部署在网关上,网关将数据再发送到云端。
第三种部署场景:设备服务、核心服务、导出服务和分析服务都部署在边缘侧。
第四种部署场景:设备服务和核心服务部署在网关上,导出服务和分析服务部署在雾计算节点上,分析后的数据由雾计算节点发送到云端。
第五种部署场景:设备服务部署在现场嵌入式单片机上,核心服务、分析服务和导出服务部署在雾计算节点上,雾计算节点再连到云端。
-End-
往期精彩:
更多物联网,边缘计算相关技术干货请关注我的专栏物联网前沿技术观察