【Kubenetes】边缘计算KubeEdge架构设计详解

文章目录

  • 前言
  • KubeEdge云边通信方式
  • 云端架构设计
    • EdgeController:
      • 云到边:
      • 边到云
    • DeviceController:
      • 云到边
      • 边到云
  • 边缘端架构设计
    • Edged
      • Pod的管理部分
      • Pod的监控部分
      • Pod的卷管理
      • Pod的垃圾回收
      • Pod同步管理
    • MetaMangger
      • 从云到边缘的更新 (Update From Cloud To Edge)
      • 从边缘到云的更新 (Update From Edge To Cloud)
    • DeviceTwin
      • 云到边缘的设备更新操作
      • 更新从云到边缘的具体步骤
    • EventBus和ServiceBus
      • EventBus
      • ServiceBus


前言

从微服务的角度

在现代应用程序开发中,微服务架构已成为构建灵活、可扩展和易于维护系统的首选模式。KubeEdge通过其架构设计支持微服务的分布式部署和管理,使得开发者能够轻松地在边缘计算环境中实现微服务化。KubeEdge结合了Kubernetes强大的容器编排能力和边缘计算的特点,为微服务在边缘的部署提供了高效的解决方案。

从云原生的角度

云原生技术推动了应用程序的革新,通过容器化、服务网格、不可变基础设施等技术实现了应用的高可用性和高弹性。KubeEdge是一个扩展Kubernetes到边缘计算的开源平台,其设计理念完全符合云原生应用的要求。它允许开发者在边缘设备上运行容器化应用,提供一致的管理和运维体验,并且可以无缝集成到现有的云原生生态系统中。

从物联网的角度

物联网(IoT)设备的快速增长带来了数据处理和管理的新挑战。KubeEdge旨在解决这些挑战,通过在边缘设备上提供强大的计算能力和灵活的部署选项,显著降低数据传输的延迟并提升系统的响应速度。KubeEdge支持多种协议的设备接入和管理,使得物联网应用可以在边缘实现实时的数据处理和分析,满足了物联网场景对低延迟和高效能的需求。

通过结合微服务、云原生和物联网的优势,KubeEdge在边缘计算领域提供了一个全面而强大的解决方案,使得边缘计算的应用开发和部署变得更加高效和便捷。

KubeEdge云边通信方式

GitHub地址:https://github.com/kubeedge/kubeedge

从官网的架构设计图来看:
在这里插入图片描述
根据KubeEdge的官方架构图,云端和边缘节点之间的通信主要通过以下几个组件完成:

  • Cloud Hub:位于CloudCore层,作为云端和边缘节点之间通信的网关,接收并处理来自边缘端EdgeHub的请求。
  • EdgeHub:位于EdgeCore层,负责与Cloud Hub进行交互,充当Web Socket客户端,与Cloud Hub进行安全通信。
  • EdgeController和DeviceController:位于CloudCore层,分别处理来自边缘节点的资源操作请求和设备管理操作。

图中显示Cloud Hub和EdgeHub之间存在双向通信通路,实现了云端和边缘环境之间的数据交换和控制流。
在这里插入图片描述

例如:当用户(K8S API Server)在云端进行操作时,EdgeControllerDeviceController会处理相关请求,并通过Cloud HubEdgeHub进行通信。同样,边缘设备的事件或数据也可以通过EdgeHubCloud Hub传输到云端。
该架构使得云端能够高效管理边缘资源、部署应用程序,并在云端和边缘环境之间安全、可控地传输数据。


云端架构设计

在这里插入图片描述
根据KubeEdge的官方架构图,云端(Cloud)部分主要由以下几个核心组件组成:

  • K8S API Server: Kubernetes API服务器,作为整个Kubernetes集群的入口点,接收和处理所有针对Kubernetes资源的请求。

Controllers:

EdgeController:

(配置)处理来自边缘节点的资源操作请求,如Pod、ConfigMap等资源的创建、更新和删除。

(搭配edge架构图一起看)

云到边:

用户:用户通过kubectl与Kubernetes API服务器进行交互,kubectl是一个用于与Kubernetes API服务器通信的命令行工具。

K8S-Api-Server:这是Kubernetes的API服务器,负责管理所有的管理任务。它处理REST请求,验证这些请求,并在数据库(etcd)中更新相应的对象。

Rest客户端:该客户端将来自Kubernetes API服务器的命令转发到EdgeController。

EdgeController:这是KubeEdge中的核心组件,充当云和边缘之间的桥梁。它管理多个关键功能:

更新Pod ConfigMap:处理部署在边缘的Pod的配置更新。
添加新的Pod ConfigMap:为新部署的Pod添加配置信息。
删除Pod ConfigMap:当Pod不再需要时,删除其配置。
管理Pod、ConfigMap和Secret:创建管理器以处理这些资源,确保资源的同步和更新。
定位ConfigMap和Secret:确定将ConfigMap和Secret发送到哪个节点。
CloudHub:作为云端组件,负责与EdgeCore的通信。它通过TCP/WebSocket协议与EdgeCore保持连接。

EdgeCore:位于边缘部分的组件,负责执行来自CloudHub的指令,并管理边缘节点的资源和应用。
在这里插入图片描述

边到云

EdgeCore:这是位于边缘节点的主要组件,负责处理和执行所有来自云端的命令以及管理本地资源和应用。EdgeCore还负责监控Pod的状态和条件,并将相关信息通过TCP/WebSocket传回云端。

TCP/WebSocket连接:这是连接云端和边缘端的通信协议,保证数据传输的实时性和可靠性。

CloudHub:作为云端的组件,它接收来自EdgeCore的信息,如Pod状态更新、配置查询和消息。CloudHub处理这些来自边缘的数据,并相应地更新云端的Kubernetes API服务器。

EdgeController:在云端进行操作,它管理来自边缘节点的数据和请求。主要功能包括:

更新Pod状态:接收来自边缘节点的Pod状态更新,并对Kubernetes API进行更新。
查询ConfigMap/Secret:处理来自边缘节点的配置和秘密数据的查询请求。
创建StopMessage通道:为了能够控制和管理边缘节点的操作,如需要停止某些服务或应用时。
更新Pod条件:根据从边缘节点接收的数据更新Pod的运行条件。
K8S-Api-Server:Kubernetes的API服务器,这是云端的中心节点,负责处理所有Kubernetes资源的管理和调度。

REST客户端:它在云端与Kubernetes API服务器之间进行通信,传达EdgeController的命令和请求。

通过这样的结构,KubeEdge可以有效地在云端与边缘端之间进行数据和命令的双向同步,确保边缘计算资源的高效管理和云端策略的实时更新。这种模式适合需要低延迟处理和地理分布式处理的应用场景。
在这里插入图片描述

DeviceController:

云到边

(业务)处理来自边缘节点的设备管理相关操作,如设备注册、设备状态更新等。

Kubernetes API:用户通过kubectl命令行工具与Kubernetes API进行交互,执行诸如创建、修改或删除设备(device)或设备模型(device model)的操作。这是设备管理的入口点,允许用户从中央位置管理边缘设备的配置。

观察设备模型更新和设备更新:在Kubernetes服务器端,设备模型和设备的更新被监视。这包括对设备配置的任何更改,如属性或行为的更新,这些更改需要同步到边缘设备。

创建/删除配置映射:作为设备配置管理的一部分,可以创建或删除配置映射(ConfigMaps),这些映射存储设备配置数据,以便可以动态地将配置推送到边缘设备。

CloudHub:CloudHub作为云组件,负责处理来自Kubernetes API的设备管理指令和配置数据,然后将这些数据通过Downstream通道发送到边缘。它是云端和边缘之间通信的中枢。

Downstream:这是一个通信通道,CloudHub通过它向边缘设备发送数据。这包括:

  • 发送设备双胞胎所需/报告的属性更新:设备双胞胎(Device Twin)是设备在云中的镜像,反映设备的当前状态和所需状态。此过程确保设备的状态始终与云端同步。
  • 发送节点成员身份更新:更新有关哪些设备属于哪些节点的信息,这对于设备在边缘的管理和运维至关重要。
    通过这样的架构,KubeEdge能够有效地实现从云到边的设备管理和状态同步,确保边缘设备可以根据云端的最新配置和指令进行操作,同时保持设备状态的实时更新。
    在这里插入图片描述

边到云

CloudHub:作为云端组件,CloudHub负责接收来自边缘节点的数据。在这个上下文中,它主要处理来自设备的属性值报告。

Upstream:这是从边缘到云端的数据传输通道。在这个通道中,设备的双胞胎报告的属性值通过CloudHub上传到云端。这些属性值可以包括设备的状态、测量数据或其他相关信息。

设备双胞胎属性值报告:设备在边缘节点上的状态或属性更新,被作为"设备双胞胎报告的属性值"通过Upstream发送。设备双胞胎模型允许云端维护设备的一个虚拟表示,这个表示包括设备的预期状态和实际报告状态。

更新设备双胞胎报告的属性值:一旦设备的状态或属性在边缘发生变化,这些新的数据点将通过CloudHub上传,并通过Kubernetes API更新到设备双胞胎的模型中。

Kubernetes API:更新反映在Kubernetes服务器端,确保设备双胞胎的记录与设备的实际情况保持同步。

这个过程确保了设备状态的实时反馈到云端,允许管理员能够基于最新数据进行决策和管理。这种从边到云的数据流是KubeEdge用于高效设备管理和状态监控的关键组成部分。
在这里插入图片描述

Cloud Hub:作为云端和边缘节点之间的通信网关,负责接收并处理来自EdgeHub的请求。它扮演着云端和边缘之间数据交互和控制流转发的中介角色。

云端架构的设计思路是将边缘计算相关的控制面与Kubernetes控制面相结合。当用户通过K8S API Server发起操作请求时,EdgeController和DeviceController会分别处理相应的资源管理和设备管理请求,并通过Cloud Hub与边缘端EdgeHub进行通信,从而实现对边缘节点的控制和管理。

这种设计使得KubeEdge可以无缝地将边缘资源纳入Kubernetes管理体系,并利用Kubernetes现有的控制平面扩展边缘计算的能力。同时,云端架构也为边缘节点提供了资源调度、应用部署、设备管理等功能,支持跨云端和边缘端的统一管理。


边缘端架构设计

在这里插入图片描述
重要的是:

  • Edged边缘后台进程 核心模块
  • MetaManager 元数据管理
  • DeviceTwin 设备孪生
  • EventBud/ServiceBus总线

Edged

一共有11个模块

在这里插入图片描述
分为5大部分

Pod的管理部分

pod的增删改查和运行时

  • Pod Management(Pod 管理):
    功能: Pod Management 负责在边缘端创建、修改、删除和查询Pods。它确保Pods的状态与API服务器中的期望状态一致。
    工作流程: 当API服务器下发Pod创建指令时,Edged的Pod Management模块会接收到这些指令,并负责在本地创建和配置Pod。这包括配置网络、分配资源等。此外,它还会监控Pod的状态,如运行状况、重启、停止等,并将状态信息报告回云端。
  • Container Runtime(容器运行时):
    功能: Container Runtime 模块负责实际的容器操作,包括启动、停止、暂停容器等。它与容器运行时接口(CRI)兼容,支持不同的容器运行时如Docker、containerd等。
    工作流程: 在Pod Management模块创建Pod后,Container Runtime模块接管对容器的具体操作。它根据Pod定义中的容器规格来启动或管理容器。这包括从镜像仓库拉取镜像、创建容器、执行容器、监控容器的运行状态以及在必要时进行容器的停止和清理。

Pod的监控部分

简称PLEG

  • Probe Management(探针管理):
    功能: 探针管理是用于执行和管理探针(Probes),探针是Kubernetes中用来检查Pod中容器是否健康的机制。它包括Liveness Probes(存活探针)、Readiness Probes(就绪探针)和Startup Probes(启动探针)。
    工作流程: Probe Management负责定期执行探针检查,并根据探针的响应来判断容器的状态。例如,如果一个容器的Liveness Probe失败,表明容器已不再运行,Probe Management会触发容器的重启。
  • Pod Status Management(Pod状态管理):
    功能: 此模块负责追踪和更新Pod的状态信息。它确保Pod的当前状态能够被准确地报告给云端的Kubernetes API服务器。
    工作流程: Pod Status Management模块监控各个Pod的状态变化,如运行、暂停、停止等,并将这些信息通过边缘到云的通信通道同步到云端的etcd存储中,保证数据的一致性和准确性。
  • Pod Lifecycle Event Generator(Pod生命周期事件生成器):
    功能: 该模块生成与Pod生命周期相关的事件,如创建、启动、停止、删除等,并将这些事件通知给其他模块或同步到云端。
    工作流程: 当Pod的生命周期状态发生变化时,Pod Lifecycle Event Generator将生成相应的事件。这些事件可以被其他模块(如Pod Status Management)使用来更新Pod的状态,或者被上报到云端,供用户或其他系统组件查询和监控。

Pod的卷管理

不管是Secret还是ConfigMap统一为卷管理

  • Volume Management(卷管理):
    功能: 卷管理模块负责Pod中各种类型卷的生命周期管理,包括持久卷(PVs)、临时卷(ephemeral volumes)等。此模块确保卷的正确挂载和卸载,以及与存储资源的接口。
    工作流程: 当Pod创建请求发起时,Volume Management模块会根据Pod定义中指定的卷配置,执行卷的挂载操作,将存储资源连接到Pod中相应的容器。在Pod终止时,此模块也会负责卸载卷,清理资源。
  • Secret Management(秘密管理):
    功能: Secret Management模块负责管理和提供Kubernetes Secrets,这些是用来存储敏感信息如密码、令牌等的对象。
    工作流程: 在Pod配置中如果指定了需要使用Secrets,Secret Management模块会从云端同步这些Secrets到边缘节点,并确保它们被安全地传递并挂载到相应的容器中。这样,应用程序就可以在运行时安全地访问所需的敏感信息。
  • ConfigMap Management(配置映射管理):
    功能: ConfigMap Management模块负责处理Kubernetes ConfigMaps,这些是用来存储非敏感配置数据,如配置文件、命令行参数等。
    工作流程: 类似于Secrets管理,ConfigMap Management模块负责从云端同步ConfigMaps到边缘节点,并将它们挂载到Pod中指定的容器内。这允许应用使用这些配置数据进行自我调整或调优。

Pod的垃圾回收

  • Container Garbage Collection(容器垃圾回收):
    功能: 此模块负责清理不再需要的容器,这些容器可能是因为Pod更新、删除或其他操作而变得多余。
    工作流程: Container Garbage Collection模块监控容器的状态,并定期检查是否有停止运行的容器。对于这些停止运行的容器,如果它们不再被任何当前运行的Pod引用,该模块将执行清理操作,删除这些容器以释放系统资源。
  • Image Garbage Collection(镜像垃圾回收):
    功能: 镜像垃圾回收模块负责从节点上删除不再需要的容器镜像。在边缘设备上,存储空间可能特别宝贵,因此有效管理镜像存储是至关重要的。
    工作流程: 此模块定期检查节点上的镜像使用情况,特别是那些未被任何当前容器使用的镜像。它根据一定的策略(如镜像的年龄、使用频率等)来决定哪些镜像应该被删除。当确定一个镜像不再需要时,它会从本地存储中删除这些镜像,从而回收空间。

Pod同步管理

从云端拉下来的数据不是直接给Edged的 而是通过MetaManager进行缓存再到Edged
MetaClient能保证Edged照常运行 只是说状态不能完全保证上报到云端 仅此而已
所以说离线之后 Edged里的Pod能照常运行
等会再细讲MetaManager

MetaClient

MetaClient 主要负责同步边缘节点上的资源状态信息到云端,这包括但不限于Pods, Nodes, ConfigMaps, Secrets等Kubernetes资源的元数据。通过这种同步,云端的Kubernetes API服务器能够获取到最新的边缘节点状态,从而进行适当的管理和调度决策。

工作流程

  • 数据收集:MetaClient 定期从Edged的其他模块收集资源状态数据。这些数据包括资源的创建、更新、删除等事件。

  • 数据缓存:收集到的数据会被暂存于本地缓存中。这样做的目的是减少因网络问题导致的数据同步失败,同时也可以在网络不可用时继续收集和存储本地数据。

  • 数据同步:当网络连接可用时,MetaClient 会尝试将缓存中的数据同步到云端的Kubernetes API服务器。同步过程中,它会处理可能出现的数据冲突和依赖问题,确保云端的数据状态准确反映边缘节点的实际情况。

  • 错误处理和重试机制:在数据同步过程中,如果遇到网络中断或其他导致同步失败的情况,MetaClient 会利用其内置的重试机制尝试重新同步,直到数据成功上传到云端或达到重试次数上限。

通过这样的机制,MetaClient 确保了边缘计算环境中数据的一致性和可靠性,使得边缘设备能够在相对独立的环境中运行,同时保持与中心云的数据同步,支持更智能的资源管理和应用部署。


MetaMangger

总结:MetaMangger能解决 云和边网络断开的情况下 服务能够照常运行的问题
存储了一些元数据 配置相关的信息

在这里插入图片描述

图中展示了KubeEdge架构中边缘端MetaManager模块在云与边缘数据同步过程中的工作流程。这个流程图分为两个主要部分:从云到边缘的更新(Update From Cloud To Edge)和从边缘到云的更新(Update From Edge To Cloud)。以下是每个流程的详解:

从云到边缘的更新 (Update From Cloud To Edge)

云端发送更新消息:云端(通过edgehub组件)发送一个更新消息到边缘节点。
MetaManager接收并检查资源是否有变化:MetaManager接收到来自云端的消息,并检查边缘端的资源(通过sqlite数据库)是否需要更新。

如果需要,MetaManager更新本地元数据:如果检测到资源有变化,MetaManager会更新存储在sqlite数据库中的元数据。

MetaManager将更新的确认消息发送回云端:更新完毕后,MetaManager向云端确认更新成功。
云端接收更新消息:云端收到边缘节点的更新确认消息。
云端处理响应:云端处理来自边缘节点的响应。

从边缘到云的更新 (Update From Edge To Cloud)

边缘端发起更新消息:边缘端的Edged组件发起一个更新消息到MetaManager。
MetaManager检查资源是否有变化:MetaManager检查资源状态是否发生变化。
MetaManager更新sqlite数据库中的元数据:如果资源状态有所变化,MetaManager将更新sqlite数据库中的相应元数据。

MetaManager将更新消息发送至云端:MetaManager将边缘端的资源状态更新发送至云端。
云端接收更新消息:云端通过edgehub组件接收到来自边缘的更新消息。
云端处理更新消息并响应:云端处理接收到的更新消息,并发送响应回边缘。

MetaManager接收来自云端的响应:MetaManager接收到来自云端的响应。
边缘端处理响应:边缘端处理来自云端的响应。


DeviceTwin

DeviceTwin和MetaMangger类似
存储的是自定义信息 业务数据
在这里插入图片描述

在KubeEdge架构中,DeviceTwin是一个关键模块,负责在边缘设备和云端之间维护设备状态信息。DeviceTwin模块在边缘计算环境中实现设备管理和状态同步。以下是根据提供的图示对DeviceTwin模块的详细解析:

云到边缘的设备更新操作

  1. 云端发送设备属性更新消息

    • 云端向edgehub发送一个设备属性更新消息。
  2. edgehub将消息发送到DeviceTwin

    • edgehub接收到云端的消息后,将其发送到DeviceTwin中的DeviceTwin Controller。
  3. DeviceTwin Controller将消息发送到设备模块

    • DeviceTwin Controller接收到消息后,将更新指令发送到Device模块。
  4. 设备模块更新设备属性细节

    • 设备模块接收到更新指令后,更新存储在sqlite数据库中的设备属性信息。
  5. 设备模块发送设备属性更新结果

    • 设备模块将更新结果发送到Communication模块。
  6. Communication模块将更新结果发送到EventBus进行发布

    • Communication模块将更新结果发送到EventBus,以便进一步处理或发布给其他订阅者。

关键组件

  1. Device Module(设备模块)

    • 负责处理具体的设备操作,包括从数据库读取和写入设备属性信息。
  2. DeviceTwin Controller(设备孪生控制器)

    • 负责接收和处理来自edgehub的消息,并将这些消息路由到适当的设备模块。
  3. Communication Module(通信模块)

    • 负责在设备模块与EventBus之间传递信息,确保更新结果能够被订阅者接收到。
  4. EventBus(事件总线)

    • 负责发布设备属性更新结果,确保其他模块或系统组件可以订阅和响应这些变化。
  5. sqlite

    • 边缘设备上的本地数据库,用于存储设备的属性和状态信息,确保设备信息的持久化和高效访问。

更新从云到边缘的具体步骤

  1. 云端发送设备属性更新消息

    • 云端系统或用户通过API接口向边缘设备发送设备属性更新指令。
  2. edgehub接收并转发消息

    • edgehub作为消息代理,接收来自云端的更新指令,并将其转发给DeviceTwin中的DeviceTwin Controller。
  3. DeviceTwin Controller处理消息

    • DeviceTwin Controller解析更新指令,并将其路由到Device模块。
  4. Device模块更新设备属性

    • Device模块根据指令更新设备的属性信息,并将更新后的数据写入到sqlite数据库中。
  5. Device模块发送更新结果

    • 更新完成后,Device模块将结果发送给Communication模块,确保更新结果能够被记录和发布。
  6. Communication模块将结果发布到EventBus

    • Communication模块将更新结果发送到EventBus进行发布,使得其他模块或系统组件可以订阅和响应这些更新。

通过这些步骤,DeviceTwin模块确保了设备状态和属性在云端与边缘设备之间的同步和一致性。这样的设计使得边缘设备能够在相对独立的环境中高效运作,同时保持与云端的数据同步,支持复杂的设备管理和控制场景。

EventBus和ServiceBus

跳过了DeviceTwinMetaMangger直接和EdgeHub相连 websocket通信

EventBus

EventBus是KubeEdge中的消息总线,主要用于在边缘设备之间以及边缘与云端之间传递事件和消息。它支持多种消息传递协议(如MQTT),确保消息能够可靠地传递和处理。

关键特性

  • 事件发布与订阅:EventBus支持事件的发布与订阅机制,允许边缘设备或应用程序订阅特定类型的事件,并在事件发生时接收到通知。
  • 消息可靠性:通过支持QoS(服务质量)等级,EventBus确保消息的可靠传递,特别是在网络连接不稳定的边缘环境中。
  • 协议支持:EventBus可以集成多种协议(如MQTT),灵活适应不同的通信需求。

工作流程

  1. 事件发布:设备或应用程序通过EventBus发布事件。
  2. 消息传递:EventBus根据订阅信息,将事件消息传递给订阅者。
  3. 事件处理:订阅者接收到消息后,进行相应的处理操作。

优点

  • 灵活性:支持多种协议,适应不同应用场景。
  • 可靠性:通过QoS机制确保消息的可靠传递。

ServiceBus

功能
ServiceBus是KubeEdge中的服务总线,负责处理边缘设备与云端之间的服务调用和管理。它支持服务发现、调用和负载均衡,确保边缘服务的高效运行。

关键特性

  • 服务发现:ServiceBus支持自动服务发现,使得边缘设备和应用可以动态找到并调用所需服务。
  • 服务调用:提供统一的服务调用接口,简化服务的调用过程。
  • 负载均衡:内置负载均衡机制,确保服务调用的均衡分布,提高系统的整体性能。

工作流程

  1. 服务注册:边缘服务启动时,通过ServiceBus注册自己的服务信息。
  2. 服务发现:需要调用服务的设备或应用程序通过ServiceBus进行服务发现,获取服务的详细信息。
  3. 服务调用:调用方通过ServiceBus提供的接口调用所需服务。
  4. 负载均衡:ServiceBus在调用过程中进行负载均衡,优化服务资源的使用。

优点

  • 自动化:自动进行服务发现和注册,减少人工配置的复杂性。
  • 高效性:通过负载均衡机制,提高服务调用的响应速度和稳定性。

总结

EventBus和ServiceBus是KubeEdge中两个重要的消息和服务管理组件,分别负责事件消息的传递和服务调用的管理。它们共同保障了边缘计算环境中设备和应用的高效通信和协同工作。

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

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

相关文章

Covalent长期数据设施,支持基于 “blob” 、总锁仓54亿美元的L2

Covalent Network(CQT)是领先的历史数据可用性网络,通过其在 Web3 中超过 225 个区块链上的结构化数据基础设施,为数千名客户和开发人员提供支持。Covalent Network(CQT)正在与未来以太坊的进步需求相匹配&…

SQL慢查询学习篇

https://www.cnblogs.com/isyues/p/17733015.html 1. 对扫到的SQL慢查询语句执行 explain explain select task_id, channel, count(task_id) as count from tablename where send_time > "2024-05-10 16:13:59" and send_time < "2024-05-14 16:13:59…

api接口、api文档、api调试、api测试

应用程序接口是一组定义、程序及协议的集合&#xff0c;通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过调用 API 函数对应用程序进行开发&#xff0c;可以减轻编程任务。 API 同时也是一种中间件&#xff0c;为各种不同平台提供数…

展馆展厅设计施工流程

1、需求分析和确定&#xff1a; 与客户沟通&#xff0c;了解客户需求&#xff0c;对展馆展厅的用途、面积、功能、展品特点等进行分析&#xff0c;并确定设计方案。 2、方案设计 根据需求确定设计方案&#xff0c;包括平面布局、展品陈列、展示方式、照明等。设计师需要提供设计…

如何在Spring启动的时候执行一些操作

如何在Spring启动的时候执行一些操作 在Spring启动的时候执行一些操作有多种方式。你可以通过实现ApplicationRunner或者CommandLineRunner接口&#xff0c;在Spring Boot应用程序启动后执行特定操作。另外&#xff0c;你也可以使用PostConstruct注解&#xff0c;在Spring Bea…

【考研数学】张宇《1000题》强化阶段正确率多少算合格?

张宇1000题真的很练人心态.... 基础不好&#xff0c;建议别碰1000题 基础好&#xff0c;1000题建议在两个月以内刷完 如果自己本身在基础阶段学的比较水&#xff0c;自己的薄弱点刷了一小部分题没有针对性完全解决&#xff0c;转身去刷1000题就会发现&#xff0c;会的题目刷…

shell脚本-重定向与管道符

一、重定向 因为shell脚本有着批量操作的特殊性&#xff0c;大部分操作处于后台执行&#xff0c;不需要用户进行干预&#xff0c;所以提取、过滤并执行信息十分需要重定向和管道。重定向的意思是不输出到默认设备上&#xff0c;而是输出到你指定的位置&#xff08;文件、其他输…

1.微信小程序开发之准备工作

1.微信小程序账号注册 小程序开发 与 网页开发不一样&#xff0c;在开始微信小程序开发之前&#xff0c;需要访问 微信公众平台&#xff0c;注册一个微信小程序账号。 在拥有了小程序的账号以后&#xff0c;我们才可以开发和管理小程序&#xff0c;后续可以通过该账号进行开发…

国网电力分公司、税务企业如何向央媒投稿?

税务、电力、银行等单位如果想要将稿件发布到中央媒体&#xff0c;可以遵循为大家整理的以下步骤和建议&#xff1a; 了解央媒的定位与要求&#xff1a;中央媒体&#xff0c;如新华社、人民日报、中央电视台等&#xff0c;都有其独特的报道风格和关注重点。在投稿前&#xff0…

【Web后端】会话跟踪技术及过滤器

1.会话跟踪技术 1.1 会话的概念 在web应用中&#xff0c;浏览器和服务器在一段时间内发送请求和响应的连续交互的全过程 1.2 会话跟踪概念 对同一个用户跟服务器的连续请求和接收响应的监视过程 1.3 会话跟踪作用 浏览器和服务器是以http协议进行通信&#xff0c;http协议是…

算法工程师面试问题 | YOLOv8面试考点原理全解析(一)

本文给大家带来的百面算法工程师是深度学习目标检测YOLOv8面试总结&#xff0c;文章内总结了常见的提问问题&#xff0c;旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中&#xff0c;我们还将介绍一些常见的深度学习目标检测面试问题&#xff0c;并提供参考的回答…

AWS RDS ElasticCache 监控可观测最佳实践

在当今的电子商务时代&#xff0c;一个高效、稳定的电商平台对于保持竞争力至关重要。数据库作为电商平台的核心支撑&#xff0c;其性能直接影响到用户体验和业务流畅度。本文将深入探讨如何在电商场景下通过观测云对亚马逊云科技 RDS&#xff08;MySQL&#xff09; 和 Elastic…

python+selenium - UI自动框架之封装log类

通过自定log类&#xff0c;能把执行过程记录到日志&#xff0c;方便检查和重现问题。 log类介绍&#xff1a; 每次调用log函数&#xff0c;会根据绝对路径生成日志文件在logs目录下面(在被调用的时候日志会输出到指定的文件&#xff09;&#xff0c;日志文件的格式是年月日.lo…

vue+element的表格(el-table)排班情况表(2024-05-09)

vueelement的表格&#xff08;el-table&#xff09;排班情况&#xff0c;增删查改等简单功能 代码&#xff1a; <template><!-- 表格 --><div class"sedules"><el-header><el-date-pickerv-model"monthValue2"type"month…

postgresql中控制符带来的数据错觉

简介 在数据库字符集中&#xff0c;由于数据质量的控制不够完善&#xff0c;每一个字符集都并不是所有字符的能看见&#xff0c;有些字符的展示可能会出现乱码&#xff0c;甚至出现不同字符展示成同样效果的可能&#xff0c;给开发人员造成分析错觉。 当数据库存入了控制符&am…

【Unity Shader入门精要 第7章】基础纹理(三)

1. 渐变纹理 另外一种对于纹理的使用方式是通过渐变纹理为物体提供漫反射光照效果。 顾名思义&#xff0c;渐变纹理本身就是一张颜色渐变&#xff08;可以是连续渐变&#xff0c;也可能是突变&#xff09;的图片&#xff0c;这个渐变的过程模拟的就是光源从不同的角度照射物体…

Win11下Java环境安装指南

Windows下Java环境安装指南 前言一、安装简介JDK与JRE安装包 二、JDK安装检查操作系统类型基于Win11基于Win10 安装包准备工作 三、配置环境配置JAVA_HOME配置Path配置CLASSPATH 四、检验配置是否打开cmd命令行窗口输出java -version命令 五、注意事项 前言 在Windows系统上安…

移动机器人的机动性

移动机器人的机动性 机器人底盘运动学的活动性是表示它在环境中直接运动的能力。限制活动性的基本约束是每一轮子必须满足它的滑动约束的规则。所以,我们可从方程(3.26)正式地推导机器人的活动性。 除了瞬时的运动学运动之外,移动机器人通过操纵可操纵的轮子,能够随时操纵它的…

基于springboot实现的教师人事档案管理系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…

循环神经网络RNN的初学

1.循环神经网络的特点 x1——>y1的同时会产生a1&#xff0c;它包含了我们第一列处理信息的一些特点&#xff0c;然后这个a1就会被传送到y2上去&#xff0c;那么x2——>y2的序列中就会包含前一个的特点&#xff0c;依次类推&#xff0c;这就是我们的RNN结构**&#xff08…