你爱或者不爱,他都在那里 - 云/边/端三协同下的边缘计算
首先,我们要来科普一下『边缘计算』。
你去百度或者Google搜索,会有一大段的概念映入眼帘:
在百度百科上:
边缘计算,是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。边缘计算处于物理实体和工业连接之间,或处于物理实体的顶端。而云端计算,仍然可以访问边缘计算的历史数据。
在维基百科上:
边缘运算(英语:Edge computing),又译为边缘计算,是一种分布式运算的架构,将应用程序、数据资料与服务的运算,由网络中心节点,移往网络逻辑上的边缘节点来处理[1]。边缘运算将原本完全由中心节点处理大型服务加以分解,切割成更小与更容易管理的部分,分散到边缘节点去处理。边缘节点更接近于用户终端设备,可以加快资料的处理与发送速度,减少延迟。在这种架构下,资料的分析与知识的产生,更接近于数据资料的来源,因此更适合处理大数据。
好了,老哥们,看完这么牛逼的简介,谁来给我介绍一下「边缘计算」到底是什么?
说实话,在下第一次接触这个概念也是「懵逼」的。然后我个人进行了一番总结和归纳,下面我用最通俗的语言来教教大家什么才是「边缘计划」。
个人理解
我们可以通俗的讲,边缘计算产生的契机就是物联网或者广义上的工业互联网。
边缘计算概念其实在2013年就已经提出,正在引起关注是在2020年,为什么呢?因为5G的诞生。
2020年时5G商用元年,5G引领"新基建",已经成为国之重器。
我们直接引用一段话:
4G是改变生活,5G改变社会。5G是各行各业创新发展的使能者,通过5G与工业、交通、农业等垂直行业广泛、深度融合,从支撑移动互联网向支撑各行业互联全新转型,催生更多创新应用及业态,并进一步惠及民生。
于是乎,一方面,5G催生海量的边缘数据中心需求,云计算的中心化能力在网络边缘存在诸多不足,影响用户体验;另一方面,5G的三大典型应用场景(eMBB、uRLLC、mMTC)对网络性能的要求有显著差异。承载网的带宽瓶颈、时延抖动等性能瓶颈难以突破,5G业务的终结点不可能完全都在云端。引入边缘计算后将部分业务在网络边缘终结,减轻对网络传输和云端的压力。
我们可以用一句最通俗易懂的话解释一下:服务器懒得算,谁采集的在客户端谁处理一下得了。
我们在举个例子,很多APP都有基于用于的浏览、购买、搜索信息进行推荐的功能,也就是我们常说的「推荐系统」。
在云计算时代,我们是怎么玩的呢?
APP埋点,收集信息,经过消息队列,消费到数据仓库中,然后组织数据模型,提交给算法模型,算法模型产出结果,识别用的兴趣偏好,推动结果给前端展示。
如果是「边缘计算」,应该是这么玩的。
APP收集信息,不要上传到服务器,由APP本身进行计算,识别出当前用户的兴趣偏好。后端服务器只需要问一下APP端拿到需要的结果即可。
这时候有人就要问了,你说的轻松哦。在APP端计算,用户答应吗?你把用户的手机和电脑当成资源使用了?
没错,事实上就会出现这样的情况。现在用户的手机早已经不是5年前的时候了,手机的性能过剩普遍存在。另外还有一点就是,哪些计算过程需要在端上进行,哪些运行需要在后端服务器进行也不是一刀切的,需要根据实际情况来。
发展现状
随着5G逐渐商用,边缘计算逐渐成为IT/CT界的热词,上至谷歌、微软,下至通信运营商、设备商、云服务商,都快速对边缘计算展开布局。边缘计算的几个重要玩家也是公有云的巨头,亚马逊、微软、Google 先后有自己的布局。
国外,早在2017年,亚马逊就推出 AWS Greengrass,这是一个可以将亚马逊 AWS 服务部署到终端设备的产品,官方称,通过 Greengrass,可以实现本地数据收集、处理,同时云端还可以继续管理数据,这算是业界探索算力下沉,云边协同的最早探索。
时至2020年,谷歌推出了 GMEC(全球移动边缘云计算)电信专用平台,致力于提供通过5G网络交付的,在边缘云运行的独特应用服务。微软收购5G边缘计算公司:Affirmed Networks,该公司主要为电信运营商提供完全虚拟化的云原生网络解决方案。
国内,主流云服务商加快布局边缘计算,占下国内边缘计算的一席之地。阿里发布边缘节点服务(Edge Node Service, ENS),并发布了首个IoT边缘计算产品Link Edge;华为发布了基于边缘计算的物联网EC-IoT解决方案以及智能边缘平台IEF智能边缘平台(Intelligent EdgeFabric )满足客户对边缘计算资源的远程管控、数据处理、分析决策、智能化的诉求, 为用户提供完整的边缘和云协同的一体化服务。腾讯云则采取了"CDN+云"的路线让CDN具备智能计算的能力,推出智能边缘计算网络平台TSEC。
边缘计算的优势与场景
虽然边缘计算目前主要关注的是在制造、零售等特定行业中嵌入式物联网系统提供的离线或分布式能力,但随着边缘被赋予越来越成熟和专业的计算资源及越来越多的数据存储,未来边缘计算或许将成为主流部署。具体来看,边缘计算的优势及相应的应用场景主要有以下几点:
数据处理与分析的快速、实时性
边缘计算距离数据源更近,数据存储和计算任务可以在边缘计算节点上进行,更加贴近用户,减少了中间数据传输的过程,从而提高数据传输性能,保证实时处理,减少延迟时间,为用户提供更好的智能服务。在自动驾驶、智能制造等位置感知领域,快速反馈尤为重要,边缘计算可以为用户提供实时性更高的服务。边缘计算的实时性优势对于“预测性维护”也有重要价值,有助于通过分析设备实时监测数据,预测设备可能出现的故障,提出故障原因和解决方案,使维护更加智能化。
安全性
由于边缘计算只负责自己范围内的任务,数据的处理基于本地,不需要上传到云端,避免了网络传输过程带来的风险,因此数据的安全可以得到保证。一旦数据受到攻击,只会影响本地数据,而不是所有数据。学术界对边缘计算在安全监视领域中的应用持比较乐观的态度,安全监视在实时性、安全性等方面都有较高的要求,必须及时发现危险并发出警报。基于边缘计算的图像处理在实时性要求高、网络质量无法保证、涉及隐私的场景中,可以提供更好的服务,例如可监视银行金库等场景的越过警戒线、徘徊等行为。
低成本、低能耗、低带宽成本
由于数据处理不需要上传到云计算中心,边缘计算不需要使用太多的网络带宽,随着网络带宽的负荷降低,智能设备的能源消耗在网络的边缘将大大减少。因此,边缘计算可以助力企业降低本地设备处理数据的成本与能耗,同时提高计算效率。随着云计算、大数据、人工智能等技术发展,网络直播与短视频发展迅猛,在金融领域的应用也越来越多。在有限的带宽资源面前,可以利用边缘计算来降低成本,例如当用户发出视频播放请求时,视频资源可以实现从本地加载的效果,在节省带宽的同时,也能够提高用户体验质量,降低延时。
5G、边缘计算、分布式云协同发展
5G的商业化推进为边缘计算发展带来了机遇。网络切片技术是5G的特点之一,简单来说就是将一个物理网络切割成多个虚拟的网络切片,每个虚拟网络切片具备不同的功能特点,可以面向低延时、大容量等不同的需求进行服务。为了实现网络切片,网络功能虚拟化(NFV)是先决条件,虚拟化后,终端接入的部分就是边缘云(Edge Cloud),而核心网部分则是核心云(Core Cloud)。因此,边缘计算的发展与5G密切相关。
同时,5G催生的海量边缘连接场景,也驱动着分布式云的发展。分布式云指将集中式的公有云服务分布到不同的物理位置,能够为具有低延迟、降低数据成本需求和数据驻留要求的企业级解决方案提供更加灵活的环境,根据部署位置的不同、基础设施规模的大小、服务能力的强弱等要素,分布式云一般包含中心云、区域云和边缘云三个业务形态。Gartner认为,所有分布式云的实例都是边缘计算的实例,但并非所有边缘计算实例都是分布式云,因为边缘的很多应用都涉及公有云提供商。
金融领域有很多对实时性、安全性较高的场景,5G、边缘计算、分布式云的协同发展能够带来更多的可能性。例如针对金融业务特点,在智能客服、实时决策等人工智能场景,可以在人工智能+边缘计算的基础上,构建云边端三体协同和分布式架构;对于数据智能的实现,可以在云端配置超级大脑,在边缘和终端部署多个智能体,通过边缘计算降低数据生产与决策之间的延迟。
开源!开源!
目前,在推进边缘计算的标准组织主要有三个,分别是:
Linux 基金会下的 LF Edge (Linux Foundation Edge)和致力于推进 Cloud Native 的 CNCF(Cloud Native Computing Foundation)
Eclipse 基金会下面的 Eclipse IoT 项目
OpenStack 基金会
面向物联网端的边缘计算开源平台,致力于解决在开发和部署物联网应用的过程中存在的问题,例如设备接入方式多样性问题等。这些平台部署于网关、路由器和交换机等边缘设备, 为物联网边缘计算应用提供支持。代表性的平台是Linux基金会发布的 EdgeXFoundry和 Apache软件基金会的Apache Edgent。
好了,我们简单研究一下Apache Edgent。
Apache Edgent 是一个开源的编程模型和微内核风格的运行时,它可以被嵌入到边缘设备上,用于提供对连续数据流的本地实时分析。Edgent解决的问题,是如何对来自边缘设备的数据进行高效的分析处理。为加速边缘计算应用在数据分析处理上的开发过程,Edgent 提供一个开发模型和一套API用于实现数据的整个分析处理流程。
Apache Edgent 目前还处于 Apache 基金会的孵化项目阶段。
该模型由提供者、拓扑、数据流、数据流的分析处理、后端系统5个组件组成。
提供者。一个提供者对象包含了有关Edgent应用程序的运行方式和位置信息,并具有创建和执行拓扑的功能
拓扑。拓扑是一个容器,描述了数据流的来源和如何更改数据流的数据。数据的输入、处理和导出至云的过程都记录在拓扑中。
数据流。Edgent提供了多种连接器以不同方式接入数据源,比如支持消息队列遥测传输(MQTT)、超文本传输协议(HTTP)和串口协议等,用户还可以添加自定义代码以控制 传感器或设备的数据输入。此外,Edgent的数据不局限于来自真实传感器或者设备的数据,还支持文本文件和系统日志等。
数据流的分析处理。Edgent提供一系列功能性的API 以实现对数据流的过滤、分裂、 变换和聚合等操作。
后端系统。由于边缘设备的计算资源稀缺,Edgent 应用程序无法支撑复杂的分析任务。用户可以使用连接器,通过MQTT和ApacheKafka方式连接至后端系统,或者连接至IBMWatson IoT平台进一步对数据做处理。
Edgent 应用可部署于运行 Java虚拟机的边缘设备中,实时分析来自传感器和设备的数据, 减少了上传至后端系统如云数据中心的数据量,并降低了传输成本。
Edgent的主要系统特点是提供了一套丰富的数据处理API,切合物联网应用中数据处理的实际需求,降低应用的开发难度并加速开发过程。Edgent的主要应用领域是物联网,此外,它还可以被用于分析日志、文本等类型的数据,例如嵌入服务器软件中用以实时分析错误的日志。
至于代码,非常非常简单。官网还给我们提供了一个直接访问的案例:http://edgent.incubator.apache.org/docs/quickstart.html
一段简单的代码:
// Declare a connection to IoTP Quickstart service
String deviceId = "qs" + Long.toHexString(new Random().nextLong());
IotDevice device = IotpDevice.quickstart(topology, deviceId);
TStream<JsonObject> json = raw.map(v -> {
JsonObject j = new JsonObject();
j.addProperty("temp", v[0]);
j.addProperty("humidity", v[1]);
j.addProperty("objectTemp", v[2]);
return j;
});
device.events(json, "sensors", QoS.FIRE_AND_FORGET);