AutoMQ:无需 Cruise Control 实现 Kafka 的自动分区再平衡

导读:AutoMQ是一款贯彻云优先理念来设计的 Kafka 替代产品。AutoMQ 创新地对 Apache Kafka 的存储层进行了基于云的重新设计,在 100% 兼容 Kafka 的基础上通过将持久性分离至 EBS 和 S3 带来了 10x 的成本降低以及 100x 的弹性能力提升,并且相比 Apache Kafka 拥有更佳的性能。

在本文中,Vu Trinh 探讨了 AutoMQ 如何通过消除代理之间的数据移动来彻底改变 Kafka 分区重新分配流程。文章首先分析了标准的 Kafka 分区和重新分配过程,以及当前方案(如 Cruise Control)的局限性。接着深入讲解了 AutoMQ 如何利用云原生架构,实现与 Kafka 100% 兼容,并将数据存储在对象存储上,从而简化操作并提高效率。最后,本文详细介绍了 AutoMQ 的 AutoBalancer,它能够精确且轻松地自动实现负载均衡。了解 AutoMQ 如何有效解决 Kafka 的重新平衡挑战。阅读原文:AutoMQ: Achieving Auto Partition Reassignment In Kafka Without Cruise Control

简介

如果你在公司内部管理过 Kafka 部署,可能会执行跨集群分区重新分配操作。由于 Kafka 中计算和存储的紧密耦合,当集群成员发生变化(如添加或移除 broker)或用户希望在 broker 之间平衡负载时,分区副本需要重新分配到不同的 broker,从而导致数据迁移。

虽然 Kafka 提供了处理重新分配过程的脚本,但它需要用户干预,并且在规划方面缺乏稳健性。诸如 Cruise Control 之类的工具,基于集群状态提供自动化的副本平衡,并提供更详细的重新分配规划。

然而,数据迁移的问题仍然存在。

本周,我们将探讨 AutoMQ 如何解决 Kafka 的再平衡挑战。AutoMQ 是一款云原生解决方案,提供 100% Kafka 兼容性,同时将数据完全存储在对象存储中。这种方法提供了一种高性价比的 Kafka 替代方案,同时不牺牲低延迟和高吞吐量性能。更重要的是,您不再需要在 Broker 之间传输数据。


Kakfa Partitions

首先让我们回顾Kafka相关术语。

在 Kafka 中,数据单元是消息。消息在 Kafka 中被组织成主题。可以将消息视为数据库系统中的行,而主题则相当于表。一个主题被分成多个分区。

图像由作者创建。

主题的每个分区对应一个逻辑日志。在物理层面,日志实现为一组大小大致相同的段文件(例如,1GB)。每当消息写入分区时,Broker 会将该消息追加到最后一个段文件。

图像由作者创建。

为了确保数据的持久性和可用性,分区将被复制到可配置数量的Broker (代理)。

图像由作者创建。

当一个 Broker(代理)出现故障时,这一机制可以自动执行副本的故障切换,确保消息尽管发生故障仍然可用。每个 Kafka 分区通常有一个 leader(领导者)和零个或多个 followers(跟随者,存储副本的节点)。所有写操作必须发送到分区的 leader,而读操作可以由 leader 或分区的 followers 处理。

Kafka 以轮询的方式将分区副本分布在整个集群中,以避免将高流量主题的所有分区集中在少数节点上。


Kafka 中的副本重新分配

考虑到副本分布在整个集群中,当现有 broker 崩溃或新 broker 添加时会发生什么?Kafka 副本需要重新分配。假设我们有三个 broker 和两个分区,每个分区有两个副本:

图像由作者创建。

  • 若某个Broker(代理)失败,Kafka会自动将该Broker管理的分区的领导权重新分配给持有这些分区副本的其他Brokers。为了维持复制因子,Kafka可能最终会在其他可用的Brokers上创建这些分区的新副本。

图像由作者创建。

  • 一旦新增Broker,副本会被重新分配,以确保各Broker之间的负载平衡。

图像由作者创建。

除了集群成员的变更外,平衡 Broker 之间的工作负载还需要重新分配分区副本。均匀地在 Broker 之间分布数据有助于防止热点问题,因为某些分区可能会接收到比其他分区更多的流量。此外,确保数据在 Broker 之间均匀分布能够优化资源利用率。

开源版本的 Kafka 提供了一个工具来促进分区重新分配,称为 kafka-reassign-partitions (bin/kafka-reassign-partitions.sh)。这个工具可以在三种模式下操作:

  • generate:此模式用于创建分区重新分配计划。给定一个主题和 Broker 的列表,该工具生成一个候选重新分配计划,将主题分区移动到新的 Broker。

  • execute:在此模式下,工具根据用户提供的重新分配计划执行分区重新分配。此计划可以是自定义的、手动创建的,也可以通过使用 --generate 选项生成的。

  • verify:该工具验证最近一次 --execute 执行期间列出的所有分区的重新分配状态。

然而,用户手动完成再分配过程容易出错且效率低下。那么,有没有办法实现再分配的自动化?幸运的是,已经有第三方工具专门为此目的开发。


LinkedIn 的 Cruise Control

Cruise Control 是一个帮助大规模运行 Apache Kafka 集群的工具。由于其受欢迎程度,许多公司拥有越来越多的 Kafka 集群。在 LinkedIn 管理约 7000 多个 Kafka brokers 意味着平衡 Kafka 工作负载是一个巨大的挑战。此外,在大型 Kafka 集群中监控和检测问题也是至关重要的。

Cruise Control 提供以下能力:

  • 资源利用率跟踪

  • 当前 Kafka 集群状态的可观察性

  • Kafka 集群的异常检测、告警和自愈功能

  • 管理操作,例如添加/删除 Brokers 或重新平衡集群

  • 多重目标重新分配计划的生成

Cruise Control 依赖最新的副本负载信息来优化集群。它定期收集 Broker 和分区级别的资源利用情况,以捕捉每个分区的流量模式。利用这些模式,确定每个分区对 Broker 的负载影响。然后,该工具构建一个工作负载模型来模拟 Kafka 集群的性能。目标优化器根据用户定义的一组目标,探索生成集群工作负载优化计划的各种方法。

图像由作者创建。

这种方法与kafka-reassign-partitions不同,虽然Kafka的原生工具仅根据提供的输入重新分配分区,但Cruise Control使用工作负载建模来提供更全面的重新平衡计划目标。

虽然Cruise Control有助于降低重新平衡操作的成本,但网络上传输数据的需求仍然存在。当数据在broker之间传输时,集群必须等待一段时间才能达到平衡状态。这导致无论是使用Cruise Control还是其他第三方工具,重新平衡在执行过程中都可能存在不精确性。这些工具只能基于集群的当前快照做出决策。鉴于Kafka的数据复制要求,决策过程较为缓慢。因此,依赖于这些决策的集群快照可能会发生显著变化,导致准确性降低。

这个问题在Kafka中依然存在,因为它设计上需要保持存储和计算的紧密集成。


AutoMQ:无需再进行数据移动。

当我们讨论AutoMQ时,情况变得很简单。

AutoMQ利用Apache Kafka代码实现了对Kafka协议的100%兼容,同时引入共享存储架构以取代Kafka代理的本地磁盘。其目标是使系统完全无状态化。

虽然Kafka代理将消息直接写入操作系统的页面缓存,但AutoMQ代理则首先将消息写入堆外内存缓存,并在批量处理数据后再写入对象存储。为确保在代理从内存向对象存储传输数据过程中遭遇故障时的数据耐久性,AutoMQ引入了可插拔的预写日志(Write-Ahead Log,WAL)到磁盘。代理必须在将消息写入S3之前,先验证消息已存储在WAL中。一旦收到消息,代理便将其写入内存缓存,并只有在消息被持久化到WAL后才进行确认。在代理故障时,AutoMQ使用WAL中的数据进行恢复。

图像由作者创建。

通过这种方式,AutoMQ实现了计算与存储的完全分离。AutoMQ的设计暗示了两个基本事实:

图像由作者创建。

  • 由于对象存储服务确保数据的持久性和可用性,因此无需在代理之间复制数据。因此,每个分区只有一个副本,即领导者。

  • 代理是完全无状态的;代理与分区之间的关系仅通过元数据进行管理,而不是将相关的分区数据物理存储在本地代理磁盘上。

因此,重新平衡过程变得极其简单。数据不需要移动;AutoMQ只需调整代理与分区之间的元数据映射即可。这使得决策得以迅速、准确、高效地执行。

关于元数据,AutoMQ使用Kafka的KRaft模式(Kafka Raft)进行元数据管理。最初,Kafka依赖于单独的ZooKeeper服务器来管理集群元数据。通过KRaft模式,Kafka使用基于Raft的内部控制器法定人数——一组负责维护和确保元数据一致性的代理。在KRaft模式下,每个代理保留元数据的本地副本。同时,控制器法定人数的领导者管理更新并将其复制到所有代理,从而减少运营的复杂性和潜在的故障点。

AutoMQ 将集群元数据(如分区和代理之间的映射)存储在控制器仲裁的领导者中。只有领导者可以修改这些元数据;如果代理想要更改它,必须与领导者通信。元数据会被复制到每个代理;控制器会将元数据的任何更改广播给每个代理。


AutoBalancer:AutoMQ 的自平衡功能

目标

目标指一组指导 Kafka 集群优化和平衡的目标或约束。这些目标定义了具体的要求,如在代理之间的负载分布、资源利用限制、分区复制以及延迟目标。

与 Cruise Control 提供预定义的目标并允许用户自行编写不同,AutoMQ 的自平衡特性 AutoBalancer 通过提供一套完善、经过充分测试的目标,简化了操作。

  • 每个 AutoMQ 的目标都定义了一个阈值和一个可接受的范围。例如,若某个目标涉及以 50% 的 CPU 利用率为阈值,并设定 ±20% 的范围,则可接受范围为 30% 到 70%。只要流量保持在此范围内,目标便被视为已达成。

图像由作者创建。

  • 检测类目标包括检查资源容量(如 CPU 或网络 I/O)的违规情况。

图像由作者创建。

为了确保在执行优化目标后保持稳定性,AutoMQ会为检测和优化目标选择合适的阈值和范围。例如,缩小优化目标的范围可以确保处理后的结果更加精确。

某个特定目标可能比其他目标具有更高的优先级。AutoMQ根据优先级将目标分类为硬性目标和软性目标:

  • 硬性目标:这些目标必须在任何情况下都要实现,例如限制分区数量或设置最大代理流量限制。

  • 软性目标:如果与硬性目标冲突,这些目标可以忽略。例如,流量平衡目标。

在目标管理方面,AutoMQ使用数学模型表示每个目标。每个模型根据特定数学条件指示代理是否满足目标。在某些情况下,实现目标的操作可能有多种选择(例如,将分区从代理A移动到代理B或从代理A移动到代理C,两者都能帮助平衡集群流量)。AutoMQ还使用一个数学系统来决定在给定情况下的最佳决策。每个决策根据相关的目标参数进行评分,得分最高的决策将被执行。

组件

AutoBalancer 的实现主要包括以下三个组件:

图像由作者创建。

  • Metrics Collector(指标收集器):Apache Kafka 提供了一个基于 YammerMetrics(Java 的一个指标库)和 KafkaMetrics 的指标收集系统。这些指标可以通过 MetricsRegistry 和 MetricsReporter 接口进行监控。基于这些接口,AutoMQ 实现了一个 reporter(报告器),用来定期收集预定义的指标,如网络流量吞吐量。AutoMQ 使用一个内部主题在 broker(代理)和 controller(控制器)之间传输指标;报告器在收集到指标后,会将其编译成多个消息并发送到内部主题。

  • State Manager(状态管理器):在 controller 上,AutoMQ 维护一个 ClusterModel(集群模型)来表示集群的当前状态和分区负载。集群的变化,如 broker 的增加、移除,或分区的重新分配和删除,都是通过监控 KRaft(Kafka 的 Raft 实现,用于元数据)元数据来更新 ClusterModel。同时,controller 持续从内部主题中消费,预处理提取的指标,并更新 ClusterModel,以确保它准确地反映集群的当前状态。

  • 决策调度器:该组件旨在帮助集群实现特定目标,例如限制每个 broker(Kafka 中的消息代理者)的分区数或限制流量至单一 broker。在 AutoMQ 中,只有活跃的控制器参与决策和调度。在开始决策过程之前,AutoMQ 会捕捉 ClusterModel 的快照(反映 Kafka 集群状态的内部模型),并利用该快照的状态进行后续调度。在快照完成后,ClusterModel 仍可以继续更新。AutoMQ 的决策过程采用类似于 Cruise Control(一个用于 Kafka 集群管理的开源工具)的启发式调度算法。

典型过程

图像由作者创建。

接下来,我们深入探讨一下 AutoMQ 自平衡的典型过程:

  • 自平衡调度器在每个间隔时间(例如每 60 秒)启动,检查集群是否满足所有设定的目标。如果满足,调度器将进入休眠状态。

  • 如果没有,调度器将会获取违反目标的代理者(broker)列表。

  • 对于每个违反目标的代理者,调度器将制定分区重新分配计划,以尝试使该代理者符合目标。

  • 随后,调度器将验证分区重新分配方案是否可行。如果可行,该计划将在集群内执行。如果不可行,则该代理者无法达到目标,调度器将继续检查列表中的其他代理者。

情景

让我们回顾一下AutoBalancer在不同情景下的行为:

在云计算的背景下,“机架”可以指一个可用区。

  • 主题创建:AutoBalancer在主题创建时支持机架感知。它可以将数据随机分布在不同的机架上,同时考虑每个机架的“权重”。权重较高的机架将平均接收比权重较低的机架更多的数据。在同一机架内,数据的分配基于每个代理(broker)的权重。如果某个代理的权重较高,它将在该机架内接收更多的数据。

  • 添加代理:AutoBalancer支持逐步热启动新添加的代理。系统不会将所有流量一次性发送到新代理,而是随时间逐步增加流量,以防止过载。在扩展过程中,AutoBalancer还尽量减少跨机架的流量,以避免网络拥塞,除非涉及到新机架。

  • 删除代理:AutoBalancer支持自动将被删除代理所处理的分区迁移到其他代理。它努力将分区迁移到与被删除代理同一机架的代理上。

  • 吞吐量不均:系统根据每个代理(broker)处理特定请求速率的能力分配流量。每个物理代理都被赋予了一个“权重”,这个权重衡量了其负载处理能力;例如,一个性能更高的代理可能被分配更高的权重。AutoMQ通过评估诸如网络、IO(输入/输出)、和CPU(中央处理器)核心等因素来确定每个代理的权重。系统会持续监控每个节点的负载和处理能力,以调整调度,防止任何单个代理过载。

  • 单节点故障:AutoBalancer支持识别性能较慢的代理,这可能表明潜在问题。系统能通过将任务转移到健康节点来减少这些性能较慢代理的负载,使得较慢的代理能在不影响系统性能的情况下恢复。

AutoBalancer与Cruise Control的比较

在结束本文之前,让我们来回顾一下AutoBalancer和Cruise Control之间的一些差异:

  • AutoMQ原生支持AutoBalancer功能,省去了复杂的操作和部署。相反,Cruise Control需要单独部署和管理,同时与Kafka集群一起运行。

  • Apache Kafka在平衡流量时需要复制大量数据以移动分区,导致执行成本高昂。因此,Cruise Control的平衡目标设定严格,仅在流量波动较小时才显示出明显效果。在流量负载变化显著的情况下,Cruise Control的效果有限。AutoMQ通过将计算与存储分离的设计,更适合处理复杂负载场景。

  • 得益于其设计,AutoMQ使AutoBalancer能够比Cruise Control更快地执行副本重新分布。此外,由于AutoBalancer是AutoMQ的有机组成部分,它可以直接消费KRaft(Kafka Raft)日志,从而更迅速地响应集群变化。


尾声

感谢您阅读到这里。

在本文中,我们回顾了一些Kafka术语,例如分区副本如何在代理(brokers)之间分布,以及当集群成员变更时为什么需要进行副本重新分布。然后,我们探讨了Kafka在重分布过程中的原生解决方案。

接下来,我们考察了诸如 Cruise Control 等第三方工具如何帮助用户以更方便和强大的方式简化流程。我们发现,AutoMQ 能完全解决重新分配过程中的数据传输问题,因为数据存储在 broker 之外,仅需调整元数据。最后,我们深入探讨了 AutoMQ 的自平衡功能 AutoBalancer。

虽然我们看到 Cruise Control 在 Kafka 重新分配过程中能帮助用户,但核心问题依旧存在:数据仍需通过网络在 broker 之间传输。而通过创新的架构,AutoMQ 完全将数据存储在对象存储中,使许多 Kafka 操作对用户而言更加简化,尤其是在分区重新分配过程中。当分区被分配到不同 broker 时,仅需调整元数据,从而实现更高效、更加稳健的内部自平衡。


参考文献:

[1] 感谢 AutoMQ 的解决方案架构师与首席布道师 Kaiming Wan 的协助。

[2] AutoMQ 官方文档: https://docs.automq.com/automq/what-is-automq/overview

[3] AutoMQ 博客: https://www.automq.com/blog

[4] Confluent, AK 生产环境部署最佳实践: https://docs.confluent.io/platform/current/kafka/post-deployment.html#best-practices-for-ak-production-deployments-in-cp

[5] Kafka Cruise Control GitHub 仓库: https://github.com/linkedin/cruise-control


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读之基于Syn2Real域的侧扫声纳类水雷目标探测

摘要 由于现实世界数据的稀缺性,基于深度学习的水下水雷探测受到了限制。这种稀缺性导致过拟合,即模型在训练数据上表现良好,但在未见数据上表现不佳。本文提出了一种使用扩散模型的Syn2Real (Synthetic to Real)域泛…

如何使用Docker搭建哪吒监控面板程序

哪吒监控(Nezha Monitoring)是一款自托管、轻量级的服务器和网站监控及运维工具,旨在为用户提供实时性能监控、故障告警及自动化运维能力。 文档地址:https://nezha.wiki/ 本章教程,使用Docker方式安装哪吒监控面板,在此之前,你需要提前安装好Docker. 我当前使用的操作系…

微服务学习(1):RabbitMQ的安装与简单应用

目录 RabbitMQ是什么 为什么要使用RabbitMQ RabbitMQ的安装 RabbitMQ架构及其对应概念 队列的主要作用 交换机的主要作用 RabbitMQ的应用 通过控制面板操作(实现收发消息) RabbitMQ是什么 RabbitMQ是一个开源的消息队列软件(消息代理…

综合实验处理表格

新建excel表格,输入信息,另存为csv文件。 利用notepad打开csv文件,可以观察格式 目标:通过编程处理文件,实现对数据的处理,成绩求和以及评价 对数据逐行处理,读一行,处理一行&#…

【leetcode hot 100 560】和为K的子数组

解法一&#xff1a;用左右指针寻找字串&#xff0c;如果和>k&#xff0c;则减少一个数&#xff08;left&#xff09;&#xff1b;如果和<k&#xff0c;则加上一个数&#xff08;right&#xff09;。 class Solution {public int subarraySum(int[] nums, int k) {int nu…

STM32CubeMx DRV8833驱动

一、DRV8833驱动原理 ​ STBY口接单片机的IO口&#xff0c;STBY置0电机全部停止&#xff0c;置1才能工作。STBY置1后通过AIN1、AIN2、BIN1、BIN2 来控制正反转。 AIN1AIN2电机状态00停止1speed反转speed1正转11停止 其中A端&#xff08;AIN1与AIN2&#xff09;只能控制AO1与…

Android 图片压缩详解

在 Android 开发中,图片压缩是一个重要的优化手段,旨在提升用户体验、减少网络传输量以及降低存储空间占用。以下是几种主流的图片压缩方法,结合原理、使用场景和优缺点进行详细解析。 效果演示 直接先给大家对比几种图片压缩的效果 质量压缩 质量压缩:根据传递进去的质…

JavaWeb后端基础(3)

原打算把Mysql操作数据库的一些知识写进去&#xff0c;但是感觉没必要&#xff0c;要是现在会的都是简单的增删改查&#xff0c;所以&#xff0c;这一篇&#xff0c;我直接从java操作数据库开始写&#xff0c;所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…

ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;地表覆盖图的矢量化是一项至关重要的任务。天地图作为中国国家级的地理信息服务平台&#xff0c;提供了丰富且详尽的地表覆盖数据。然而&#xff0c;这些数据通常以栅格格式存在&#xff0c;不利于进行空间分析和数据…

TP-LINK路由器如何设置网段、网关和DHCP服务

目标 ①将路由器的网段由192.168.1.XXX改为192.168.5.XXX ②确认DHCP是启用的&#xff0c;并将DHCP的IP池的范围设置为排除自己要手动指定的IP地址&#xff0c;避免IP冲突。 01-复位路由器 路由器按住复位键10秒以上进行重置操作 02-进入路由器管理界面 电脑连接到路由器&…

基于Spring Boot的供应商管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

大模型WebUI:Gradio全解12——LangChain原理、架构和组件(3)

大模型WebUI:Gradio全解12——LangChain原理、架构和组件(3) 前言本篇摘要12. LangChain原理及agents构建Gradio UI12.3 LangChain架构12.3.1 LangChain12.3.2 Integration Packages1. 概念2. 示例12.3.3 LangGraph1. 概念2. 示例12.3.4 LangGraph Platform1. 概览2. 优势分…

通过 PromptTemplate 生成干净的 SQL 查询语句并执行SQL查询语句

问题描述 在使用 LangChain 和 Llama 模型生成 SQL 查询时&#xff0c;遇到了 sqlite3.OperationalError 错误。错误信息如下&#xff1a; OperationalError: (sqlite3.OperationalError) near "sql SELECT Name FROM MediaType LIMIT 5; ": syntax error [SQL: …

【每天认识一个漏洞】url重定向

&#x1f31d;博客主页&#xff1a;菜鸟小羊 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 常见应用场景 主要是业务逻辑中需要进行跳转的地方。比如登录处、注册处、访问用户信息、订单信息、加入购物车、分享、收…

SQL命令详解之数据的查询操作

目录 1 简介 2 基础查询 2.1 基础查询语法 2.2 基础查询练习 3 条件查询 3.1 条件查询语法 3.2 条件查询练习 4 排序查询 4.1 排序查询语法 4.2 排序查询练习 5 聚合函数 5.1 一般语法&#xff1a; 5.2 聚合函数练习 6 分组查询 6.1 分组查询语法 6.2 分组查询…

IDEA集成DeepSeek,通过离线安装解决无法安装Proxy AI插件问题

文章目录 引言一、安装Proxy AI1.1 在线安装Proxy AI1.2 离线安装Proxy AI 二、Proxy AI中配置DeepSeek2.1 配置本地部署的DeepSeek&#xff08;Ollama方式&#xff09;2.2 通过第三方服务商提供的API进行配置 三、效果测试 引言 许多开发者尝试通过安装Proxy AI等插件将AI能力…

Spring Boot3+Vue3极速整合: 10分钟搭建DeepSeek AI对话系统(进阶)

Spring Boot3Vue3极速整合: 10分钟搭建DeepSeek AI对话系统(进阶) 前言 在上次实战指南《Spring Boot3Vue2极速整合: 10分钟搭建DeepSeek AI对话系统》引发读者热议后&#xff0c;我通过200真实用户反馈锁定了几个问题进行优化进阶处理&#xff1a; 每次对话都需重复上下文背…

【Qt-信号与槽】connect函数的用法

&#x1f3e0;个人主页&#xff1a;Yui_ &#x1f351;操作环境&#xff1a;Qt Creator &#x1f680;所属专栏&#xff1a;Qt 文章目录 1.信号和槽的概念1.1 信号的本质1.2 槽的本质1.3 补充说明2. 信号和槽的使用2.1 connect函数介绍2.2 connect函数的简单使用2.2.1 图形化方…

服务器IPMI用户名、密码批量检查

背景 大规模服务器部署的时候&#xff0c;少不了较多的网管和监测平台&#xff0c;这些平台会去监控服务器的性能、硬件等指标参数&#xff0c;为了便于管理和控制&#xff0c;则需要给服务器IPMI带外管理添加较多的用户&#xff0c;这就需要对较多的服务器检查所对应的IPMI用…

数字内容体验平台核心技术八大对比评测

数字内容体验技术解析 在数字化浪潮中&#xff0c;数字内容体验的底层技术架构已成为企业提升用户粘性与运营效率的核心驱动力。当前行业主流的数据分析引擎通过实时采集用户交互数据&#xff0c;结合机器学习模型进行深度挖掘&#xff0c;可精准识别内容偏好与行为模式&#…