草庐IT

边缘计算系统逻辑架构:云、边、端协同,定义及关系

清如许. 2023-04-19 原文

引言

5G和物联网时代的到来,海量数据的产生与任务计算对现有网络产生极大的冲击,基于Internet的云计算虽然提供了对虚拟共享的可配置计算和存储资源的广泛访问和按需访问,是处理海量数据与计算任务的绝佳平台,但是对于5G时代的诸如在线游戏、虚拟现实和超高清视频流等高速访问超低延时的应用和海量终端互联来说,云计算是无法满足其要求的。

与此同时,下一代互联网的关键特征之一是信息越来越多地在本地生成并在本地消费,且大量的边缘设备存在可用计算和存储资源。因此,为应对云计算存在的挑战、网络压力和提升用户体验满足业务需求,业界提出将云计算平台迁移至网络边缘,即边缘计算,发掘网络的内在能力在数据源附近提供边缘服务,以满足在敏捷连接性、实时优化、智能应用、安全性和隐私性方面的关键要求.

1、“云-边-端”架构

在面向新一代信息基础设施的物联网体系架构中,数据处理以及基于数据的智能服务变得越来越重要。
前两年出现了一个比较热的词,叫做"边缘计算",是指把简单的、需要实时计算和分析的过程放到离终端设备更近的地方,以保证数据数据处理的实时性,同时也减少数据传输的风险
最近又出现了一个新的热词,叫做“云边协同”,其含义跟边缘计算相差不是很大,只是强调“云-边-端”这样的架构,终端负责全面感知,边缘负责局部的数据分析和推理,而云端则汇集所有边缘的感知数据、业务数据以及互联网数据,完成对行业以及跨行业的态势感知和分析。

  • “云” 是传统云计算的中心节点,是边缘计算的管控端;
  • “边” 是云计算的边缘侧,分为基础设施边缘和设备边缘;
  • “端” 是终端设备,如手机、智能家电、各类传感器、摄像头等。


基于AI的智能服务则是贯穿“云-边-端”整个架构,在感知终端,AI技术旨在提高全面感知的敏感性、准确性以及人机交互、物物交互的实时性,同时也可以通过芯片来进行简单的逻辑推理。

在边缘处

AI技术主要负责汇集该域内的局部数据以及相关的业务数据,完成感知数据的分析和推理,并且能够把相关的分析结果或模型传送给感知终端,达到感知终端与边缘云的协同,同时,边缘云与边缘云之间也可以通过联网共享,共享数据、资源、算法等,完成边缘云之间的相互协同。

在云端

不仅需要提供类似边缘云的云计算相关的存储、计算、网络、安全资源,还需要汇集、融合所有的数据,提供基于全局数据的智能服务,包括智能调度、运维、宏观决策等。

云中心擅长全局性的、非实时的、长周期的大数据处理与分析,能够在长周期维护、业务决策支撑等领域发挥优势。
边缘计算更适合局部性、实时、短周期数据的处理与分析,能更好地支撑本地业务的实时智能化决策与执行。边缘计算与云中心是互补协同的关系,边云协同将放大边缘计算与云计算的应用价值:边缘计算既靠近执行单元,更是云端所需高价值数据的采集和初步处理单元,可以更好地支撑云端应用;反之,云计算通过大数据分析处理优化输出的业务规则或模型可以下发到边缘侧,边缘计算基于新的业务规则或模型运行。


从表中可以看出云计算和边缘计算是各有优势的,云计算的主要优势是海量计算和海量存储、计算效率高、广域覆盖,适合计算密集型、非实时性的计算任务和海量数据的并行计算与存储,能够在长周期维护、业务决策支撑等领域发挥优势,并且计算硬件都集中在云计算中心,实行集中式的管理,因此无需在本地维护计算硬件、数据存储和相关软件。

边缘计算的主要优势是广泛分布的边缘节点提供了实时的数据处理,边缘计算的过程是一个以用户和应用为中心的过程,弥补了云计算中时延和移动性的缺陷,适合非计算密集型、实时性、移动性数据的处理分析和实时智能化决策,并且作为一种新的网络范式能够满足5G 时代计算需求的空前增长和用户体验质量的不断提高,数据的本地化处理相较于云端也更安全。

但是,边缘平台的处理性能通常不如云平台,它通常没有足够的内存和处理器来处理大量数据,因此无法执行复杂的操作,例如深度学习

除了云边协同,由图上图可知,逻辑架构侧重边缘计算系统云、边、端各部分之间的交互和协同,包括云、边协同,边、端协同和云、边、端协同3个部分。

  • 1、云、边协同:通过云部分Kubernetes的控制节点和边部分KubeEdge所运行的节点共同实现。

Kubernetes控制节点沿用云部分原有的数据模型,保持原有的控制、数据流程不变,即KubeEdge所运行的节点在Kubernetes上呈现出来的是一个普通节点。Kubernetes可以像管理普通节点一样管理KubeEdge所运行的节点。
KubeEdge之所以能够运行在资源受限、网络质量不可控的边缘节点上,是因为KubeEdge在Kubernetes控制节点的基础上通过云部分的CloudCore和边缘部分的EdgeCore实现了对Kubernetes云计算编排容器化应用的下沉。
如下图所示:

  • 2、边、端协同:通过边部分KubeEdge和端部分EdgeX Foundry共同实现。

KubeEdge作为运行在边缘节点的管理程序,负责管理在边缘节点上应用负载的资源、运行状态和故障等。在一些的边缘计算系统中,KubeEdge为EdgeX Foundry服务提供所需的计算资源,同时负责管理EdgeX Foundry端服务的整个生命周期。
EdgeX Foundry是由KubeEdge管理的一套IoT SaaS平台。该平台以微服务的形式管理多种物联网终端设备。同时,EdgeX Foundry可以通过所管理的微服务采集、过滤、存储和挖掘多种物联网终端设备的数据,也可以通过所管理的微服务向多种物联网终端设备下发指令来对终端设备进行控制。

  • 3、云、边、端协同:通过云解决方案Kubernetes的控制节点、边缘解决方案KubeEdge和端解决方案EdgeX Foundry共同实现。



参考资料

有关边缘计算系统逻辑架构:云、边、端协同,定义及关系的更多相关文章

  1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  2. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  3. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  4. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  5. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  6. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  7. ruby - 定义方法参数的条件 - 2

    我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano

  8. ruby - 如何在 Grape 中定义哈希数组? - 2

    我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>

  9. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  10. ruby - 这两个 Ruby 类初始化定义有什么区别? - 2

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是

随机推荐