当前位置: 首页 > news >正文

Minio分布式多节点多驱动器集群部署

Minio分布式多节点多驱动器集群部署

  • Minio分布式多节点多驱动器集群部署
    • 节点规划
    • 先决条件
      • 开放防火墙端口
      • 设置主机名
      • 更新域名映射文件
      • 时间同步
      • 存储要求
      • 内存要求
    • 增加虚拟机磁盘(所有机器都要执行)
    • 部署分布式 MinIO
    • 测试上传与预览
    • 测试高可用
      • MinIO 配置限制
      • 模拟单节点磁盘故障
      • 模拟两节点磁盘故障
    • 创建 MinIO 服务文件 (systemd)
      • 创建minio.service文件
      • 创建用户和组
      • 创建服务环境文件
    • 启动 MinIO 服务
    • Nginx 负载均衡
  • 参考链接

Minio分布式多节点多驱动器集群部署

官方文档地址:https://docs.min.io/docs/

集群部署文档地址:部署 MinIO:多节点多驱动器 — 适用于 Linux 的 MinIO 对象存储

节点规划

虚拟机名称虚拟机IP主机名MAC地址磁盘挂载
centos7_01192.168.0.123minio-0100:50:56:3D:52:7C/dev/sdb /mnt/data1
centos7_02192.168.0.136minio-0200:0C:29:5B:4E:8B/dev/sdb /mnt/data1
centos7_03192.168.0.141minio-0300:0C:29:97:84:DD/dev/sdb /mnt/data1
centos7_04192.168.0.163minio-0400:50:56:23:E6:53/dev/sdb /mnt/data1

先决条件

开放防火墙端口

  • 每个节点应具有与部署中其他节点的双向网络访问权限。对于容器化或编排的基础设施,可能需要配置网络和路由组件(如入口或负载均衡器)。

  • 某些操作系统可能需要设置防火墙规则。例如,以下命令显式打开运行 firewalld 的服务器的默认 MinIO 服务器 API 端口 :9000

  • 部署中的所有 MinIO 服务器必须使用相同的监听端口,所有机器都要执行

    # MinIO 服务器 API 端口
    firewall-cmd --zone=public --add-port=9000/tcp --permanent 
    # MinIO 控制台端口
    firewall-cmd --zone=public --add-port=9001/tcp --permanent 
    # 务必重载防火墙
    firewall-cmd --reload
    

    image-20250220090823020

设置主机名

登录到每台虚拟机,通过 hostnamectl 命令文件来设置主机名

在虚拟机 centos7_01 上,设置主机名为 minio-01

sudo hostnamectl set-hostname minio-01

对其他虚拟机也进行类似的操作:

sudo hostnamectl set-hostname minio-02    # 对于 centos7_02
sudo hostnamectl set-hostname minio-03    # 对于 centos7_03
sudo hostnamectl set-hostname minio-04    # 对于 centos7_04

验证主机名设置

使用 hostname 命令检查主机名是否已正确设置:

hostname

更新域名映射文件

确保每个虚拟机能够通过主机名找到其他虚拟机,需要在每台虚拟机上添加主机名和 IP 地址的映射,执行以下命令:

echo "192.168.0.123    minio-01" >> /etc/hosts
echo "192.168.0.136    minio-02" >> /etc/hosts
echo "192.168.0.141    minio-03" >> /etc/hosts
echo "192.168.0.163    minio-04" >> /etc/hosts

image-20250219172208552

检查配置:在每台虚拟机上,使用 ping 命令检查主机名是否正确解析:

ping minio-01
ping minio-02
ping minio-03
ping minio-04

时间同步

sudo yum install   ntp       # 对于 CentOS/RHEL
sudo systemctl start ntpd      # 启动 NTP 服务
sudo systemctl enable ntpd     # 设置 NTP 服务开机启动

如果不设置可能在启动时报错:

Skewed authentication date/time:这个错误通常是由于参与 MinIO 集群的节点之间的系统时间不同步导致的。MinIO 使用请求时间戳来验证请求的有效性。如果时间不同步,MinIO 认为请求的时间是“偏移”的,从而拒绝该请求。

API: github.com/minio/minio/cmd.registerDistErasureRouters.(*Manager).Handler.func1
Time: 01:24:46 UTC 02/20/2025
RequestID: 1825C62382628C3B
RemoteHost: 192.168.0.141
Host: minio-04:9000
Error: auth 192.168.0.141:37916: Skewed authentication date/time (*fmt.wrapError)5: internal/logger/logonce.go:118:logger.(*logOnceType).logOnceIf()4: internal/logger/logonce.go:149:logger.LogOnceIf()3: internal/grid/connection.go:59:grid.gridLogOnceIf()2: internal/grid/manager.go:172:cmd.registerDistErasureRouters.(*Manager).Handler.func1()1: net/http/server.go:2220:http.HandlerFunc.ServeHTTP()

存储要求

官方文档:存储要求

  1. 使用本地存储(DAS)
    • 优先选择直连存储(DAS),避免使用网络存储(NAS、SAN、NFS)。
    • 推荐使用闪存(NVMe、SSD)存储“热”数据。
  2. 文件系统格式
    • 使用 XFS 格式化的驱动器,MinIO 官方推荐并测试 XFS。
    • 不支持或不推荐使用 EXT4、BTRFS、ZFS 等其他文件系统。
  3. 驱动器类型一致性
    • 每个存储池中的驱动器类型必须一致(如全部 NVMe 或全部 SSD)。
    • 混合驱动器类型会导致性能问题,MinIO 会将所有驱动器视为性能最低的类型。
  4. 驱动器大小一致性
    • 每个存储池中的驱动器容量必须一致。
    • MinIO 会将所有驱动器的可用容量限制为池中最小的驱动器容量。
  5. 顺序驱动器挂载
    • 使用顺序挂载路径(如 /mnt/drive-1/mnt/drive-2 等)。
    • 支持 Go 扩展符号 {x...y} 表示顺序驱动器系列。
  6. 重启后保持挂载
    • 使用 /etc/fstab(Linux)或等效工具确保驱动器在重启后保持挂载和映射一致。
  7. 独占访问
    • MinIO 需要对驱动器进行独占访问,其他进程或工具不应直接操作驱动器上的数据。

内存要求

  1. 内存预分配
    • RELEASE.2024-01-28T22-35-53Z 版本开始,MinIO 在启动时预分配 2GiB 系统内存。
  2. 最低内存要求
    • 每个节点至少需要 32GiB 内存。
    • 更多内存分配建议可参考 MinIO 官方文档。

增加虚拟机磁盘(所有机器都要执行)

(如果非虚拟机可不关注本节内容)

注意:在MinIO集群部署中,需要将其强制性安装在独占的磁盘分区,而不能在根目录下建立目录。例如,在 /opt/data1 等位置建立目录文件夹代替。如果试图在 /home/data 等目录下创建目录,可能会遇到如下错误提示:Error: Drive /home/data is part of root drive, will not be used (*errors.errorString)。因此务必在系统已挂载的磁盘下建立 data 目录。

先停止 VM 主机,进入设置中添加新硬盘,直接默认下一步输入磁盘大小,选择将虚拟磁盘存储为单个文件,然后下一步即可

QQ_1739957843505

QQ_1739957928720

image-20250219173954462

image-20250219174111321

查看分区

# 显示所有使用和未使用的分区大小与簇信息
fdisk -l 
# 显示所有使用和未使用的分区
lsblk

image-20250219174403356

硬盘挂载

# 格式化磁盘
mkfs.ext4 -F /dev/sdb  
# 创建一个挂载指向目录
mkdir /mnt/data1  
# 挂载到指向的目录
mount /dev/sdb /mnt/data1  

image-20250219174628504

设置开机自动挂载

echo '/dev/sdb /mnt/data1 ext4 defaults 0 0' >> /etc/fstab

然后其他三台机器执行相同操作!

然后其他三台机器执行相同操作!

然后其他三台机器执行相同操作!

部署分布式 MinIO

依次给每台机器执行以下命令,执行下载minio并赋权的操作

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/

每台机器启动测试

export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=miniostorage
nohup minio server --config-dir /etc/minio --address ":9000" --console-address ":9001" \
http://minio-01/mnt/data1 http://minio-02/mnt/data1 \
http://minio-03/mnt/data1 http://minio-04/mnt/data1 > minio_server.log 2>&1 &

访问登录页面

image-20250220103641941

登录成功界面

image-20250220103748110

监控页面

image-20250220110402480

测试上传与预览

image-20250220105858604

image-20250220110020242

预览上传的文件

image-20250220110512879

测试高可用

MinIO 配置限制

规格
每个集群的最大服务器数量无限制
最小服务器数量1
当服务器数量为 1 时,每台服务器的最小磁盘数量1(仅适用于 SNSD 部署,该配置不提供额外的可靠性或可用性)
当服务器数量为 2 或更多时,每台服务器的最小磁盘数量1
每台服务器的最大磁盘数量无限制
读取限制(Read Quorum)一半节点 (N/2)
写入限制(Write Quorum)一半节点+1 (N/2)+1

模拟单节点磁盘故障

通过关闭一个节点的minio服务器来验证数据的高可用性。比如,在 minio-01 上停止 MinIO 服务:

[root@minio-01 bin]# ps -ef|grep minio
root      13064 117867  0 10:28 pts/2    00:00:04 minio server --config-dir /etc/minio --address :9000 --console-address :9001 http://minio-01/mnt/data1 http://minio-02/mnt/data1 http://minio-03/mnt/data1 http://minio-04/mnt/data1
root      51956 117867  0 11:11 pts/2    00:00:00 grep --color=auto minio
[root@minio-01 bin]# kill -9 13064
  • 读取

    image-20250220111851879

  • 写入

    image-20250220134747191

模拟两节点磁盘故障

minio-02 上也停止 MinIO 服务:

[root@minio-02 bin]# ps -ef|grep minio
root      62535   1603  0 13:45 pts/0    00:00:02 minio server --config-dir /etc/minio --address :9000 --console-address :9001 http://minio-01/mnt/data1 http://minio-02/mnt/data1 http://minio-03/mnt/data1 http://minio-04/mnt/data1
root      76433   1603  0 14:00 pts/0    00:00:00 grep --color=auto minio
[root@minio-02 bin]# kill -9 62535
  • 读取

    此时的访问和下载功能仍能正常服务

    纠删集是支持 MinIO 纠删码的多个磁盘组成的一个组。纠删码提供了高可用性、可靠性和冗余性,确保在 MinIO 部署中存储的数据的安全性。MinIO 将对象划分为多个数据块——称为分片(shards),并将它们均匀分布在纠删集中的每个磁盘上。即使某个磁盘发生故障,MinIO 也可以继续无缝地处理读取和写入请求。在最高冗余级别下,尽管部署中最多丢失一半的磁盘,MinIO 仍然可以以最小的性能影响继续提供读取请求

    image-20250220112124168

  • 写入

    写入失败:Error: Resource requested is unwritable, please reduce your request rate

    在 MinIO 中,写入定数(Write Quorum)通常要求集群中超过一半的节点是健康的。例如,如果有 4 个节点,写入定数通常是 3。也就是说,至少需要 3 个节点可用才能进行写入操作。如果有 2 个节点宕机,剩下的 2 个节点就无法满足写入写入定数,导致写入请求被拒绝

    image-20250220112308119

创建 MinIO 服务文件 (systemd)

对于手动安装(例如二进制安装),需要在 ==/usr/lib/systemd/system/==手动创建这个文件

创建minio.service文件

[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio[Service]
WorkingDirectory=/usr/localUser=minio-user
Group=minio-user
ProtectProc=invisibleEnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify# Let systemd restart this service always
Restart=always# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536# Specifies the maximum number of threads this process can create
TasksMax=infinity# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no[Install]
WantedBy=multi-user.target# Built for ${project.name}-${project.version} (${project.name})

创建用户和组

创建 minio-user 用户和组,并将 MinIO 使用的磁盘路径的所有权赋予该用户

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown -R minio-user:minio-user /mnt/data1

创建服务环境文件

环境文件 /etc/default/minio 用于存储 MinIO 启动时所需的环境变量。以下是该文件的内容说明:

MINIO_VOLUMES="http://minio-01/mnt/data1 http://minio-02/mnt/data1 http://minio-03/mnt/data1 http://minio-04/mnt/data1"
MINIO_OPTS="--console-address :9001"
MINIO_ROOT_USER=minio
MINIO_ROOT_PASSWORD=miniostorage

然后通知 systemd 重新加载其配置文件

sudo systemctl daemon-reload

启动 MinIO 服务

执行以下命令启动 MinIO 服务:

sudo systemctl start minio.service

检查 MinIO 服务状态:

# 查看其状态
sudo systemctl status minio.service# 查看相关日志
journalctl -f -u minio.service

这些命令将启动 MinIO 服务,并查看其状态和日志。MinIO 服务可能在启动初期显示一些非关键的警告,通常警告是暂时的,会在部署完全上线后自动解决。

设置 MinIO 在启动时自动启动

sudo systemctl enable minio.service

这将确保在主机重启时,MinIO 服务会自动启动。

Nginx 负载均衡

应用程序通常不应管理这些连接,因为对部署拓扑的任何更改都需要应用程序更新。 生产环境应部署负载均衡器或类似的网络控制平面组件来管理与 MinIO 部署的连接。 可以部署 NGINX 负载均衡器,以对部署中的可用节点执行“最少连接”或“循环”负载均衡。

image-20250221100450070

负载均衡器将请求路由到部署中的任何节点。 接收节点处理此后的任何节点间请求。

主机名IP 地址MinIO数据访问端口MinIO控制台端口
minio-01192.168.0.123http://192.168.0.123:9000http://192.168.0.123:9001
minio-02192.168.0.136http://192.168.0.136:9000http://192.168.0.136:9001
minio-03192.168.0.141http://192.168.0.141:9000http://192.168.0.141:9001
minio-04192.168.0.163http://192.168.0.163:9000http://192.168.0.163:9001

在另一台机器192.168.0.237新增nginx配置文件 /etc/nginx/conf.d/minio_proxy.conf

# MinIO 集群控制台
upstream console {ip_hash;server 192.168.0.123:9001;server 192.168.0.136:9001;server 192.168.0.141:9001;server 192.168.0.163:9001;
}# MinIO 管理端口
upstream minio {ip_hash;server 192.168.0.123:9000;server 192.168.0.136:9000;server 192.168.0.141:9000;server 192.168.0.163:9000;
}# 控制台访问配置(端口 9001)
server {listen       9001;server_name  192.168.0.73;  # 设置为 Nginx 服务器的 IP 或域名access_log  /var/log/nginx/minio_console.access.log main;error_log   /var/log/nginx/minio_console.error.log debug;location / {proxy_pass http://console;# 添加了 WebSocket 支持proxy_http_version      1.1;proxy_set_header        Upgrade $http_upgrade;proxy_set_header        Connection "upgrade";proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;proxy_set_header        Host $http_host;proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;}
}# 数据访问配置(端口 9000)
server {listen       9000;server_name  192.168.0.73;  # 设置为 Nginx 服务器的 IP 或域名access_log  /var/log/nginx/minio.access.log main;error_log   /var/log/nginx/minio.error.log debug;location / {proxy_pass http://minio;# 添加了 WebSocket 支持proxy_http_version      1.1;proxy_set_header        Upgrade $http_upgrade;proxy_set_header        Connection "upgrade";proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;proxy_set_header        Host $http_host;proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;}
}

访问测试 http://192.168.0.237:9001/ minio/miniostorage

image-20250221103450885

image-20250221110216826

参考链接

  1. 部署 MinIO:多节点多驱动器 — 适用于 Linux 的 MinIO 对象存储
  2. ubuntu部署minio集群_ubuntu minio-CSDN博客
  3. 【解决】使用Nginx给minio做代理转发 进入管理界面查看桶一直显示loading问题_nginx 代理 minio websocket-CSDN博客

相关文章:

Minio分布式多节点多驱动器集群部署

Minio分布式多节点多驱动器集群部署 Minio分布式多节点多驱动器集群部署节点规划先决条件开放防火墙端口设置主机名更新域名映射文件时间同步存储要求内存要求 增加虚拟机磁盘(所有机器都要执行)部署分布式 MinIO测试上传与预览测试高可用MinIO 配置限制模拟单节点磁盘故障模拟…...

Web前端开发——HTML基础

本系列博客声明,根据本人所学书籍和网上的一些资料共同磨合,写下web前端系列的博客 HTML基础 一、HTML基本概述[^1]二、HTML大体认知1.HTML基本结构2.HTML 语法格式 三、THML常用标记[^2]1.文本标记(1)标题(2&#xf…...

《计算机视觉》——图像拼接

图像拼接 图像拼接是将多幅有重叠区域的图像合并成一幅全景或更大视角图像的技术,以下为你详细介绍: 原理:图像拼接的核心原理是基于图像之间的特征匹配。首先,从每幅图像中提取独特的特征点,如角点、边缘点等&#x…...

zookeeper从入门到精通

一、入门基础 1.1 什么是 ZooKeeper ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,后成为 Apache 的顶级项目。它为分布式应用提供了高效、可靠的协调服务,例如统一命名服务、配置管理、分布式锁、集群管理等。ZooKeeper 的数据模型类…...

2.2 添加注释

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 注释是为了方便理解代码含义而添加的简短的解释性说明。在编译时,编辑器不会将注释加入最终生成的文件中,不…...

具有快慢思考的语言调节机器人操作

24年1月来自华东师范大学、美的集团和上海大学的论文“Language-Conditioned Robotic Manipulation with Fast and Slow Thinking”。 语言调节机器人操作,旨在将自然语言指令转化为可执行动作,从简单的“拾取和放置”到需要意图识别和视觉推理的任务。…...

美颜相机1.0

项目开发步骤 1 界面开发 美颜相机界面构成: 标题 尺寸 关闭方式 位置 可视化 2 创建主函数调用界面方法 3 添加两个面板 一个是按钮面板一个是图片面板 用JPanel 4 添加按钮到按钮面吧【注意:此时要用初始化按钮面板的方法initBtnPanel 并且将按钮添…...

Css3重点知识讲解

选择器 优先级: id 选择器 > 类选择器 > 标签选择器 类选择器: .myClass {color: blue; }id 选择器(全局唯一): #myId {color: green; }标签选择器: p {color: red; }层次选择器: /…...

[Web 安全] Web 安全攻防 - 学习手册

关联专栏:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:Web 安全攻防 —— 信息收集篇 Web 信息收集 — 手动收集域名信息 Web 信息收集 — 手动收集 IP 信息 Web 信息收集 — 端口服务信息收集 Web 信息收集 — 自动化信息收集 — ShuiZe 水泽 We…...

nextjs的记录一些小东西

1. 格式化时间&#xff1a;使用date-fns库 npm install date-fns 在组建中创建date.js import { parseISO, format } from date-fnsexport default function Date({ dateString }) {const date parseISO(dateString)return <time dateTime{dateString}>{format(date,…...

故障诊断 | PID搜索算法优化CatBoost故障诊断(MatlabPython)

目录 效果一览文章概述故障诊断 | PID搜索算法优化CatBoost故障诊断(Matlab&Python)PID搜索算法优化CatBoost故障诊断PID搜索算法优化CatBoost故障诊断一、引言1.1、研究背景与意义1.2、研究现状1.3、研究目的与内容二、CatBoost算法概述2.1、CatBoost算法原理2.2、CatBo…...

探索关键领域的AI工具:机器学习、深度学习、计算机视觉与自然语言处理

引言 在人工智能(AI)迅猛发展的今天&#xff0c;机器学习(ML)、深度学习(DL)、计算机视觉(CV)和自然语言处理(NLP)已经成为解决复杂问题的关键技术。无论是自动驾驶车辆的视觉识别&#xff0c;还是智能助手的对话理解&#xff0c;这些技术都在改变着世界。本文将介绍在各个领域…...

使用 DeepSeek 生成流程图、甘特图与思维导图:结合 Typora 和 XMind 的高效工作流

在现代工作与学习中&#xff0c;可视化工具如流程图、甘特图和思维导图能够极大地提升信息整理与表达的效率。本文将详细介绍如何使用 DeepSeek 生成 Mermaid 文本&#xff0c;结合 Typora 快速生成流程图和甘特图&#xff0c;并通过 Markdown 格式生成思维导图&#xff0c;最终…...

11、集合框架

一、简介 Java集合框架位于java.util包中 Collection是Set和List的父类&#xff0c;Collections是工具类&#xff0c;提供了对集合进行排序、遍历等多种算法的实现。 ArrayList: 有序(放进去顺序和拿出来顺序一致)&#xff0c;可重复 HashSet: 无序(放进去顺序和拿出来顺序不…...

从入门到精通Rust:资源库整理

今天给大家分享一些优质的Rust语言学习资源&#xff0c;适合不同水平的学习者。前三个官方资源是我Rust语言的启蒙老师&#xff0c;非常平易近人。 官方资源 The Rust Programming Language (The Book) 链接: https://doc.rust-lang.org/book/ 简介: 官方权威指南&#xff0c…...

Spring Boot 项目启动命令大全:参数详解与高阶用法

Spring Boot 项目启动命令大全&#xff1a;参数详解与高阶用法 一、基础启动命令 默认启动命令 java -jar xxx.jar适用场景&#xff1a;开发环境快速启动&#xff0c;使用默认配置&#xff08;端口 8080&#xff0c;内存由 JVM 自动分配&#xff09;。 指定 JVM 内存参数 java…...

c++day4

作业 #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory>using namespace std; class S{ private:int a;int b; public:S(i…...

应对LLM应用中的AI幻觉,如何通过Token对数概率预测LLM的可靠性

应对LLM应用中的AI幻觉 如何通过Token对数概率预测LLM的可靠性 内容&#xff1a; 1. 相关机器学习&#xff08;ML&#xff09;概念回顾&#xff08;精准度/召回率&#xff0c;LLM直觉&#xff09; 2. 使用序列对数概率度量作为LLM信心 3. 通过案例研究结果过滤低质量LLM输出…...

Openwrt路由器操作系统

一、什么是 OpenWrt&#xff1f; OpenWrt 是一个基于 Linux 的开源操作系统&#xff0c;主要设计用于嵌入式设备&#xff0c;尤其是路由器。与其说是传统的路由器固件&#xff0c;不如说它是一个路由器操作系统。 传统的路由器固件通常由路由器厂商开发&#xff0c;功能相对固…...

基于SpringBoot的“流浪动物救助系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“流浪动物救助系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统…...

Ansible 学习笔记

这里写自定义目录标题 基本架构文件结构安装查看版本 Ansible 配置相关文件主机清单写法 基本架构 Ansible 是基于Python实现的&#xff0c;默认使用22端口&#xff0c; 文件结构 安装 查看用什么语言写的用一下命令 查看版本 Ansible 配置相关文件 主机清单写法...

(六)趣学设计模式 之 代理模式!

目录 一、啥是代理模式&#xff1f;二、为什么要用代理模式&#xff1f;三、代理模式的实现方式1. 静态代理2. JDK动态代理3. CGLIB动态代理 四、三种代理的对比五、代理模式的优缺点六、代理模式的应用场景七、总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&a…...

【CSS】HTML元素布局基础总结

HTML默认布局和元素显示 CSS 元素显示 { HTML 默认布局&#xff1a; 流式布局 { 从左到右&#xff0c;从上到下 随页面宽度变化动态排列元素 文档流&#xff1a;整个 H T M L 文档的流式布局 HTML 元素分为 { 块级元素 &#xff1a;默认占满一行 行内元素 &#xff1a;在行内最…...

【JavaScript】什么是JavaScript?以及常见的概念

作为 JavaScript 初学者&#xff0c;想要更好地理解这门语言&#xff0c;需要从核心概念、实践练习和项目实战三个方面入手。下面是详细的学习路线和方法&#xff0c;帮助你系统性地掌握 JavaScript。 一、理解 JavaScript 的核心概念 JavaScript 是一门动态、弱类型的编程语言…...

为什么要将PDF转换为CSV?CSV是Excel吗?

在企业和数据管理的日常工作中&#xff0c;PDF文件和CSV文件承担着各自的任务。PDF通常用于传输和展示静态的文档&#xff0c;而CSV因其简洁、易操作的特性&#xff0c;广泛应用于数据存储和交换。如果需要从PDF中提取、分析或处理数据&#xff0c;转换为CSV格式可能是一个高效…...

P1038 [NOIP 2003 提高组] 神经网络

题目描述 在兰兰的模型中&#xff0c;神经网络就是一张有向图&#xff0c;图中的节点称为神经元&#xff0c;而且两个神经元之间至多有一条边相连&#xff0c;下图是一个神经元的例子&#xff1a; 神经元&#xff08;编号为 i&#xff09; 图中&#xff0c;X1​∼X3​ 是信息…...

TypeScript 类型断言的适用场景及代码示例

类型断言的适用场景及代码示例 适用场景 类型断言就像是你很确定某个东西是什么&#xff0c;然后直接告诉 TypeScript 编译器“相信我&#xff0c;它就是这个类型”。以下是几种常见的适用场景&#xff1a; 从 any 类型恢复具体类型&#xff1a;当你使用 any 类型时&#xf…...

Docker 容器

Docker 是一种开源的容器化平台&#xff0c;可以让开发人员将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后部署到任何支持 Docker 的环境中。Docker 的基本概念包括以下几点&#xff1a; 1. **容器(Container)**&#xff1a;容器是一个独立、轻量级的运行环境…...

Spark(3)vi的基本使用

一.打开与创建文件 二.三种模式 三. 光标操作 四.复制粘贴 一.打开与创建文件 它是linux的内置命令&#xff0c;所以还是以命令的方式来运行。 命令的格式是&#xff1a;Vi /路径/文件名。要注意如下两种情况&#xff1a; 1.如果这个文件不存在&#xff0c;此时就是新建文…...

element-ui的组件使用

1. 安装 Element UI&#xff08;在文件夹最上面输入cmd进入dos窗口&#xff0c;然后输入安装指令 npm install element-ui --save&#xff09; 2.在main.js文件全局引入(main.js文件负责 全局注册 )&#xff0c;在该文件注册的所有组件在其他文件都能直接调用&#xff0c;一般…...

Starlink卫星动力学系统仿真建模第九讲-滑模(SMC)控制算法原理简介及卫星控制应用

滑模控制&#xff08;Sliding Mode Control&#xff09;算法详解 一、基本原理 滑模控制&#xff08;Sliding Mode Control, SMC&#xff09;是一种变结构控制方法&#xff0c;通过设计一个滑模面&#xff08;Sliding Surface&#xff09;&#xff0c;迫使系统状态在有限时间内…...

《深度剖析Linux 系统 Shell 核心用法与原理_666》

1. 管道符的用法 查找当前目录下所有txt文件并统计行数 # 使用管道符将ls命令的结果传递给wc命令进行行数统计 ls *.txt | wc -l 在/etc目录下查找包含"network"的文件并统计数量 # 使用find命令查找文件&#xff0c;并通过grep查找包含特定字符串的文件&#xf…...

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…...

超详细介绍map(multimap)的使用

map类的介绍 map的声明如下&#xff0c;Key是map底层关键字的类型&#xff0c;T是map底层value的类型。set默认要求Key支持小于比较&#xff0c;如果不支持或者需要的情况下我们可以自行传入仿函数&#xff0c;map底层存储数据的内存是从空间申请来的。一般情况下&#xff0c;我…...

原生稀疏注意力NSA 替换transformer 注意力进行文本生成训练

DeepSeek-R1这篇文章&#xff0c;聚焦范围更加小&#xff0c;R1的重点在于提出了一个文本生成的训练策略和蒸馏策略&#xff0c;这篇文章则是提出了一个注意力机制NSA&#xff0c;主要解决的是长序列做注意力时带来的效率问题。通篇文章看下来&#xff0c;它的实际意义可能比较…...

读书笔记:《百年孤独》

《百年孤独》加西亚.马尔克斯 著 范晔 译 读出了阅读障碍。 记不得书中的人&#xff0c;记不得书中的事&#xff0c;更不知何为孤独&#xff0c;只记得马孔多&#xff0c;这个陌生的地方&#xff0c;还有那个猪尾巴婴儿。 百年&#xff1a;故事跨越了百年 孤独&#…...

TVS管学习记录

文章目录 前言一、TVS是什么&#xff1f;二、TVS关键参数1.反向截至电压**实际意义** 2.钳位电压**定义与作用****选择依据** **4. 实际应用示例****场景&#xff1a;通信端口的ESD保护** 3.反向截至电压和钳位电压的关联和区别**. 小结** 三、实际应用电路举例总结 前言 TVS管…...

网络安全系统概述 网络安全系统分为几级

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 5级 网络信息系统安全等级保护分为五级&#xff0c;一级防护水平最低&#xff0c;最高等保为五级。分别是用户自主保护级、系统审计保护级、安全标记保护级、结构…...

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我站在人潮中央&#xff0c;思考这日日重复的生活。我突然想&#xff0c…...

Apache Flink架构深度解析:任务调度、算子数据同步与TaskSlot资源管理机制

Apache Flink是一个分布式流处理框架&#xff0c;其核心架构设计围绕有界与无界数据流的统一处理能力展开。以下从任务分配、算子数据同步、TaskManager与JobManager的TaskSlot机制三个维度展开详细分析&#xff1a; 一、任务分配机制 Flink的任务分配基于并行度&#xff08;P…...

Linux 常见命令全解析

一、文件操作命令 1. ls ls是列出目录内容的命令。简单输入ls&#xff0c;会展示当前目录下的文件和目录列表。想要获取更详细的信息&#xff0c;比如文件权限、所有者、大小、修改时间等&#xff0c;使用ls -l。若要显示所有文件&#xff0c;包括以点&#xff08;.&#xff…...

k8s集群部署

集群结构 角色IPmaster192.168.35.135node1192.168.35.136node2192.168.35.137 部署 #需在三台主机上操作 //关闭防火墙 [rootmaster ~]# systemctl disable --now firewalld//关闭selinux [rootmaster ~]# sed -i s/enforcing/disabled/ /etc/selinux/config//关闭swap分区…...

springboot005学生心理咨询评估系统(源码+数据库+文档)

源码地址&#xff1a;学生心理咨询评估系统 文章目录 1.项目简介2.部分数据库结构与测试用例3.系统功能结构4.包含的文件列表&#xff08;含论文&#xff09;后台运行截图 1.项目简介 ​ 使用旧方法对学生心理咨询评估信息进行系统化管理已经不再让人们信赖了&#xff0c;把现…...

LeetCode37

LeetCode37 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结...

2025年02月24日Github流行趋势

项目名称&#xff1a;mastra 项目地址url&#xff1a;https://github.com/mastra-ai/mastra 项目语言&#xff1a;TypeScript 历史star数&#xff1a;5735 今日star数&#xff1a;1140 项目维护者&#xff1a;adeleke5140, abhiaiyer91, TheIsrael1, adeniyii, Joshuafolorunsh…...

Spring Boot 中的日志管理

一、日志框架选择 1. 主流框架对比 框架特点Spring Boot 默认支持Logback- 性能优异&#xff0c;Spring Boot 默认集成- 支持自动热更新配置文件✅ (默认)Log4j2- 异步日志性能更强- 支持插件扩展- 防范漏洞能力更好❌ (需手动配置)JUL (JDK自带)- 无需额外依赖- 功能简单&am…...

后端之JPA(EntityGraph+JsonView)

不同表之间的级联操作或者说关联查询是很多业务场景都会用到的。 对于这种需求最朴素的方法自然是手动写关联表&#xff0c;然后对被关联的表也是手动插入数据。但是手写容易最后写成一堆shit代码&#xff0c;而且修改起来也是非常麻烦的。 学会使用现成的工具还是非常有利的…...

点击修改按钮图片显示有问题

问题可能出在表单数据的初始化上。在 ave-form.vue 中&#xff0c;我们需要处理一下从后端返回的图片数据&#xff0c;因为它们可能是 JSON 字符串格式。 vue:src/views/tools/fake-strategy/components/ave-form.vue// ... existing code ...Watch(value)watchValue(v: any) …...

Linux第一个小程序-进度条 (linux第七课)

目录 知识补充: 随机数的使用,先用srand(time(NULL))种时间种子 函数指针 模拟进度条代码 知识补充: \r只是回车 \r\n是回车加换行,其中\n带有强制换行的功能 如果只使用\r ,还需要刷新缓冲区(fflush(stdout)) %2d是左对齐 %-2d是右对齐 %.1lf是小数点后保留一位 随机数的使…...

iOS指纹归因详解

iOS 指纹归因&#xff08;Fingerprint Attribution&#xff09;详解 1. 指纹归因的概念 指纹归因&#xff08;Fingerprint Attribution&#xff09;是一种无 ID 归因&#xff08;ID-less Attribution&#xff09;技术&#xff0c;主要用于广告跟踪、用户识别或流量分析。它基…...