草庐IT

边缘计算:一文理解云边端协同架构中的高性能云计算、边缘计算、云边协同

清如许. 2023-08-16 原文

一、引言

1、云计算与物联网

通俗来说,在近几十年物联网的飞速发展过程中,经历了从云计算中心与终端物联设备直接交互———物联网通过数量惊人的传感器采集到难以计数的数据量,而云计算可以对这些海量数据进行智能处理。

·
云计算是物联网发展的基石,而物联网又是云计算的最大用户,促进着云计算的发展。二者的融合可谓珠联璧合,相辅相成。在大数据时代,二者的融合将进一步推动数据价值的挖掘,使数据价值进一步显现,促进产业爆发。

然后 5G时代的到来,海量数据的产生与任务计算对现有网络将会产生更加强烈的冲击。基于Internet 的云计算虽然提供了对虚拟共享的可配置计算和存储资源的广泛访问和按需访问,是处理海量数据与计算任务的绝佳平台.

但是对于5G时代的诸如在线游戏、虚拟现实和超高清视频流等高速访问超低延时的应用和海量终端互联来说,云计算是无法满足其要求的。数据是任何正常业务的核心。多年来,前所未有的计算能力和连接设备积累了大量数据,给本已拥挤的互联网造成了巨大压力。这种大量的数据积累会导致带宽和延迟问题。与在客户端或用户计算机上生成数据的传统企业计算不同,边缘计算提供了一种更好的替代方案,可以从管理复杂数据转向靠近原始数据源。

2、边缘计算

与此同时,下一代互联网的关键特征之一是信息越来越多地在本地生成并在本地消费,且大量的边缘设备存在可用计算和存储资源。因此,为应对云计算存在的挑战、网络压力和提升用户体验满足业务需求,业界提出将云计算平台迁移至网络边缘,即边缘计算

边缘计算通过将计算、存储等能力从云数据中心扩展到离数据源较近的网络边缘而不是集中式服务器或基于云的位置对客户端数据的处理和计算(简而言之,边缘计算使计算资源、数据存储和企业应用程序更接近人们实际消费信息的地方),并且可支持在网络边缘执行深度学习、强化学习等人工智能算法,避免计算任务从网络边缘传输到远程数据中心的超长网络传输延迟,满足高实时性物联网应用(例如,自动驾驶、无人机、增强现实等)的要求。

图1 边缘计算架构图

边缘计算技术还可避免因数据在公网传输、公共数据中心处理所带来的隐私泄露等安全隐患。因此,边缘计算已成为下一代网络发展的关键技术。发掘网络的内在能力。在数据源附近提供边缘服务,以满足在敏捷连接性、实时优化、智能应用、安全性和隐私性方面的关键要求。

二、云边协同

当前绝大多数的研究都将云计算和边缘计算隔离开来,分别致力于云计算和边缘计算的架构和系统分析优化层面,较少关注云计算和边缘计算之间的协同问题。近年来物联网和5G通信的发展让大家开始关注到云计算和边缘计算各自存在的优势与劣势,并开始思考二者优势互补的价值所在,即云边协同

1、云边协同关系

云计算技术以廉价且大量的计算服务器提供了强大的计算能力,可以为用户和应用提供按需访问的丰富计算资源和存储资源。但是,云计算中心通常距离用户和终端较远,导致计算任务传输时间过长,并且如果将海量终端的数据都传输至云计算中心必将造成核心网拥塞,极大地浪费了通信资源。

因此,云计算并不适合要求低时延、实时操作和高 QoS的应用,并且无法支持无缝移动和无处不在的计算覆盖,数据安全性和用户的隐私也不能得到有效保障。

另一方面,虽然边缘计算将云计算功能扩展到了网络边缘,更加接近终端用户且地理位置分散,可以支持低时延、位置感知、高移动性和高Qos的应用服务。但是,边缘计算单元通常没有充足的计算资源和存储资源来满足海量数据的计算和存储,并且由于边缘节点的低功耗、异构性和功能薄弱单一等约束,服务的质量与可靠性还会受到影响。

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

边缘计算的主要优势是广泛分布的边缘节点提供了实时的数据处理,边缘计算的过程是一个以用户和应用为中心的过程,弥补了云计算中时延和移动性的缺陷,适合非计算密集型、实时性、移动性数据的处理分析和实时智能化决策,并且作为一种新的网络范式能够满足5G 时代计算需求的空前增长和用户体验质量的不断提高,数据的本地化处理相较于云端也更安全。但是,边缘平台的处理性能通常不如云平台,它通常没有足够的内存和处理器来处理大量数据,因此无法执行复杂的操作,例如深度学习

因此,通过将网络转发、存储、计算、智 能化数据分析等工作放在边缘处理,将超大规模计算、存储和非时延敏感等任务放在云端,云计算与边缘计算的相互配合实现云边协同、全网算力调度和全网统一管控等能力,才能真正实现无处不在的云。

2、云边协同的实现

云边协同即实现边缘计算与云计算的协同联动,共同释放数据价值。

  • 传统的云边协同方式主要是当终端设备产生数据或任务请求后,通过边缘网络将数据上传至边缘服务器,由位于边缘计算中心的边缘服务器执行计算任务。
  • 计算量较大、复杂度较高的计算任务将由边缘计算中心向上通过核心网迁移至云计算中心。
  • 待云计算中心完成大数据分析后再将结果和数据存储至云计算中心或将计算结果、优化输出的业务规则、模型通过核心网下发至边缘计算中心,由边缘计算中心向下通过边缘网络将计算结果传输至终端设备。
  • 边缘根据云计算下发的新业务规则进行业务执行优化处理,由此实现云边协同

3、云边协同的应用

我们生活在智能设备和快速发展的万物互联中的世界。在日常生活中我们早已被边缘计算所包围。云边协同的主要应用场景与边缘计算、物联网的应用场景联系紧密,从远程办公室工作到远程手术,从智能手机到智慧城市,从自动驾驶汽车到语音控制设备,一切都得益于边缘云技术。如下主要有:

  • 1、物联网云边协同,
    如智慧交通、自动驾驶汽车。汽车驾驶自动的新时代需要信息、计算、决策等的快速响应。将自动驾驶汽车带到边缘涉及在车辆行驶时实时接收有关速度、交通状况、交通信号、行人、车辆推测、道路状况和其他车辆的信息。边缘计算正在推动自动驾驶汽车的创新,因为边缘计算具有零延迟等优势。这方面的信息延迟可能是危及生命和拯救生命之间的全部区别。

  • 2、虚拟现实与游戏。
    在线游戏和虚拟现实的关键要求之一需要高速运行。这些通常与高延迟和延迟问题作斗争,导致游戏玩家反应严重延迟。边缘计算可以通过创建更靠近游戏玩家的边缘服务器来使游戏受益,从而减少延迟并提供丰富且身临其境的游戏体验。

  • 3、智慧城市
    智慧城市依赖于海量数据。边缘计算可以为智能城市的所有元素提供动力,包括自动驾驶汽车、智能路灯、智能工厂、智能电网和公共交通,以提高效率进行监控。

  • 4、智慧家庭云边协同,如小米智能家居
    通过构建家庭局域网,实现电器控制、安全保护、定时控制、环境检测、场景控制、可视对讲等

  • 5、虚拟网络
    如中国电信内容边缘化分发缓存的虚拟网络,能够缓解网络压力,提升视频业务体验、提升内容分发网络节点满足资源弹性伸缩能力。

  • 6、安防监控
    实现数据分流、边缘智能、本地决策、实时响应

三、总结

综上所诉,云边协同具体涉及到资源、管理和应用协同等多个层面。为了构建灵活、高效的云边协同计算环境,需要在不同层面实现云计算和边缘计算的协同,以优势互补的方式克服云计算和边缘计算中各自存在的缺点,放大云计算与边缘计算的价值。

边缘计算至关重要,因为它为改进和创新理念铺平了道路,让企业在企业和工业层面以最大的运营效率、更高的安全性和更好的性能运营。边缘计算在每个垂直行业都是可行的,无论是银行、医疗保健、零售还是采矿。

参考资料

  • [1]李波,侯鹏,牛力,武浩,丁洪伟.基于软件定义网络的云边协同架构研究综述[J].计算机工程与科学,2021,43(02):242-257.
  • [2]李启锐. 面向云边端协同的高性能移动边缘计算理论与方法研究[D].广州大学,2021.DOI:10.27040/d.cnki.ggzdu.2021.001232.
  • 什么是边缘计算?边缘计算与云计算的区别?
  • [4]王宁,鲁法明,包云霞.一种基于云边端协同的智能安全帽设计与实现[J].科技视界,2022(18):11-13.DOI:10.19694/j.cnki.issn2095-2457.2022.18.03.

有关边缘计算:一文理解云边端协同架构中的高性能云计算、边缘计算、云边协同的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  4. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  5. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  6. 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

  7. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  8. 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,如果没有检查,请帮助我,非常感谢,谢谢

  9. ruby - rspec 需要 .rspec 文件中的 spec_helper - 2

    我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只

  10. 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,

随机推荐