【K8S基础】-k8s的核心概念控制器和调度器

        Kubernetes是一个开源的容器编排平台,旨在简化和自动化容器化应用程序的部署、扩展和管理。它提供了一个强大的基础设施来管理容器化应用程序的生命周期,并确保它们在整个集群中高效运行。

        Kubernetes的核心概念包括集群、节点、Pod、控制器、调度器等。本文重点讨论控制器和调度器的角色和功能。控制器负责管理应用程序的副本数目和状态,确保应用程序按预期运行。调度器负责将Pod调度到适合的节点上运行,以实现资源的最佳利用和负载均衡。我们将探讨控制器和调度器的工作原理、不同类型的控制器和调度器、它们之间的协作方式以及使用建议。

一、控制器的作用和种类

        在Kubernetes中,控制器是一种用于管理和维护应用程序状态的关键组件。 用于管理和维护应用程序的期望状态。它确保所需的Pod副本数目处于运行状态,并在需要时进行自动伸缩。常见的控制器类型包括ReplicaSet、Deployment、StatefulSet等。它们通过监控和调整Pod的数量和状态,实现应用程序的高可用性和弹性。

1.1 控制器的作用和重要性

        控制器的作用和重要性体现在以下几个方面:

  1. 应用程序可用性和弹性:控制器确保应用程序的副本数目处于运行状态,即使在节点故障或其他问题导致Pod失败的情况下,也能够自动恢复和重新创建Pod。通过监控和调整副本数目,控制器提供了高可用性和弹性,确保应用程序始终可用。

  2. 自动伸缩:控制器可以根据应用程序的负载情况自动调整副本数目。根据预定义的规则和指标,控制器可以增加或减少副本数目,以满足应用程序的需求。这种自动伸缩能力使应用程序能够根据负载变化而弹性地扩展或收缩。

  3. 版本管理和滚动更新:控制器可以管理应用程序的不同版本,并支持滚动更新。通过逐步替换旧版本的Pod,控制器可以确保应用程序在升级过程中保持可用性。这种版本管理和滚动更新的功能使得应用程序的部署和更新变得简单和可控。

  4. 配置管理:控制器可以管理应用程序的配置,包括环境变量、配置文件等。通过控制器,可以在运行时更新应用程序的配置,而无需重新部署整个应用程序。这种配置管理的能力使得应用程序的配置更加灵活和可管理。

  5. 故障检测和恢复:控制器可以监控应用程序的状态,并在发现故障或异常情况时采取相应的措施。它可以自动重启失败的Pod,或在必要时重新调度Pod到其他可用节点上运行。这种故障检测和恢复的能力提高了应用程序的可靠性和容错性。

1.2 常见的控制器类型

        在Kubernetes中,有几种常见的控制器类型,每种类型都有不同的功能和用途。以下是一些常见的控制器类型:

  1. ReplicaSet:ReplicaSet是Kubernetes最基本的控制器类型之一,用于确保指定数量的Pod副本在集群中运行。它可以根据需要自动扩展或缩减Pod的数量,以满足应用程序的需求。

  2. Deployment:Deployment是在ReplicaSet基础上构建的控制器类型,用于管理应用程序的部署和更新。它支持滚动更新,可以逐步替换旧版本的Pod,以实现应用程序的无缝升级。

  3. StatefulSet:StatefulSet用于管理有状态应用程序的部署。与ReplicaSet和Deployment不同,StatefulSet为每个Pod分配唯一的标识符和稳定的网络标识,以便于有状态应用程序的管理和数据持久化。

  4. DaemonSet:DaemonSet用于在集群中的每个节点上运行一个Pod副本。它常用于部署一些系统级别的服务,如日志收集器、监控代理等。

  5. Job和CronJob:Job用于运行一次性任务,而CronJob用于定期运行任务。它们可以确保任务的完成,并可根据需要自动重启失败的任务。

  6. Operator:Operator是一种自定义的控制器,用于管理和自动化特定类型的应用程序或服务。它结合了Kubernetes的原生资源和自定义逻辑,提供了更高级的应用程序管理功能。

1.3 常见控制器特点、用途和适用场景

        以下是一些常见控制器的特点、用途及适用场景的对比:

控制器特点用途适用场景
ReplicaSetReplicaSet用于确保指定数量的Pod副本在集群中运行。它通过监控和调整Pod的副本数目来实现高可用性和弹性。ReplicaSet适用于无状态应用程序,如Web服务器、后端API等。它可以根据负载情况自动扩展或缩减Pod的数量,以满足应用程序的需求。当需要管理和维护一组无状态应用程序的副本时,可以使用ReplicaSet。
DeploymentDeployment是在ReplicaSet基础上构建的控制器类型。它支持滚动更新,可以逐步替换旧版本的Pod,以实现应用程序的无缝升级。Deployment适用于管理应用程序的部署和更新。它提供了版本管理、滚动更新、回滚等功能,使得应用程序的部署和更新变得简单可控。当需要对应用程序进行版本管理和滚动更新时,可以使用Deployment。
StatefulSetStatefulSet用于管理有状态应用程序的部署。它为每个Pod分配唯一的标识符和稳定的网络标识,以便于有状态应用程序的管理和数据持久化。StatefulSet适用于有状态应用程序,如数据库、分布式存储等。它可以确保有状态应用程序的有序部署、扩展和数据持久化。当需要管理有状态应用程序的部署和数据持久化时,可以使用StatefulSet。
DaemonSetDaemonSet用于在集群中的每个节点上运行一个Pod副本。它常用于部署一些系统级别的服务,如日志收集器、监控代理等。DaemonSet适用于需要在每个节点上运行一个副本的服务。它可以确保在每个节点上都有相应的Pod副本,以提供系统级别的功能和服务。当需要在每个节点上运行一个Pod副本的服务时,可以使用DaemonSet。
Job和CronJobJob用于运行一次性任务,而CronJob用于定期运行任务。它们可以确保任务的完成,并可根据需要自动重启失败的任务。Job和CronJob适用于运行一次性或定期任务的场景。它们可以用于批处理作业、定期数据处理等。当需要运行一次性或定期任务时,可以使用Job和CronJob。
OperatorOperator是一种自定义的控制器,用于管理和自动化特定类型的应用程序或服务。它结合了Kubernetes的原生资源和自定义逻辑,提供了更高级的应用程序管理功能。Operator适用于复杂应用程序或服务的管理和自动化。它可以根据特定的业务逻辑和需求,实现自定义的应用程序管理功能。当需要管理和自动化特定类型应用程序或服务的功能时,可以使用Operator。

二、调度器的功能和策略

2.1 调度器的基本功能

        调度器是Kubernetes中的另一个重要概念,用于决定在哪个节点上运行Pod。调度器考虑诸如节点资源利用率、亲和性和反亲和性等因素,选择最合适的节点来运行Pod。调度器的目标是实现资源的均衡分配和高效利用,确保应用程序的性能和可靠性。 它的基本功能有以下几个面:        

  1. 节点选择:调度器从集群中的可用节点中选择最合适的节点来运行Pod。选择的依据可以包括节点的资源可用性(如CPU、内存)、节点的标签和Pod的调度要求等。

  2. 资源分配:调度器根据Pod的资源需求(如CPU和内存)以及节点的资源容量,进行资源分配。它会确保每个节点上运行的Pod的资源需求不超过节点的资源容量。

  3. 亲和性和反亲和性:调度器支持亲和性和反亲和性规则,用于指定Pod与节点之间的关系。亲和性规则可以将Pod调度到与特定节点具有相同标签的节点上,而反亲和性规则可以将Pod调度到与特定节点具有不同标签的节点上。

  4. 互斥性:调度器可以实现Pod之间的互斥性,确保同一时间只有一个Pod运行在特定的节点上。这可以用于避免资源冲突或满足应用程序的特定需求。

  5. 负载均衡:调度器可以实现负载均衡,将Pod均匀地分布在集群的多个节点上,以实现资源的合理利用和提高应用程序的可用性。

  6. 调度策略:调度器支持多种调度策略,如优先级调度、节点亲和性、Pod亲和性、Pod反亲和性、Pod互斥性等。这些策略可以根据应用程序的需求和优先级,对Pod进行灵活的调度。

2.2 调度器的调度策略和算法

        调度器在将Pod调度到集群中的节点上时,使用一系列调度策略和算法来做出决策。这些策略和算法的选择可以根据集群的需求和配置进行调整。下面是一些常见的调度策略和算法:

  1. 优先级调度(Priority Scheduling):优先级调度是一种基于Pod的优先级属性来进行调度的策略。每个Pod都可以指定一个优先级,调度器会优先调度具有较高优先级的Pod。这可以用于确保重要任务的优先执行,或者确保关键应用程序的资源需求得到满足

  2. 节点亲和性(Node Affinity):用于指定Pod与特定节点之间的关系。通过标签选择器和节点选择器,可以将Pod调度到具有特定标签或属性的节点上。这可以用于实现Pod与特定节点的亲和性,例如将某些Pod调度到具有特定硬件设备或特定地理位置的节点上。

  3. Pod亲和性(Pod Affinity):用于指定Pod与其他Pod之间的关系。通过标签选择器和Pod选择器,可以将Pod调度到与其他Pod具有相同标签或属性的节点上。这可以用于实现Pod之间的亲和性,例如将具有相似功能或相互依赖的Pod调度到同一节点上。

  4. Pod反亲和性(Pod Anti-Affinity):用于指定Pod与其他Pod之间的关系的相反情况。通过标签选择器和Pod选择器,可以将Pod调度到与其他Pod具有不同标签或属性的节点上。这可以用于实现Pod之间的分散部署,增加容错性和可用性。

  5. Pod互斥性(Pod Taints and Tolerations):用于确保同一时间只有一个Pod运行在特定的节点上。通过在节点上设置特定的标记(Taint),只有具有相应容忍标记(Toleration)的Pod才能被调度到该节点上。这可以用于避免资源冲突或满足应用程序的特定需求。

  6. 负载均衡(Load Balancing):通过将Pod均匀地分布在集群的多个节点上,实现资源的合理利用和提高应用程序的可用性。调度器可以使用负载均衡算法(如轮询、最少连接等)来选择节点,以确保负载分布均匀。

        以上是一些常见的调度策略和算法。实际上,Kubernetes的调度器还支持自定义的调度策略和算法,可以根据特定的需求和场景进行扩展和定制。调度器的灵活性和可扩展性使得它能够适应各种不同的集群配置和应用程序需求。

三、控制器和调度器的协作

3.1 控制器与调试器的协作方式

        在Kubernetes中,控制器(Controller)和调度器(Scheduler)是两个独立但密切协作的组件,共同负责管理和调度Pod的生命周期。它们之间的关系和协作方式如下:

  1. 控制器的角色:控制器负责监控集群状态,根据用户定义的期望状态来维护和管理Pod的运行状态。它确保集群中的Pod按照用户的期望进行创建、更新和删除,并保持集群的期望状态与实际状态一致。

  2. 调度器的角色:调度器负责将新创建的Pod调度到集群中的合适节点上运行。它根据集群中节点的资源情况、Pod的调度要求和调度策略等因素,做出决策并将Pod分配给合适的节点。

  3. 协作方式:当用户创建一个新的Pod时,控制器会将Pod的定义信息存储在etcd等持久化存储中,并监控集群状态的变化。当控制器检测到新的Pod需要创建时,它会向调度器发送调度请求。

  4. 调度器的决策:调度器接收到调度请求后,会根据集群的状态和调度策略,对Pod进行调度决策。它会考虑节点的资源可用性、亲和性规则、互斥性规则和负载均衡等因素,选择最合适的节点来运行Pod。

  5. 调度器的调度结果:调度器根据调度决策,将Pod与目标节点的绑定关系信息存储在etcd中,并将调度结果返回给控制器。控制器根据调度结果,更新Pod的状态,并通知容器运行时(如Docker)在目标节点上创建和运行Pod的容器。

        通过这种协作方式,控制器和调度器实现了Pod的全生命周期管理。控制器负责维护期望状态和实际状态的一致性,调度器负责将Pod调度到合适的节点上运行。它们共同工作,确保集群中的Pod按照用户的期望和需求进行创建、更新和删除,实现高可用性、资源利用率和应用程序性能的优化。

3.2 控制器与调度器的交互

        在Kubernetes中,控制器(Controller)和调度器(Scheduler)之间通过以下方式进行交互和通信:

  1. API Server:控制器和调度器都通过Kubernetes API Server进行通信。API Server是Kubernetes集群的控制平面组件,它提供了与集群的交互接口。控制器和调度器通过API Server读取和写入集群状态的信息,包括Pod、节点、标签和事件等。

  2. Watch机制:控制器使用Watch机制来监视集群状态的变化。它向API Server发送Watch请求,以获取与其关联的资源(如Pod、节点)的变化通知。当Pod的状态发生变化时,API Server会将相应的事件通知发送给控制器。

  3. 调度请求:当控制器检测到新的Pod需要创建时,它会向调度器发送调度请求。控制器将Pod的定义信息传递给调度器,请求将其调度到合适的节点上运行。调度请求可以包括Pod的资源需求、亲和性规则、互斥性规则和调度策略等信息。

  4. 调度决策:调度器接收到调度请求后,会根据集群的状态和调度策略,做出调度决策。它会考虑节点的资源可用性、亲和性规则、互斥性规则和负载均衡等因素,选择最合适的节点来运行Pod。

  5. 调度结果:调度器根据调度决策,将Pod与目标节点的绑定关系信息存储在etcd等持久化存储中,并将调度结果返回给控制器。控制器根据调度结果,更新Pod的状态,并通知容器运行时在目标节点上创建和运行Pod的容器。

        通过这些交互和通信方式,控制器和调度器实现了协同工作,保证了集群的稳定性、可用性和性能。

四、控制器和调度器的使用建议

4.1 控制器的使用建议

  1. 使用适当的控制器类型:Kubernetes提供了多种类型的控制器,如Deployment、StatefulSet、DaemonSet等。根据应用程序的需求选择适当的控制器类型。例如,使用Deployment来管理无状态应用程序,使用StatefulSet来管理有状态应用程序。

  2. 设置合适的副本数:根据应用程序的负载和可用资源,设置合适的副本数。确保副本数足够满足应用程序的需求,并在需要时进行自动扩展。

  3. 使用滚动更新策略:在更新应用程序时,使用滚动更新策略来逐步替换旧的Pod。这样可以确保应用程序的可用性和稳定性,避免一次性替换导致的应用中断或系统故障。

  4. 监控和处理事件:控制器会生成与Pod和应用程序相关的事件。监控这些事件,并及时处理异常和故障。使用工具如Prometheus、Grafana等来监控控制器的状态和性能。

4.2 调度器的使用建议

  1. 调度策略的定制化:根据集群的需求和应用程序的特性,定制化调度策略。例如,通过标签和亲和性规则来约束Pod的调度位置,使用Pod反亲和性来避免Pod在同一节点上运行。

  2. 资源限制和配额管理:使用资源限制和配额管理来确保集群中的资源被合理分配和使用。调度器可以根据资源需求和限制来进行调度决策,避免节点过载或资源浪费。

  3. 负载均衡:调度器可以通过负载均衡策略来平衡集群中的负载。使用合适的负载均衡策略,将Pod均匀地分布在不同的节点上,避免节点的不均衡和过载。

  4. 节点亲和性和互斥性规则:利用节点亲和性和互斥性规则,将Pod调度到与其相关的节点上。例如,将具有相同标签的Pod调度到同一节点上,或将具有互斥标签的Pod调度到不同的节点上。

  5. 调度器插件的使用:Kubernetes提供了各种调度器插件,如Predicates和Priority Functions等。根据集群的需求和应用程序的特性,使用适当的插件来扩展和定制调度器的功能。

        控制器和调度器的使用涉及多个方面,包括控制器类型选择、副本数设置、滚动更新策略、调度策略定制、资源限制和配额管理等。根据具体的应用场景和需求,可以优化应用程序的部署和管理,提高集群的性能和可用性。

五、性能和可靠性优化

  1. 集群规模和资源管理:合理规划集群的规模和资源分配,确保集群具有足够的计算、存储和网络资源来支持控制器和调度器的正常运行。根据应用程序的需求和预期负载,调整节点数量、节点规格和资源配额,以避免资源瓶颈和过载。

  2. 控制器和调度器的水平扩展:根据集群的负载和性能需求,考虑将控制器和调度器进行水平扩展。通过增加实例数量来分担负载,并使用负载均衡策略将请求均匀地分发给多个实例。这样可以提高系统的吞吐量和并发处理能力。

  3. 监控和日志记录:设置监控和日志记录系统,实时监测控制器和调度器的性能指标和运行状态。使用工具如Prometheus、Grafana等来收集和可视化监控数据,及时发现性能问题和故障,并采取相应的措施进行调整和修复。

  4. 调度器策略的优化:根据应用程序的特性和需求,优化调度器的策略。考虑使用亲和性规则、节点标签、资源限制和优先级等,来确保Pod被调度到合适的节点上。定期评估和调整调度器的策略,以提高资源利用率和负载均衡效果。

  5. 故障恢复和容错机制:实施故障恢复和容错机制,以保证控制器和调度器的可靠性。使用健康检查和自动重启策略,监测和恢复控制器和调度器实例的健康状态。考虑使用备份和冗余机制,确保在单个实例故障时能够无缝切换到备用实例。

  6. 定期更新和升级:保持控制器和调度器的版本更新和升级。新版本通常会修复bug、改进性能和引入新功能。定期进行版本检查,并根据需要进行升级。确保在升级过程中采取适当的备份和回滚策略,以最小化潜在的中断和故障。

  7. 健康检查和自动恢复:为控制器和调度器设置健康检查和自动恢复机制。定期检查控制器和调度器的健康状态,并在发现异常时自动进行恢复。这可以包括重启实例、重新分配任务或启动备用实例等。

        持续监控和调整控制器和调度器的配置是保持系统高性能和可靠性的关键环节。通过实时监控、故障监测、日志记录和分析、自动化告警和通知、定期评估和调整,以及团队的培训和知识共享,可以及时发现和解决问题,优化配置和策略,从而提高控制器和调度器的性能和可靠性。

六、总结

        作为Kubernetes的两个重要组件,控制器和调度器之间具有互补的作用。控制器负责维护Pod的生命周期和应用程序的期望状态,而调度器负责将Pod调度到合适的节点上运行。控制器通过监控集群状态和处理事件,驱动调度器进行调度决策,并确保Pod按照用户的期望进行部署和管理。调度器根据控制器提供的调度请求和集群状态,做出调度决策并将调度结果返回给控制器,以实现Pod的正确分配和运行。

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

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

相关文章

[机器人-3]:开源MIT Min cheetah机械狗设计(三):嵌入式硬件设计

目录 概述: 1、硬件组成 2、通信速率 3、通信协议 4、mbedOS 概述: 以1条腿进行设计,其它腿也一样: 腿部硬件组成 1、硬件组成 1)UP board计算机板卡(Linux OS): 腿部控制器…

SpringMVC核心处理流程梳理

1、处理流程图展示 当我拿出这张图,阁下又该如何应对呢?执行流程是不是一目了然了。 2、DispatcherServlet:中央处理器或者中央调度器 下图官方的解释应该最完善了。 3、SpringMVC三大核心组件 HandlerMapping 处理器映射器,…

持续集成交付CICD:Jira 发布流水线

目录 一、实验 1.环境 2.GitLab 查看项目 3.Jira 远程触发 Jenkins 实现合并 GitLab 分支 4.K8S master节点操作 5.Jira 发布流水线 一、实验 1.环境 (1)主机 表1 主机 主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 jenkins…

深度学习 Day21——J1ResNet-50算法实战与解析

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU(如果使用的是CPU可以忽略这步)3.导入数据4.查…

word2003 open word2007+

Win 7 C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates 还是不行,重装office2003吧,再安装转换插件,但是再高版本好像没转换工具

PyTorch加载数据以及Tensorboard的使用

一、PyTorch加载数据初认识 Dataset:提供一种方式去获取数据及其label 如何获取每一个数据及其label 总共有多少的数据 Dataloader:为后面的网络提供不同的数据形式 数据集 在编译器中导入Dataset from torch.utils.data import Dataset 可以在jupyter中查看Dataset官方文档&…

[C/C++]数据结构: 链式二叉树的构建及遍历

一: 💬二叉树的概念 1.1:🚩 概念 二叉树是指树中节点的度不大于2的有序树,它是一种最简单且重要的树,二叉树的递归定义为:二叉树是一颗空树,或者是一颗由一个根节点和两颗互不相交的,分别称为跟的左孩子和右孩子树组成的非空树,其中左子树和右子树都是二…

【C++11特性篇】模板的新一力将:可变参数模板 [全解析]

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Linux》专…

Oracle WebLogic Server WebLogic WLS组件远程命令执行漏洞 CVE-2017-10271

Oracle WebLogic Server WebLogic WLS组件远程命令执行漏洞 CVE-2017-10271 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议 漏洞名称 漏洞描述 在Oracle WebLogic Server 10.3.6.0.0/12.1.3.0.3/2.2.1/1.10/12.2.1.1/22.0(Application …

【C++练级之路】【Lv.5】动态内存管理(都2023年了,不会有人还不知道new吧?)

目录 一、C/C内存分布二、new和delete的使用方式2.1 C语言内存管理2.2 C内存管理2.2.1 new和delete操作内置类型2.2.2 new和delete操作自定义类型 三、new和delete的底层原理3.1 operator new与operator delete函数3.2 原理总结3.2.1 内置类型3.2.2 自定义类型 四、定位new表达…

dotnet命令创建C#项目,VSCode打开

在命令行中创建项目并运行 1.首先安装.net 下载地址:.NET | 构建。测试。部署。 2.在 cmd 控制台输入 dotnet --vesion 检查版本号是否正常 3.我用git bash环境输入命令创建项目 // 创建文件夹 mkdir MyVSCode // 进入该文件夹 cd MyVSCode/ // 创建控制台项目 dotnet …

springboot+vue项目如何在linux上部署

在linux上部署项目,是我们实训项目作业的最后一步,此时我们的项目编码测试已经完成,接下来就需要在服务器上部署上线,那么如何部署上线,接下来我会在虚拟机上的CentOS7系统上实现部署, 一.下载JDK 因为我…

Vue在页面上添加水印

第一步:在自己的项目里创建一个js文件;如图所示我在在watermark文件中创建了一个名为waterMark.js文件。 waterMark.js /** 水印添加方法 */ let setWatermark (str1, str2) > {let id 1.23452384164.123412415if (document.getElementById(id) …

EasyExcel使用: RGB字体,RGB背景颜色,fillForegroundColor颜色对照表

EasyExcel使用: RGB字体,RGB背景颜色,fillForegroundColor颜色对照表 使用EasyExcel导出表格可能会对字体颜色和单元格背景颜色进行自定义的修改。 可以自定义字体颜色或者每个单元格的颜色 要想自定义颜色,需要重写CellWriteHandler接口&am…

R语言中使用ggplot2绘制散点图箱线图,附加显著性检验

散点图可以直观反映数据的分布,箱线图可以展示均值等关键统计量,二者结合能够清晰呈现数据蕴含的信息。 本篇笔记主要内容:介绍R语言中绘制箱线图和散点图的方法,以及二者结合展示教程,添加差异比较显著性分析&#xf…

【prompt一】Domain Adaptation via Prompt Learning

1.Motivation 当前的UDA方法通过对齐源和目标特征空间来学习域不变特征。这种对齐是由诸如统计差异最小化或对抗性训练等约束施加的。然而,这些约束可能导致语义特征结构的扭曲和类可辨别性的丧失。 在本文中,引入了一种新的UDA提示学习范式&#xff0…

浅谈Dubbo核心概念及架构流程

浅谈Dubbo核心概念及架构流程 前言重要概念1、SPI2、ServiceBean3、URL4、Invoker 整体流程1、架构图2、调用链路 笔者碎碎言,我们学习Dubbo应该学的是什么? 笔者是一名业务开发,认为一切目的都要为我们的目标服务,即日常工作有帮…

天软特色因子看板 (2023.12 第14期)

该因子看板跟踪天软特色因子A06008聪明钱因子(beta)),该因子为以分钟行情价量信息为基础,识别聪明钱交易,用以刻画机构交易行为 值越大,越反映其悲观情绪,反之,反映其乐观情绪。 今日为该因子跟踪第14期&am…

对属于国家秘密的地理信息的获取、持有、提供、利用情况进行登记并长期保存,实行可追溯管理

对属于国家秘密的地理信息的获取、持有、提供、利用情况进行登记并长期保存,实行可追溯管理 数据记录(包括获取、持有、提供、利用、销毁等全闭环)

DataProcess-VOC数据图像和标签一起进行Resize

VOC数据图像和标签一起进行Resize 参加检测比赛的时候,很多时候工业原始数据尺度都比较大,如果对数据不提前进行处理,会导致数据在加载进内存时花费大量的时间,所以在执行训练程序之前需要将图像提前进行预处理。对于目标检测的数…