1  引言

IOT的快速发展使得网络的边缘产生大量的数据,这些数据如果完全依赖于云中心去处理,将会占用大量的网络带宽,并使得网络带宽的瓶颈成为整个系统的性能瓶颈。如果能在数据源处理好数据,只向云中心提交处理数据的结果,系统性能会获得进一步提高。边缘计算应需求而出现。

边缘计算中的边缘(edge)指的是网络边缘上的计算和存储资源,无论是从地理距离还是网络距离上来看都比云中心更贴近用户。边缘计算模式,通过在用户邻近区域提供计算服务,利用边缘资源为用户提供大量服务或功能接口,大大减少上传至云数据中心的数据量,有效减少网络和云计算中心资源压力。

边缘计算的优点:(1)大量的计算任务能够在数据产生的源头附近处理,缓解网络带宽和数据中心压力。(2)任务在边缘完成处理的,用户获得响应的速度会更快。(3)在家庭或者其他相对隐私的环境而言,数据不需要上传到云中心,实现隐私数据的保护。

在边缘计算环境下,数据具有异构性且数据量较大,数据处理的应用程序具有多样性,不同应用程序所关联的计算任务又不尽相同,面向不同应用或场景的边缘计算系统所要实现的功能有较大差异性。所以,边缘计算平台对边缘计算领域的推广和发展有着重要的意义和影响。本文将聚焦于目前业界主流的开源边缘计算平台进行探讨。

2  概述

整体而言,边缘领域的开源项目尚处于起步阶段。Linux基金会和OpenStack基金会是主要推动者。其中,(1)Linux基金会主推CORD、Akraino项目,ONAP、OPNFV等项目也开始开展相关工作;Linux基金会所推出的LF Edge项目,意在推动为互联网边缘设备引入通用秩序和互操作性,致力于创建支持互操作性的边缘计算开放框架,并兼容任何硬件、芯片、云或操作系统。(2)OpenStack基金会除了在OpenStack项目成立Edge Computing WG、F/E/MDC SIG进行需求分析之外,最新成立独立的Airship、StarlingX项目,推动边缘计算发展。

3  分类

各边缘计算平台的差异可从以下方面进行对比和分析。

(1)设计目标。边缘计算平台的设计目标反映了其所针对解决的问题领域,并对平台的系统结构和功能设计有关键性的影响。

(2)目标用户。在现有的各种边缘计算平台中,有部分平台是提供给网络运营商以部署边缘云服务,有的边缘计算平台则没有限制,普通用户可以自行在边缘设备上部署使用。

(3)可扩展性。为满足用户应用动态增加和删除的需求,边缘计算平台需要具有良好的可扩展性。目前,虚拟机技术和容器技术常被用于支持可扩展性。

(4)系统特点。面向不同应用领域的边缘计算开源平台具有不同的特点,而这些特点能为不同的边缘计算应用的开发或部署带来方便。

(5)应用场景。常见的应用领域包括智能交通、智能工厂和智能家居等多种场景,还有增强现实(AR)/虚拟现实(VR)应用、边缘视频处理和无人车等对响应时延敏感的应用场景。

根据边缘计算平台的设计目标和部署方式,可将边缘计算开源平台大致分为3类。

①物联网用户侧边缘计算开源平台:主要面向IoT场景的,部署在用户侧的物联网边缘平台,致力于解决在开发和部署物联网应用的过程中存在的问题,例如设备接入方式多样性问题等。这些平台部署于网关、路由器和交换机等边缘设备,为物联网边缘计算应用提供支持。

②网络边缘侧边缘计算开源平台:着眼于优化或重建网络边缘的基础设施以实现在网络边缘构建数据中心,并提供类似云中心的服务。网络运营商是此类边缘计算的主要推动者。

③云边协同边缘计算开源平台:基于“云边融合”的理念,致力于将云服务能力拓展至网络边缘。云计算服务提供商是此类边缘计算的重要推动者之一。

依据以上分类标准,将本文归纳的当前业界主流的边缘云开源项目分类如表1所示。

表1  边缘云开源项目分类表

云边端IOT 云边端技术_编程语言

 下文将根据以上的分类,简要归纳当前主流的开源平台的定位、架构及组件。

4  归纳

4.1  物联网用户侧边缘计算开源平台

(1)EdgeX Foundry

EdgeXFoundry是一个面向工业物联网边缘计算开发的标准化互操作性框架,部署于路由器和交换机等边缘设备上,为各种传感器、设备或其他物联网器件提供即插即用功能并管理它们,进而收集和分析它们的数据,或者导出至边缘计算应用或云计算中心做进一步处理。

EdgeX Foundry的设计满足硬件和操作系统无关性,并采用微服务架构,为每个接入的设备提供通用的RestfulAPI以操控该设备,便于大规模地监测控制物联网设备,满足物联网应用的需求。

EdgeX Foundry架构如图1所示。

云边端IOT 云边端技术_人工智能_02

BACNET:楼宇自动化与控制网络

BLE:低功耗蓝牙

MQTT:消息队列遥测传输

OPC-UA:OPC统一框架

REST:RESTful应用程序编程接口

SDK:软件开发工具包

SNMP:简单网络管理协议

VIRTUAL:虚拟设备

图1  EdgeXFoundry架构图

图1展示了EdgeX Foundry的架构。在图中的最下方是“南侧”,指的是所有物联网器件,以及与这些设备,传感器或其他物联网器件直接通信的边缘网络。在图的最上方是“北侧”,指的是云计算中心或企业系统,以及与云中心通信的网络部分。南侧是数据产生源,而北侧收集来自南侧的数据,并对数据进行存储、聚合和分析。如上图所示,EdgeXFoundry位于南侧和北侧两者之间,由一系列微服务组成,而这些微服务可以被分成4个服务层和2个底层增强系统服务。微服务之间通过一套通用的Restful应用程序编程接口(API)进行通信。

(2)Fledge

Fledge由Dianomic公司提供,以前被称为“Fog LAMP”。Fledge是面向工业领域的开源框架和社区,重点关注关键操作,预测性维护,态势感知和安全性。

Fledge的架构旨在将工业物联网(IIoT),传感器和现代机器与云以及现有的工业“棕色领域”系统、DCS(分布式控制系统)、PLC(程序逻辑控制器)和SCADA(监督控制和数据))集成在一起。所有这些系统都共享一组通用的管理和应用程序API。

在构建IoT应用程序时,Fledge的现代可插拔体系结构消除了工厂、工厂和矿山中经常出现的数据孤岛。通过使用一套一致的RESTful API来开发,管理和保护IIoT应用程序,Fledge创建了一个统一的解决方案。

Fledge架构如图2所示。

云边端IOT 云边端技术_网络_03

图2  Fledgy架构图

Fledge的工作流程:①从传感器终端上收集数据;②对所收集数据进行聚类分析;③对数据进行关键字筛选并传送,同时对数据进行保护;④边缘化无法分析的数据;⑤对多个目的终端提交整理好的数据。

Fledge与Project EVE紧密合作,该项目为Fledge应用程序和服务提供系统和编排服务以及容器运行时。在扩展规模时,工业运营商可以共同构建、管理、保护和支持其所有非SCADA,非DCS连接的机器,IIoT和传感器。Fledge还与AkrainoEdge Stack集成在一起,因为这两个项目都支持推出5G和专用LTE网络。

(3)IoFog

Eclipse ioFog是一个完整的边缘计算平台,提供了在企业级边缘构建和运行应用程序所需的所有组件。

ioFog的基本架构示意图如图3所示。

云边端IOT 云边端技术_人工智能_04

图3  ioFog的基本架构

控制器Controller:ioFog控制器是每个边缘计算网络的核心。控制器协调所有代理,微服务,路由器,用户等。Controller可以在运行代理的所有边缘节点均可通过网络访问的任何兼容硬件上运行。

代理商:ioFog代理是边缘计算网络的工作人员。每个代理都允许运行微服务、装载卷、管理资源等。ioFog代理直接向控制器报告,每个代理都将微服务作为Docker容器进行管理,并负责管理其使用寿命以及管理这些容器的Docker映像。代理通常将作为本机守护程序部署在边缘上。ioFog代理支持多种体系结构和平台,并且ioFog社区可以根据Controller to Agent REST API实现自己的代理。

微服务:边缘计算中最后一个绝对必要的组件是微服务。它们本质上是作为ioFog Agents上的Docker容器运行的小型应用程序。这些微服务中的许多可以在单个代理上运行。

4.2  网络边缘侧边缘计算开源平台

4.2.1  Akraino

Akraino Edge Stack是一个面向高性能边缘云服务的开源项目,并为边缘基础设施提供整体的解决方案,提供一组开放式基础架构和应用程序软件栈,涵盖了供提供商和企业边缘域使用的多种使用案例,包括5G,AI,Edge IaaS / PaaS, loT。这些软件栈是由Akraino社区创建的,专门针对各种形式的边缘。所有这些软件栈的统一之处在于它们已经由社区进行了测试,可以按原样使用,或者用作自定义新边缘软件栈的起点。

Akraino Edge Stack致力于优化边缘基础设施的网络构建和管理方式,以满足边缘计算云服务的要求,比如高性能、低延迟和可扩展性等。Akraino Edge Stack项目涉及的范围从基础设施延伸至边缘计算应用,其范围可以划分为3个层面。

Akraino Edge Stack架构如图4所示。

云边端IOT 云边端技术_云边端IOT_05

图4  Akraino架构图

在最上面的应用层面,AkrainoEdge Stack致力于打造边缘计算应用程序的生态系统以促进应用程序的开发。中间层面着眼于开发中间件和框架以支持上面层次的边缘计算应用。在这个层面中,AkrainoEdge Stack将开发API和框架以接入现有互补性的开源边缘计算项目,例如上述的面向物联网的互操作性框架EdgeX Foundry,最大化利用开源社区的现有成果。在最下面的基础设施层面中,AkrainoEdge Stack将提供一套开源软件栈用于优化基础设施。此外,Akraino Edge Stack为每种使用案例提供蓝图以构建一个边缘计算平台。每个蓝图是涵盖上述3个层次的声明性配置,其中包括对硬件、各层面的支撑软件、管理工具和交付点等的声明。

4.2.2  CORD

CORD(Central Office Re-architected as a Datacenter,端局的数据中心化重构)综合NFV、SDN、云计算等技术,将数据中心生态和云计算灵活性引入电信COs,构建CORD开放参考平台,使得运营商管理员能够基于显示模型语言对COs进行管理,并为客户服务进行灵活、实时的配置分发。

CORD利用数据中心中的leaf-spine分布式核心网络架构和白盒设备来重构运营商的端局,其中leaf叶节点负责连接服务器和网络设备,spine针节点负责连接交换机,保证节点内的任意两个端口之间提供延迟非常低的无阻塞性能,从而实现从接入到云平台的敏捷服务。

CORD参考架构是一个对多种开源技术集成的架构,如图5所示。其中主要包括硬件和软件两大模块。

云边端IOT 云边端技术_编程语言_06

图5  CORD架构图

(1)底层是商业化硬件fabric,由通用服务器和白盒交换机组成。交换机fabiric采用leaf-spine拓扑,实现东西向流量优化。

(2)上层是软件模块,包括4个开源项目组件:

①OpenStack:集群管理,提供核心IaaS能力,负责创建和部署虚机及虚拟化网络。

②Docker:提供基于容器的服务部署和互联方式,同时,也是实现CORD系统本身部署的重要方式。

③ONOS:网络操作系统,管理underlay白盒交换矩阵,托管控制面应用,实现虚拟网络与underlay网络的关联。

④XOS:业务构建和分发框架,统一了基础设施服务(OpenStack提供)、控制面服务(ONOS提供)、及数据面和云服务(运行在虚机和容器中)。

4.2.3  StarlingX

StarlingX是一个面向边缘计算的OpenStack集成平台,主要包括如下子项目:Config project. Fault project、HA project、GUI project、Metal project、NFV project、Update project、Distributed Cloud project。

StarlingX 由OpenStack Edge Working Group与Linux Akraino Edge Stack共同推进,计划2018年发布1个版本,2019年以后每年发布3个版本。

StarlingX项目目标:高可用、健壮;高性能、低时延;高安全性;涵盖单服务器到100+服务器部署场景;降低StarlingX基础设施占地空间;满足所有边缘计算需求;简单、易用。

StarlingX主要包括6大组件,用于管理OpenStack裸金属部署环境,示意图如图6所示。

云边端IOT 云边端技术_编程语言_07

图6  StarlingX架构图

(1)配置管理Configuration Management:提供主机安装Host Installation,资源发现和主机配置Inventory Discovery and Host Configuration(该功能未来将转移至主机管理模块);提供系统级配置,及StarlingX平台服务配置;为所有核心组件提供API、Horizon、CLI服务。

(2)主机管理Host Management:提供主机生命周期管理、运营管理;提供主机故障监控告警,并触发故障恢复处理。

(3)服务管理Service Management:为控制节点的StarlingX和OpenStack服务提供高可用集群管理。

(4)软件管理Software Management:软件补丁管理和部署;软件版本升级管理。

(5)故障管理Fault Management:为其他StarlingX组件提供告警和日志报告服务。

(6)补丁和升级编排服务。

4.3  云边协同边缘计算开源平台

(1)Baetyl(OpenEdge)

OpenEdge是百度开源的开放边缘计算平台,后面改名为Baetyl。2019年9月23日,百度智能云宣布将百度智能边缘计算框架BaetyI捐赠给Linux Foundation Edge社区。

Baetyl(发音为“Beetle”)提供了一种用于边缘计算的通用平台,该平台将不同类型的硬件设施和设备功能操纵到标准化的容器运行时环境和API中,从而可以通过远程控制台高效地管理应用程序。Baetyl还为边缘操作系统配备了适当的工具链支持,并通过一组内置服务和API降低了开发边缘计算的难度,并计划在将来提供图形化IDE。

Baetyl和智能边缘BIE(Baidu-IntelliEdge)云端管理套件配合使用,通过在云端进行智能边缘核心设备的建立、存储卷创建、服务创建、函数编写,然后生成配置文件下发至Baetyl本地运行包,整体可达到边缘计算、云端管理、边云协同的效果,满足各种边缘计算场景。

云边端IOT 云边端技术_编程语言_08

图7  Baetyl架构图

Baetyl架构如图7所示。在架构设计上,Baetyl一方面推行模块化,拆分各项主要功能,确保每一项功能都是一个独立的模块,整体由主程序控制启动、退出,确保各项子功能模块运行互不依赖、互不影响;总体上来说,推行模块化的设计模式,可以充分满足用户按需使用、按需部署的切实要求;

另一方面,Baetyl在设计上还采用全面容器化的设计思路,基于各模块的镜像可以在支持Docker的各类操作系统上进行一键式构建,依托Docker跨平台支持的特性,确保Baetyl在各系统、平台的环境—致;此外,Baetyl还针对Docker容器化模式赋予其资源隔离与限制能力,精确分配各运行实例的CPU、内存等资源,提升资源利用效率。

 

(2)Azure loT Edge

Azure IoT Edge是基于物联网(IoT)中心构建的

IoT服务,是一种混合云和边缘的边缘计算框架,旨在将云功能拓展至如路由器和交换机等具备计算能力的边缘设备上,以获得更低的处理时延和实时反馈。

Azure IoT Edge架构如图8所示,AzureIoTEdge由IoTEdge模块、IoTEdge运行时和IoTEdge云界面组成,前两者运行在边缘设备上,后者则是一个在Azure云上提供服务的管理界面。

云边端IOT 云边端技术_云边端IOT_09

图8  Azure IoT Edge架构图

①IoTEdge模块。IoTEdge模块对应于用户的边缘计算应用程序。一个模块镜像即一个Docker镜像,模块里包含用户的应用代码,而一个模块实例就是一个运行着对应的模块镜像的Docker容器。基于容器技术,IoTEdge具备可扩展性,用户可动态添加或删除边缘计算应用。由于相同的编程模型,Azure机器学习和Azure数据流分析等Azure云服务也可以部署到IoTEdge模块,此特性便于在网络边缘部署复杂的人工智能应用,加快了开发过程。

②IoTEdge运行时。IoTEdge运行时由IoTEdge中心和IoTEdge代理2个组件构成,前者负责通信功能,后者负责部署和管理IoTEdge模块,并监测控制模块的运行。IoT中心是在Azure云上的消息管理中心,IoT Edge中心与IoT中心连接并充当其代理。IoT Edge中心通过MQTT、高级消息队列协议(AMQP)和HTTPS协议获取来自传感器和设备的数据,实现设备接入的功能。此外,IoT Edge中心作为消息中转站,连接IoTEdge模块之间的消息通信。IoTEdge代理从IoTHub接收IoTEdge模块的部署信息,实例化该模块,并保证该模块的正常运行,如对故障模块进行重启,并将各模块的运行状态报告至IoT中心。

③IoT云界面。云界面提供了设备管理的功能。用户通过云界面进行添加设备,部署应用和监测控制设备等操作,为用户大规模部署边缘计算应用提供了方便。

(3)CNCF KubeEdge

KubeEdge是首个基于Kubernetes扩展的,提供云边协同能力的开放式智能边缘平台,也是CNCF在智能边缘领域的首个正式项目。它构建在Kubernetes之上,为网络和应用程序提供核心基础架构支持,并在云端和边缘端部署应用,同步元数据。100%兼容K8S API,可以使用K8S API原语管理边缘节点和设备。KubeEdge还支持MQTT协议,允许开发人员编写客户逻辑,并在边缘端启用设备通信的资源约束。

KubeEdge架构如图9所示,清晰地分为3层,分别是云端、边缘和设备层,这是一个从云到边缘再到设备的完整开源边缘云平台。

云边端IOT 云边端技术_编程语言_10

图9  KubeEdge的架构

KubeEdge由以下组件构成。

云端通信:CloudHubCloudHub是一个Web Socket服务端,用于大量的edge端基于websocket或者quic协议连接上来。负责监听云端的变化,缓存并发送消息到EdgeHub。EdgeHub:是一个Web Socket客户端,负责将接收到的信息转发到各edge端的模块处理;同时将来自个edge端模块的消息通过隧道发送到cloud端。提供可靠和高效的云边信息同步。

云上部分:EdgeController:用于控制Kubernetes API Server与边缘的节点、应用和配置的状态同步。DeviceController:DeviceController是一个扩展的Kubernetes控制器,管理边缘设备,确保设备信息、设备状态的云边同步。

边缘部分:MetaManager:MetaManager模块后端对应一个本地的数据库(sqILite),是边缘节点自治能力的关键;Edged:是运行在边缘节点的代理,用于管理容器化的应用程序。算是个重新开发的轻量化Kubelet,实现Pod,Volume,Node等Kubernetes资源对象的生命周期管理。EventBusEventBus是一个与MQTT服务器(mosquitto)交互的MQTT客户端,为其他组件提供订阅和发布功能。ServiceBus:ServiceBus是一个运行在边缘的HTTP客户端,接受来自云上服务的请求,与运行在边缘端的HTTP服务器交互,提供了云上服务通过HTTP协议访问边缘端HTTP服务器的能力。DeviceTwin:DeviceTwin负责存储设备状态并将设备状态同步到云,它还为应用程序提供查询接口。

(4)Link IoT Edge

物联网边缘计算,又名Link IoT Edge,是阿里云能力在边缘端的拓展,专为物联网开发者推出,继承了阿里云安全、存储、计算、人工智能的能力,可部署于不同量级的智能设备和计算节点中,提供稳定、安全、多样的边缘到IoT设备的通信连接,同时可以结合阿里云的大数据、AI学习、语音、视频等能力,打造出云边端三位一体的计算体系。此外,Link Edge还支持设备接入、函数计算、规则引擎、路由转发、断网续传等功能。

物联网边缘计算组件主要涉及设备端、边缘计算端和云端3个部分,架构示意图如图10所示。

云边端IOT 云边端技术_大数据_11

图10 Link IoT Edge架构示意图

①设备端:开发者使用设备接入SDK,将非标设备转换成标准物模型,就近接入网关,从而实现设备的管理和控制。

②边缘计算端:设备连接到网关后,网关可以实现设备数据的采集、流转、存储、分析和上报设备数据至云端,同时网关提供规则引擎、函数计算引擎,方便场景编排和业务扩展。

③云端:设备数据上传云端后,可以结合阿里云功能,如大数据、AI学习等,通过标准API接口,实现更多功能和应用。

 

5  结束语

从文中归纳的边缘云开源项目在功能和架构上的不同,可进一步分类如表2所示。

表2  边缘云开源项目功能细分图

云边端IOT 云边端技术_云边端IOT_12

当前,边缘计算平台仍处于快速发展时期,结合对上文的探讨对其未来的发展趋势分析如下:

(1)面向特定应用场景的专用性边缘计算平台将迅速发展。目前,智能家居、智能工厂和智慧城市都是受关注的应用场景,如何系统化支持这些场景的功能需求是边缘计算平台的发展趋势之一。

(2)边缘计算平台的数据安全与隐私保护问题将变得更加突出。边缘设备相互协作时的数据安全如何保证、边缘平台如何避免暴露用户的位置隐私信息、尤其是边缘计算设备的计算资源、存储能力有限,使得边缘计算平台的安全防御具有更高的挑战性。

(3)边缘计算平台将结合更多人工智能技术。目前,以深度学习为代表的人工智能技术发展十分迅速,但“智能边缘”的研究才刚刚起步,未来的边缘计算平台将引入人工智能技术,实现边缘数据的智能处理。