边缘计算的学习

文章目录

    • 概要
      • 何为边缘计算?
      • 现阶段,企业使用边缘计算
      • 相对云计算
    • 整体架构流程
      • 边缘网络组件
      • 边缘计算与云安全
    • 研究方向结合
    • 引用

概要

edge

何为边缘计算?

边缘计算(英语:Edge computing),是一种分布式计算的架构,将应用程序、数据资料与服务的计算,由网络中心节点,移往网络逻辑上的边缘节点来处理。边缘计算将原本完全由中心节点处理大型服务加以分解,切割成更小与更容易管理的部分,分散到边缘节点去处理。边缘节点更接近于用户终端设备,可以加快资料的处理与发送速度,减少延迟。在这种架构下,资料的分析与知识的产生,更接近于数据资料的来源,因此更适合处理大数据。[1]
在这里插入图片描述

现阶段,企业使用边缘计算

作为一种战略,边缘计算会将统一的环境从核心数据中心一直扩展到用户和数据附近的物理位置。通过采用混合云战略,企业可以在自己的数据中心和公共云基础架构(如 Amazon Web Services、Microsoft Azure 或 Google Cloud )上运行相同的工作负载,同样地,边缘战略则将云环境扩展到更多地方。

如今,边缘计算已广泛用于许多行业,包括电信、制造、运输、公用事业等。同样地,企业实施边缘计算的原因也各不相同。[2]
在这里插入图片描述

边缘计算3.0
在这里插入图片描述

相对云计算

✔其实如果说云计算是集中式大数据处理,边缘计算则可以理解为边缘式大数据处理。

但不同的是,只是这一次,数据不用再传到遥远的云端,在边缘侧就能解决。

✔边缘计算更适合实时的数据分析和智能化处理,相较单纯的云计算也更加高效而且安全!

边缘计算和云计算两者实际上都是处理大数据的计算运行的一种方式。

边缘计算更准确的说应该是对云计算的一种补充和优化![3]

整体架构流程

edge

边缘网络组件

边缘网络(Edge Network)的组件可以根据其功能和用途进行分类,通常包括以下主要部分:

  1. 边缘节点(Edge Nodes)

    • 边缘节点是位于靠近数据源或用户的设备,负责处理和存储数据,以减少延迟并优化带宽。边缘节点可能是边缘服务器、路由器、网关、物联网设备、智能传感器等。
  2. 边缘网关(Edge Gateway)

    • 边缘网关用于在边缘节点和云端之间实现数据通信和协议转换。它连接本地设备和更大范围的网络,提供数据聚合、协议转换和安全管理功能。
  3. 网络设备(Network Devices)

    • 这些设备包括交换机、路由器、负载均衡器等,负责网络流量的管理和数据的路由。在边缘网络中,网络设备负责管理边缘节点之间和边缘与云端之间的数据传输。
  4. 边缘计算平台(Edge Computing Platform)

    • 边缘计算平台是用于在边缘设备上运行应用程序和分析任务的软件平台。这些平台可以包括边缘计算框架(如K3s、KubeEdge)和其他边缘计算软件,以便在靠近数据源的位置进行数据处理。
  5. 存储组件(Storage Components)

    • 边缘存储设备用于本地存储数据,以减轻云存储的压力。它可以包括固态硬盘(SSD)、硬盘驱动器(HDD)等,以快速访问和处理数据。
  6. 安全组件(Security Components)

    • 边缘网络的安全组件负责对数据传输和存储的保护,包括防火墙、入侵检测和防御系统、虚拟专用网络(VPN)等,以防止数据泄漏和攻击。
  7. 边缘应用(Edge Applications)

    • 边缘应用程序在边缘节点上运行,以提供更快的用户响应和本地处理功能。典型的边缘应用包括物联网(IoT)数据分析、视频处理、智能制造控制等。
  8. 边缘控制器(Edge Controllers)

    • 边缘控制器通常用于管理和协调边缘节点的计算资源与任务调度。边缘控制器可以根据不同任务的需求在边缘网络中动态分配计算和存储资源。

这些组件共同作用,提供边缘计算能力,将计算和存储资源下沉至靠近数据源的位置,从而优化网络性能、降低延迟和减轻中心云端的负载。

边缘计算与云安全

边缘安全是对存储或处理在网络边缘的数据的保护。
数据通常存储在一个集中的位置,如数据中心或云。而在边缘计算中,数据被处理并保持在更接近收集地点的位置。这有几个优点,例如减少延迟和增加可靠性和弹性。然而,它也带来了新的安全挑战。这些风险包括:

● 数据丢失:作为与边缘计算相关的最大风险之一,如果设备丢失或被盗,或者损坏或损坏,则可能会发生数据丢失。

● 数据泄露:如果设备没有妥善保护或被黑客攻击,就可能发生数据泄露。

● 性能问题:如果没有足够的可用带宽,或者有太多的设备访问相同的数据,就会出现性能问题。

研究方向结合

边缘安全参考框架
在这里插入图片描述

结合SDN(软件定义网络)与机器学习的边缘计算是一个非常热门的研究方向。通过利用机器学习的能力,SDN 可以更智能地控制网络流量,优化资源利用,并提高网络服务的质量。以下是一个简单的 Python 示例,演示如何结合 SDN 和机器学习来做一些智能化的网络流量优化:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER, set_ev_cls
from ryu.ofproto import ofproto_v1_3class SDN_MachineLearning_Controller(app_manager.RyuApp):OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]def __init__(self, *args, **kwargs):super(SDN_MachineLearning_Controller, self).__init__(*args, **kwargs)# Load or generate datasetself.dataset = pd.read_csv("network_traffic_data.csv")self.model = self.train_ml_model()def train_ml_model(self):# Prepare dataset for trainingfeatures = self.dataset[['src_ip', 'dst_ip', 'packet_count', 'byte_count']]labels = self.dataset['traffic_class']X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)# Train a random forest regressor modelmodel = RandomForestRegressor(n_estimators=100, random_state=42)model.fit(X_train, y_train)return model@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)def packet_in_handler(self, ev):msg = ev.msgdatapath = msg.datapathofproto = datapath.ofprotoparser = datapath.ofproto_parser# Extract information from packet-in messagepkt = msg.datasrc_ip, dst_ip = self.extract_ip(pkt)packet_count = len(pkt)byte_count = msg.total_len# Prepare data for predictionfeature_data = np.array([[src_ip, dst_ip, packet_count, byte_count]])predicted_class = self.model.predict(feature_data)# Install flow rule based on predicted classif predicted_class == 1:  # Example: if traffic class indicates high priorityactions = [parser.OFPActionOutput(ofproto.OFPP_HIGH_PRIORITY)]else:actions = [parser.OFPActionOutput(ofproto.OFPP_NORMAL)]match = parser.OFPMatch(in_port=msg.match['in_port'], eth_dst=dst_ip)self.add_flow(datapath, match, actions)# Forward packet to the appropriate portout = parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id, in_port=msg.match['in_port'],actions=actions, data=msg.data)datapath.send_msg(out)def add_flow(self, datapath, match, actions):ofproto = datapath.ofprotoparser = datapath.ofproto_parser# Add a flow entry with specific match and actionsinst = [parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS, actions)]mod = parser.OFPFlowMod(datapath=datapath, priority=1, match=match, instructions=inst)datapath.send_msg(mod)def extract_ip(self, packet):# Extract source and destination IP from packet# Placeholder for demonstrationreturn "192.168.1.1", "192.168.1.2"if __name__ == "__main__":# This script is meant to be run as part of a Ryu controller instance# Use Ryu's `ryu-manager` to run this fileprint("Starting SDN Machine Learning Controller")

如果需要同时支持IPV4和IPV6的数据包

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER, set_ev_cls
from ryu.ofproto import ofproto_v1_3
from ryu.lib.packet import packet, ethernet, ipv4, ipv6, tcp, udp
import joblibclass SDN_MachineLearning_Controller(app_manager.RyuApp):OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]def __init__(self, *args, **kwargs):super(SDN_MachineLearning_Controller, self).__init__(*args, **kwargs)# Load or generate datasetself.dataset = pd.read_csv("network_traffic_data.csv")self.model = self.train_ml_model()self.datapaths = {}def train_ml_model(self):# Prepare dataset for trainingfeatures = self.dataset[['src_ip', 'dst_ip', 'packet_count', 'byte_count', 'protocol']]labels = self.dataset['traffic_class']X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)# Train a random forest classifier modelmodel = RandomForestClassifier(n_estimators=100, random_state=42)model.fit(X_train, y_train)y_pred = model.predict(X_test)accuracy = accuracy_score(y_test, y_pred)self.logger.info("Model training complete. Accuracy: %.2f%%", accuracy * 100)# Save the trained model for future usejoblib.dump(model, 'traffic_classifier_model.pkl')return model@set_ev_cls(ofp_event.EventOFPSwitchFeatures, MAIN_DISPATCHER)def switch_features_handler(self, ev):datapath = ev.msg.datapathofproto = datapath.ofprotoparser = datapath.ofproto_parser# Install the default flow to handle unmatched packetsmatch = parser.OFPMatch()actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER, ofproto.OFPCML_NO_BUFFER)]self.add_flow(datapath, 0, match, actions)self.datapaths[datapath.id] = datapath@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)def packet_in_handler(self, ev):msg = ev.msgdatapath = msg.datapathofproto = datapath.ofprotoparser = datapath.ofproto_parserin_port = msg.match['in_port']pkt = packet.Packet(msg.data)eth = pkt.get_protocol(ethernet.ethernet)ip_pkt_v4 = pkt.get_protocol(ipv4.ipv4)ip_pkt_v6 = pkt.get_protocol(ipv6.ipv6)tcp_pkt = pkt.get_protocol(tcp.tcp)udp_pkt = pkt.get_protocol(udp.udp)# Ignore LLDP packetsif eth.ethertype == 0x88cc:returnif ip_pkt_v4:src_ip = ip_pkt_v4.srcdst_ip = ip_pkt_v4.dstprotocol = ip_pkt_v4.protoeth_type = eth.ethertypeelif ip_pkt_v6:src_ip = ip_pkt_v6.srcdst_ip = ip_pkt_v6.dstprotocol = ip_pkt_v6.nxteth_type = eth.ethertypeelse:returnpacket_count = len(pkt.protocols)byte_count = msg.total_len# Prepare data for predictionfeature_data = pd.DataFrame([[src_ip, dst_ip, packet_count, byte_count, protocol]],columns=['src_ip', 'dst_ip', 'packet_count', 'byte_count', 'protocol'])try:predicted_class = self.model.predict(feature_data)[0]except ValueError as e:self.logger.error("Prediction error: %s", str(e))return# Install flow rule based on predicted classif predicted_class == 1:  # Example: if traffic class indicates high priorityactions = [parser.OFPActionOutput(ofproto.OFPP_TABLE)]priority = 10elif predicted_class == 2:  # Example: medium priorityactions = [parser.OFPActionOutput(ofproto.OFPP_NORMAL)]priority = 5else:  # Low priorityactions = [parser.OFPActionOutput(ofproto.OFPP_LOW_PRIORITY)]priority = 1match = parser.OFPMatch(in_port=in_port, eth_type=eth_type, ipv4_src=src_ip if ip_pkt_v4 else None, ipv4_dst=dst_ip if ip_pkt_v4 else None,ipv6_src=src_ip if ip_pkt_v6 else None, ipv6_dst=dst_ip if ip_pkt_v6 else None)self.add_flow(datapath, priority, match, actions)# Forward packet to the appropriate portout = parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id, in_port=in_port,actions=actions, data=msg.data)datapath.send_msg(out)def add_flow(self, datapath, priority, match, actions, idle_timeout=0, hard_timeout=0):ofproto = datapath.ofprotoparser = datapath.ofproto_parser# Add a flow entry with specific match and actionsinst = [parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS, actions)]mod = parser.OFPFlowMod(datapath=datapath, priority=priority, match=match,instructions=inst, idle_timeout=idle_timeout, hard_timeout=hard_timeout)datapath.send_msg(mod)def extract_ip(self, packet):# Extract source and destination IP from packetip_pkt_v4 = packet.get_protocol(ipv4.ipv4)ip_pkt_v6 = packet.get_protocol(ipv6.ipv6)if ip_pkt_v4:return ip_pkt_v4.src, ip_pkt_v4.dstelif ip_pkt_v6:return ip_pkt_v6.src, ip_pkt_v6.dstreturn None, Noneif __name__ == "__main__":# This script is meant to be run as part of a Ryu controller instance# Use Ryu's `ryu-manager` to run this fileprint("Starting SDN Machine Learning Controller")

引用

cite

[1]维基百科-边缘计算
[2]一文看懂什么是边缘计算
[3]边缘计算入门指南
[4]边缘安全白皮书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot在城镇保障性住房管理中的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理城镇保障性住房管理系统的相关信息成为必然…

算法|牛客网华为机试41-52C++

牛客网华为机试 上篇:算法|牛客网华为机试21-30C 文章目录 HJ41 称砝码HJ42 学英语HJ43 迷宫问题HJ44 SudokuHJ45 名字的漂亮度HJ46 截取字符串HJ48 从单向链表中删除指定值的节点HJ50 四则运算HJ51 输出单向链表中倒数第k个结点HJ52 计算字符串的编辑距离 HJ41 称砝…

粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测

粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PSO-BiTCN-BiGRU-Attention粒子…

「Mac玩转仓颉内测版1」入门篇1 - Cangjie环境的搭建

本篇详细介绍在Mac系统上快速搭建Cangjie开发环境的步骤,涵盖VSCode的下载与安装、Cangjie插件的离线安装、工具链的配置及验证。通过这些步骤,确保开发环境配置完成,为Cangjie项目开发提供稳定的基础支持。 关键词 Cangjie开发环境搭建VSC…

协程6 --- HOOK

文章目录 HOOK 概述链接运行时动态链接 linux上的常见HOOK方式修改函数指针用户态动态库拦截getpidmalloc 第一版malloc 第二版malloc/free通过指针获取到空间大小malloc 第三版strncmp 内核态系统调用拦截堆栈式文件系统 协程的HOOK HOOK 概述 原理:修改符号指向 …

ResNet 残差网络 (乘法→加法的思想 - 残差连接是所有前沿模型的标配) + 代码实现 ——笔记2.16《动手学深度学习》

目录 前言 0. 乘法变加法的思想 1. 函数类 2. 残差块 (讲解代码) QA: 残差这个概念的体现? 3. ResNet模型 (代码讲解) 补充:更多版本的ResNet 4. 训练模型 5. 小结 6. ResNet的两大卖点 6.1 加深模型可以退化为浅层模型 6.2 用加法解决梯度消…

iphone怎么删除重复的照片的新策略

Phone用户常常面临存储空间不足的问题,其中一个主要原因是相册中的重复照片。这些重复项不仅占用了大量的存储空间,还会影响设备的整体性能。本文将向您展示iphone怎么删除重复的照片的方法,包括一些利用工具来自动化这个过程的创新方法。 识…

软件缺陷等级评定综述

1. 前言 正确评估软件缺陷等级,在项目的生命周期中有着重要的作用: 指导缺陷修复的优先级和资源分配 在软件开发和维护过程中,资源(包括人力、时间和资金)是有限的。通过明确缺陷的危险等级,可以帮助团队合…

【Pikachu】Cross-Site Scripting跨站脚本攻击实战

只管把目标定在高峰,人家要笑就让他去笑! 1.XSS(跨站脚本)概述 XSS(跨站脚本)概述 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称…

【SpringBoot】 黑马大事件笔记-day2

目录 用户部分 实体类属性的参数校验 更新用户密码 文章部分 规定josn日期输出格式 分组校验 上期回顾:【SpringBoot】 黑马大事件笔记-day1 用户部分 实体类属性的参数校验 对应的接口文档: 基本信息 请求路径:/user/update 请求方式&#…

大数据面试题--kafka夺命连环问

1、kafka消息发送的流程? 在消息发送过程中涉及到两个线程:一个是 main 线程和一个 sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给双端队列,sender 线程不断从双端队列 RecordAccumulator 中拉取…

QT信号和槽与自定义的信号和槽

QT信号和槽与自定义的信号和槽 1.概述 这篇文章介绍下QT信号和槽的入门知识,通过一个案例介绍如何创建信号和槽,并调用他们。 2.信号和槽使用 下面通过点击按钮关闭窗口的案例介绍如何使用信号和槽。 创建按钮 在widget.cpp文件中创建按钮代码如下 …

unity显示获取 年月日周几【日期】

unity显示获取 年月日周几【日期】 public void ShowDate(Text txt){//txt.text DateTime now DateTime.Now; // 获取当前时间int year now.Year; // 获取年份int month now.Month; // 获取月份(1-12)int day now.Day; // 获取天数(1-31&…

emr上使用sparkrunner运行beam数据流水线

参考资料 https://time.geekbang.org/column/intro/167?tabcatalog Apache Beam和其他开源项目不太一样,它并不是一个数据处理平台,本身也无法对数据进行处理。Beam所提供的是一个统一的编程模型思想,而我们可以通过这个统一出来的接口来编…

AUTOSAR CP SocketAdaptor(SoAd)规范导读

《AUTOSAR_SWS_SocketAdaptor》规范的主要内容包括: 简介和功能概述:说明了 AUTOSAR 基本软件模块 Socket Adaptor(SoAd)的功能、API 和配置。数据传输的 TCP/IP 概念在计算和电信环境中已成为标准,应用程序的寻址等…

代码随想录-栈和队列-用栈实现队列

问题描述 题目描述中有说不存在空栈的pop和peek,所以无需判断这个 解析 重点在于思路,代码白给。 要用栈实现队列,肯定是两个栈才可以。一个做入队操作,一个做出队操作。 首先入队简单,往栈里加就完事了。 出队复…

【设计模式】结构型模式(四):组合模式、享元模式

《设计模式之结构型模式》系列,共包含以下文章: 结构型模式(一):适配器模式、装饰器模式结构型模式(二):代理模式结构型模式(三):桥接模式、外观…

轻型民用无人驾驶航空器安全操控------理论考试多旋翼部分笔记

官网:民用无人驾驶航空器综合管理平台 (caac.gov.cn) 说明:一是法规部分;二是多旋翼部分 本笔记全部来源于轻型民用无人驾驶航空器安全操控视频讲解平台 目录 官网:民用无人驾驶航空器综合管理平台 (caac.gov.cn) 一、轻型民用无人…

【leetcode练习·二叉树】用「分解问题」思维解题 I

本文参考labuladong算法笔记[【强化练习】用「分解问题」思维解题 I | labuladong 的算法笔记] 105. 从前序与中序遍历序列构造二叉树 | 力扣 | LeetCode | 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵…

深入解析四种核心网络设备:集线器、桥接器、路由器和交换机

计算机网络系列课程《网络核心设备》 在现代网络技术中,集线器、桥接器、路由器和交换机扮演着至关重要的角色。本文,将深入探讨这四种设备的功能、工作原理及其在网络架构中的重要性。 集线器:基础网络连接设备 集线器(Hub&…