边缘计算的学习

文章目录

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

概要

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.rhkb.cn/news/467605.html

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

相关文章

【案例】Excel使用宏来批量插入图片

一、场景介绍 我有一个excel文件,需要通过一列的文件名称,按照规则给批量上传图片附件。 原始文件: 成功后文件: 二、实现方法 1. 使用【wps】工具打开Excel文件,将其保存为启用宏的文件。 2.找到编辑宏的【VB编辑器…

使用ChatGPT神速精读文献,12个高阶ChatGPT提示词指令,值得你复制使用

在学术研究的道路上,文献的阅读和分析往往是我们迈向深层次理解的第一步。如何有效提取文献中的核心要点,如何全面总结一个研究的背景与贡献,甚至如何深入剖析论文中的每个细节,都是每个研究者必须掌握的技能。通过系统化的文献分析,我们不仅能了解现有研究的框架与成果,…

leetcode 832.翻转图像

1.题目要求: 2.题目代码: class Solution { public://水平反转函数void replace_photo(vector<int>& array){for(int i 0;i < array.size();i){if(array[i] 1){array[i] 0;}else{array[i] 1;}}}vector<vector<int>> flipAndInvertImage(vector&…

CST案例分析:TLM算法仿真5G毫米波手机天线和整机

5G时代&#xff0c;产品复杂&#xff0c;更新换代快&#xff0c;如何快速仿真不同的设计版本是影响研发效率的关键问题。本期我们用达索系统SIMULIA自己的手机模型来演示5G毫米波的仿真。 &#xff08;图片仅为概念演示&#xff0c;未经达索系统授权不得使用&#xff09; 完整的…

W55RP20-EVB-Pico评估板介绍

目录 1 简介 2 硬件资源 2.1 硬件规格 2.2 引脚定义 2.3 工作条件 3 参考资料 3.1 RP2040 数据手册 3.2 原理图 ​编辑 原理图 & 物料清单 & Gerber 文件 3.3 尺寸图&#xff08;单位&#xff1a;mm&#xff09; ​编辑 3.4 认证 3.5 参考例程 4 硬件协…

【重装系统后重新配置2】pycharm 终端无法激活conda环境

pycharm 终端无法激活 conda 环境&#xff0c;但是 Windows本地终端是可以激活的 原因是pycharm 默认的终端是 Windows PowerShell 解决方法有两个&#xff1a; 一、在设置里&#xff0c;修改为cmd 二、下面直接选择

【51单片机】UART串口通信原理 + 使用

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 串口 串口是一种应用十分广泛的通讯接…

关于word 页眉页脚的一些小问题

去掉页眉底纹&#xff1a; 对文档的段落边框和底纹进行设置&#xff0c;也是页眉横线怎么删除的一种解决方式&#xff0c;具体操作如下&#xff1a; 选中页眉中的横线文本&#xff1b; 点击【开始】选项卡&#xff0c;在【段落】组中点击【边框】按钮的下拉箭头&#xff1b; …

SQL Servers审核提高数据库安全性

什么是SQL Server审核&#xff1f; SQL Server审核包括追踪和审查发生在SQL Server上的所有活动&#xff0c;检测潜在的威胁和漏洞&#xff0c;能够监控和记录对服务器设置的每次更改。此外&#xff0c;可以帮助管理员可以轻松地追踪数据库中特定表中的所有服务器活动&#xf…

Linux进程通信之共享内存

进程通信之共享内存 各个进程的虚拟内存是通过页表映射到物理内存中&#xff0c;而共享内存的实现就是允许两个不相关的进程映射到同一块物理内存&#xff0c;通过对该内存的读写数据以达到进程通信的目的。 共享内存是IPC进程通信方法中传输速度最快的方法&#xff0c;双方进…

解锁 AI 新境界:元素碰撞的神奇应用技巧全解析

前言 在当今科技飞速发展的时代&#xff0c;ChatGPT 作为一款强大的人工智能工具&#xff0c;为我们开启了全新的创意探索之门。当我们让 ChatGPT 去进行大量的元素碰撞时&#xff0c;相较于传统人力的联想方式&#xff0c;它能够凭借其强大的算法和海量的数据处理能力&#x…

MFC图形函数学习06——画椭圆弧线函数

绘制椭圆弧线函数是MFC基本绘图函数&#xff0c;这个函数需要的参数比较多&#xff0c;共四对坐标点。前两对坐标点确定椭圆的位置与大小&#xff0c;后两对坐标确定椭圆弧线的起点与终点。 一、绘制椭圆弧线函数 原型&#xff1a;BOOL Arc(int x1,int y1,int x2,int y2…

【C++】异常处理机制(对运行时错误的处理)

&#x1f308; 个人主页&#xff1a;谁在夜里看海. &#x1f525; 个人专栏&#xff1a;《C系列》《Linux系列》 ⛰️ 天高地阔&#xff0c;欲往观之。 目录 引言 1.编译器可以处理的错误 2.编译器不能处理的错误 3.传统的错误处理机制 assert终止程序 返回错误码 一、…

SQLI LABS | Less-35 GET-Bypass Add Slashes (we dont need them) Integer Based

关注这个靶场的其它相关笔记&#xff1a;SQLI LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;过关流程 输入下面的链接进入靶场&#xff08;如果你的地址和我不一样&#xff0c;按照你本地的环境来&#xff09;&#xff1a; http://localhost/sqli-labs/Less-35/ 话不多说…

【Qwen2技术报告分析】解读模型架构 pre/post数据构建和模型评估

目录 前言 一、Tokenizer 二、模型结构 dense模型 MoE模型 模型参数设置 三、Pre-Training Pre-Training DATA LONG-CONTEXT TRAINING 四、Post-Training Post-Training DATA 人工数据注释&#xff08;collaborative data annotation&#xff09; 自动数据合成&a…

【HarmonyOS】not supported when useNormalizedOHMUrl is not true.

【HarmonyOS】 not supported when useNormalizedOHMUrl is not true. 问题背景&#xff1a; 集成三方库编译时&#xff0c;IDE提示报错信息如下&#xff1a; hvigor ERROR: Bytecode HARs: [cashier_alipay/cashiersdk] not supported when useNormalizedOHMUrl is not true…

pdb和gdb的双剑合璧,在python中调试c代码

左手编程&#xff0c;右手年华。大家好&#xff0c;我是一点&#xff0c;关注我&#xff0c;带你走入编程的世界。 公众号&#xff1a;一点sir&#xff0c;关注领取python编程资料 问题背景 正常情况下&#xff0c;调试python代码用pdb&#xff0c;调试c代码用gdb&#xff0c;…

基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真。本系统包括PV模块&#xff0c;电池模块&#xff0c;电池控制器模块&#xff0c;MPPT模块&#xff0c;PWM模…

uni-app打包后报错云服务空间未关联

使用uni-app打包到h5 项目里面用到了uni-app的云端一体城市选择组件&#xff0c;这个组件数据用到了uniCloud云服务空间&#xff0c;在本地运行没问题&#xff0c;打包之后测试环境报错&#xff1a; 一顿查&#xff0c;查到了官网是这样说的&#xff1a; cli publish --platfo…

vue用jenkins 打包项目项目关闭eslint检查

问题描述&#xff1a;创建vue脚手架项目后&#xff0c;使用jenkins 打包项目&#xff0c;出现如下图所示错误&#xff0c;显示错误来源于eslint检测。 解决方法&#xff1a;在根目录下找到vue.config.js文件&#xff0c;添加lintOnSave: false以关闭eslint检测&#xff0c;项目…