打造现代数据基础架构:MinIO对象存储完全指南

news2025/4/16 13:42:42

目录

  • 打造现代数据基础架构:MinIO对象存储完全指南
    • 1. MinIO介绍
      • 1.1 什么是对象存储?
      • 1.2 MinIO核心特点
      • 1.3 MinIO使用场景
    • 2. MinIO部署方案对比
      • 2.1 单节点单驱动器(SNSD/Standalone)
      • 2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)
      • 2.3 多节点多驱动器(MNMD/Distributed)
      • 2.4 部署方案对比表
    • 3. MinIO部署操作命令实战
      • 3.1 单节点单驱动器部署(Standalone)
        • 3.1.1 安装MinIO服务器
        • 3.1.2 启动MinIO服务器
      • 3.2 多节点多驱动器部署(Distributed)
        • 3.2.1 前提条件
        • 3.2.2 在每个节点上安装MinIO二进制文件
        • 3.2.3 创建systemd服务文件
        • 3.2.4 创建服务环境文件
        • 3.2.5 配置TLS/SSL证书
        • 3.2.6 启动MinIO服务
        • 3.2.7 访问MinIO控制台
      • 3.3 使用Docker部署MinIO
    • 4. MinIO部署后的使用
      • 4.1 基本概念
        • 4.1.1 存储桶(Bucket)
        • 4.1.2 对象(Object)
        • 4.1.3 服务器池(Server Pool)
        • 4.1.4 纠删集(Erasure Set)
      • 4.2 使用MinIO Client(mc)
      • 4.3 使用MinIO Console
      • 4.4 使用S3兼容SDK
      • 4.5 高级功能
        • 4.5.1 对象锁定和保留
        • 4.5.2 多站点复制
        • 4.5.3 生命周期管理
    • 5. MinIO运维方案
      • 5.1 监控与告警
        • 5.1.1 Prometheus集成
        • 5.1.2 InfluxDB集成
      • 5.2 日志管理
        • 5.2.1 服务器日志
        • 5.2.2 审计日志
      • 5.3 备份与恢复
        • 5.3.1 使用mc mirror进行备份
        • 5.3.2 使用MinIO桶复制进行持续备份
      • 5.4 扩展与缩减容量
        • 5.4.1 扩展服务器池
        • 5.4.2 数据重新平衡
        • 5.4.3 池停用
      • 5.5 升级MinIO部署
        • 5.5.1 使用systemctl升级
        • 5.5.2 零停机升级
      • 5.6 健康检查与故障排除
    • 6. 总结
    • 参考资料

打造现代数据基础架构:MinIO对象存储完全指南

1. MinIO介绍

MinIO是一款高性能、开源的对象存储解决方案,提供了与Amazon Web Services S3兼容的API,支持所有核心S3功能。它设计为可以部署在任何地方 - 公共云、私有云、裸机基础设施、编排环境和边缘基础设施。

1.1 什么是对象存储?

对象存储是一种数据存储架构,专为处理大量非结构化数据而设计。与传统的文件存储和块存储不同,对象存储将数据视为独立的对象,每个对象包含数据、元数据和唯一标识符,使其特别适合云环境和大规模数据存储需求。

1.2 MinIO核心特点

  • S3兼容性: 完全兼容Amazon S3 API,便于应用程序集成和迁移
  • 高性能: 针对高吞吐量和低延迟进行了优化
  • 分布式架构: 支持多节点部署,提供高可用性和水平扩展能力
  • 数据保护: 通过纠删码(Erasure Coding)提供数据冗余,无需RAID
  • 位衰减保护: 自动检测并修复静态数据损坏
  • 安全性: 提供TLS加密、身份验证和访问控制
  • 多站点复制: 支持跨站点数据同步和灾难恢复
  • 开源: 基于AGPLv3许可证,同时提供商业许可选项

1.3 MinIO使用场景

  • AI/ML数据湖: 为机器学习和人工智能工作负载提供高性能存储
  • 备份和归档: 提供可靠的长期数据存储解决方案
  • 内容分发: 存储和分发静态网站、图像和视频内容
  • 大数据分析: 为Hadoop、Spark等分析工具提供数据存储层
  • 云原生应用: 作为Kubernetes和容器化环境中的首选存储解决方案
  • 边缘计算: 在资源受限的环境中提供高性能存储

2. MinIO部署方案对比

MinIO支持多种部署拓扑,可以根据需求灵活选择。以下是三种主要部署模式的对比:

2.1 单节点单驱动器(SNSD/Standalone)

适用场景

  • 本地开发和评估
  • 可靠性要求低或无要求的环境

特点

  • 设置简单,适合快速入门
  • 无数据冗余或可靠性保证
  • 占用资源最少

局限性

  • 不适合生产环境
  • 无法提供高可用性
  • 单点故障风险高

2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)

适用场景

  • 性能、规模和容量要求较低的工作负载
  • 多驱动拓扑和故障转移行为的评估

特点

  • 驱动器级别的可靠性,可配置容忍最多1/2驱动器故障
  • 在单个节点上运行多个驱动器
  • 相比SNSD提供更好的数据保护

局限性

  • 节点级故障会导致服务不可用
  • 扩展能力有限
  • 不适合大规模生产工作负载

2.3 多节点多驱动器(MNMD/Distributed)

适用场景

  • 企业级高性能对象存储需求
  • AI/ML、分布式查询、分析和其他数据湖组件的主存储
  • 需要PB级存储容量和性能的工作负载

特点

  • 多节点/多驱动器级别的可靠性,可配置容忍最多1/2节点/驱动器故障
  • 高可用性和弹性设计
  • 水平扩展能力强
  • 提供企业级性能和可靠性

局限性

  • 部署和管理复杂度较高
  • 需要更多的硬件资源
  • 对网络要求高

2.4 部署方案对比表

在这里插入图片描述

部署选择建议:根据您的数据规模、性能需求、可⽤资源和预期增⻓来选择合适的部署⽅案。对于⽣产环境,MinIO强烈推荐使⽤多节点多驱动(MNMD)部署以确保⾼可⽤性和数据持久性。

3. MinIO部署操作命令实战

3.1 单节点单驱动器部署(Standalone)

这是最简单的MinIO部署方式,适合初始开发和评估MinIO对象存储及其S3兼容API层。

3.1.1 安装MinIO服务器

使用RPM安装(RHEL/CentOS):

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20241107005220.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm

使用DEB安装(Debian/Ubuntu):

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20241107005220.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb

使用二进制安装:

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
3.1.2 启动MinIO服务器
# 创建存储目录
mkdir ~/minio

# 启动MinIO服务器
minio server ~/minio --console-address :9001

服务器会输出类似以下内容:

API: http://192.0.2.10:9000  http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin

Console: http://192.0.2.10:9001 http://127.0.0.1:9001
RootUser: minioadmin
RootPass: minioadmin

3.2 多节点多驱动器部署(Distributed)

这是推荐用于生产环境的部署方式,提供企业级性能、可用性和可扩展性。

3.2.1 前提条件
  • 确保所有节点之间具有完整的双向网络访问
  • 使用顺序主机名或IP地址配置
  • 存储驱动器应使用XFS格式化
  • 每个节点推荐至少32GiB内存
  • 所有节点保持时间同步
3.2.2 在每个节点上安装MinIO二进制文件

按照单节点部署中的步骤在每个节点上安装MinIO。

3.2.3 创建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/local

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=-/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

# 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

创建MinIO用户和组:

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4
3.2.4 创建服务环境文件

在每个节点上创建/etc/default/minio文件:

# 设置MinIO启动时使用的主机和卷
MINIO_VOLUMES="https://minio{1...4}.example.net:9000/mnt/disk{1...4}/minio"

# 设置MinIO服务器选项
MINIO_OPTS="--console-address :9001"

# 设置根用户名
MINIO_ROOT_USER=minioadmin

# 设置根密码
MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME
3.2.5 配置TLS/SSL证书

将TLS证书放置在/home/minio-user/.minio/certs目录中。
如果使用自签名或内部CA签名的证书,将CA证书放在/home/minio-user/.minio/certs/CAs目录中。

3.2.6 启动MinIO服务

在每个节点上运行以下命令:

sudo systemctl start minio.service
sudo systemctl enable minio.service

检查服务状态:

sudo systemctl status minio.service
journalctl -f -u minio.service
3.2.7 访问MinIO控制台

通过浏览器访问https://minio1.example.com:9001打开MinIO控制台,使用MINIO_ROOT_USER和MINIO_ROOT_PASSWORD登录。

3.3 使用Docker部署MinIO

对于开发环境或快速测试,Docker是一个方便的选择:

# 拉取MinIO镜像
docker pull minio/minio

# 单节点部署
docker run -p 9000:9000 -p 9001:9001 \
  --name minio \
  -v ~/minio/data:/data \
  -e "MINIO_ROOT_USER=minioadmin" \
  -e "MINIO_ROOT_PASSWORD=minioadmin" \
  minio/minio server /data --console-address ":9001"

4. MinIO部署后的使用

4.1 基本概念

4.1.1 存储桶(Bucket)

存储桶是MinIO中存储对象的逻辑容器,类似于文件系统中的文件夹。存储桶名称在整个系统中必须唯一。

4.1.2 对象(Object)

对象是存储在MinIO中的基本实体,包括数据、元数据和唯一标识符。对象可以是任何类型的文件,如文档、图像、备份等。

4.1.3 服务器池(Server Pool)

服务器池是一组MinIO服务器节点,它们汇集各自的驱动器和资源来支持对象存储。在分布式部署中,可以有多个服务器池。

4.1.4 纠删集(Erasure Set)

纠删集是支持MinIO纠删码的一组多个驱动器。MinIO将对象分成称为分片的块,并将它们均匀分布在纠删集的每个驱动器上。

4.2 使用MinIO Client(mc)

MinIO Client是一个命令行工具,用于与MinIO服务器交互:

# 安装MinIO Client
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

# 创建别名
mc alias set myminio http://127.0.0.1:9000 minioadmin minioadmin

# 列出所有存储桶
mc ls myminio

# 创建新存储桶
mc mb myminio/mybucket

# 上传文件到存储桶
mc cp myfile.txt myminio/mybucket/

# 下载文件
mc cp myminio/mybucket/myfile.txt myfile-download.txt

# 列出存储桶中的对象
mc ls myminio/mybucket/

# 删除对象
mc rm myminio/mybucket/myfile.txt

# 删除存储桶
mc rb myminio/mybucket

4.3 使用MinIO Console

MinIO Console是一个直观的Web界面,用于管理和监控MinIO部署:

  1. 通过浏览器访问http://127.0.0.1:9001
  2. 使用root用户凭据登录
  3. 从控制台可以执行以下操作:
    • 管理存储桶和对象
    • 配置存储桶策略和通知
    • 管理用户和权限
    • 监控性能和容量
    • 查看日志和警报
    • 配置服务器设置

4.4 使用S3兼容SDK

MinIO完全兼容S3 API,因此可以使用任何S3兼容的SDK与MinIO交互。以下是使用AWS SDK for Python (Boto3)的示例:

import boto3
from botocore.client import Config

# 初始化S3客户端
s3 = boto3.client(
    's3',
    endpoint_url='http://127.0.0.1:9000',
    aws_access_key_id='minioadmin',
    aws_secret_access_key='minioadmin',
    config=Config(signature_version='s3v4'),
    region_name='us-east-1'
)

# 创建存储桶
s3.create_bucket(Bucket='mybucket')

# 上传文件
with open('myfile.txt', 'rb') as data:
    s3.upload_fileobj(data, 'mybucket', 'myfile.txt')

# 下载文件
s3.download_file('mybucket', 'myfile.txt', 'myfile-download.txt')

# 列出存储桶中的对象
response = s3.list_objects_v2(Bucket='mybucket')
for obj in response.get('Contents', []):
    print(obj['Key'])

# 删除对象
s3.delete_object(Bucket='mybucket', Key='myfile.txt')

# 删除存储桶
s3.delete_bucket(Bucket='mybucket')

4.5 高级功能

4.5.1 对象锁定和保留

MinIO支持对象锁定功能,可以防止对象被删除或覆盖:

# 启用存储桶的对象锁定功能
mc mb --with-lock myminio/locked-bucket

# 设置对象保留期限
mc retention set --default governance 1d myminio/locked-bucket
4.5.2 多站点复制

多站点复制(Site Replication)将多个MinIO部署链接在一起,并保持存储桶、对象和IAM设置在所有连接的站点之间同步:

# 添加复制配置
mc admin replicate add myminio site1 site2 site3

# 检查复制状态
mc admin replicate status myminio
4.5.3 生命周期管理

可以配置对象生命周期规则,自动删除过期的对象:

# 创建生命周期配置
cat > lifecycle.json << EOF
{
  "Rules": [
    {
      "Status": "Enabled",
      "Expiration": { "Days": 30 },
      "ID": "ExpireOldObjects",
      "Filter": { "Prefix": "logs/" }
    }
  ]
}
EOF

# 应用生命周期配置
mc ilm import myminio/mybucket < lifecycle.json

5. MinIO运维方案

5.1 监控与告警

MinIO使用Prometheus数据模型发布实时指标,可以与多种监控工具集成。

5.1.1 Prometheus集成
  1. 部署Prometheus和Grafana
  2. 配置Prometheus抓取MinIO指标
  3. 导入MinIO Grafana仪表板
# 创建Prometheus配置
cat > prometheus.yml << EOF
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: 'minio'
    metrics_path: /minio/v2/metrics/cluster
    scheme: http
    static_configs:
    - targets: ['minio:9000']
    basic_auth:
      username: minioadmin
      password: minioadmin
EOF

# 启动Prometheus
docker run -d --name prometheus \
  -p 9090:9090 \
  -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus
5.1.2 InfluxDB集成

MinIO也可以与InfluxDB集成,用于监控和告警。配置Telegraf从MinIO抓取指标并发送到InfluxDB。

5.2 日志管理

MinIO可以将服务器日志和审计日志发布到HTTP webhook。

5.2.1 服务器日志

服务器日志包含与系统控制台相同的MinIO服务器操作,用于一般监控和故障排除。

# 配置服务器日志
mc admin config set myminio logger_webhook:server endpoint=http://logger-server:8080
5.2.2 审计日志

审计日志是对MinIO部署上每个操作的更详细描述,支持需要详细操作跟踪的安全标准和法规。

# 配置审计日志
mc admin config set myminio audit_webhook:audit endpoint=http://audit-server:8080

5.3 备份与恢复

5.3.1 使用mc mirror进行备份
# 创建完整备份
mc mirror myminio/mybucket backup/mybucket

# 恢复备份
mc mirror backup/mybucket myminio/mybucket
5.3.2 使用MinIO桶复制进行持续备份

配置桶复制可以自动将对象从一个存储桶复制到另一个存储桶,甚至跨不同的MinIO部署:

# 设置桶复制
mc replicate add myminio/source-bucket dest/dest-bucket

5.4 扩展与缩减容量

5.4.1 扩展服务器池

分布式MinIO部署支持通过添加新的服务器池来扩展存储容量:

# 将新的服务器池添加到现有部署
minio server https://minio{1...4}.example.net/mnt/disk{1...4} \
             https://minio{5...8}.example.net/mnt/disk{1...4}
5.4.2 数据重新平衡

在扩展后,可以手动启动重新平衡操作,将数据在所有服务器池之间平衡分配:

# 启动重新平衡操作
mc admin rebalance start myminio
5.4.3 池停用

对于具有多个服务器池的部署,可以停用旧池并将数据迁移到部署中的新池:

# 停用服务器池
mc admin decommission start myminio https://minio{5...8}.example.net/mnt/disk{1...4}

5.5 升级MinIO部署

5.5.1 使用systemctl升级
# 下载新版本
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio.new
chmod +x /usr/local/bin/minio.new

# 备份原有二进制文件
mv /usr/local/bin/minio /usr/local/bin/minio.old

# 更新二进制文件
mv /usr/local/bin/minio.new /usr/local/bin/minio

# 重启服务
systemctl restart minio
5.5.2 零停机升级

在分布式部署中,可以通过逐个升级节点来实现零停机升级:

  1. 选择要升级的节点
  2. 停止该节点上的MinIO服务
  3. 升级MinIO二进制文件
  4. 重启MinIO服务
  5. 等待节点重新加入集群
  6. 对其他节点重复以上步骤

5.6 健康检查与故障排除

MinIO提供了健康检查API端点,用于监控节点正常运行时间和集群高可用性:

  • /minio/health/live: 检查服务器是否正在运行
  • /minio/health/ready: 检查服务器是否准备好处理请求
  • /minio/health/cluster: 检查整个集群的健康状态
# 检查MinIO服务器健康状态
curl -s http://127.0.0.1:9000/minio/health/live

# 检查集群健康状态
curl -s http://127.0.0.1:9000/minio/health/cluster

6. 总结

MinIO是一款功能强大的对象存储解决方案,提供了与Amazon S3兼容的API,可以部署在任何环境中。它的高性能、可扩展性和企业级特性使其成为现代数据基础设施的理想选择。

根据您的需求和资源,可以选择单节点单驱动器、单节点多驱动器或多节点多驱动器部署模式。生产环境应优先考虑多节点多驱动器(分布式)部署,以获得最佳的性能、可用性和可靠性。

通过本指南,您应该已经掌握了MinIO的基本概念、部署方法、使用技巧和运维策略。随着数据量的增长和应用需求的变化,可以利用MinIO的扩展和管理功能来适应这些变化。

无论是AI/ML数据湖、备份归档、内容分发还是云原生应用,MinIO都能为您提供可靠、高性能的对象存储基础设施。

参考资料

  • MinIO官方文档
  • MinIO部署指南
  • MinIO多节点部署
  • MinIO概念
  • MinIO监控

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

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

相关文章

OOM问题排查和解决

问题 java.lang.OutOfMemoryError: Java heap space 排查 排查手段 jmap命令 jmap -dump,formatb,file<file-path> <pid> 比如 jmap -dump:formatb,file./heap.hprof 44532 使用JVisualVM工具&#xff1a; JVisualVM是一个图形界面工具&#xff0c;它可以帮…

「出海匠」借助CloudPilot AI实现AWS降本60%,支撑AI电商高速增长

&#x1f50e;公司简介 「出海匠」&#xff08;chuhaijiang.com&#xff09;是「数绘星云」公司打造的社交内容电商服务平台&#xff0c;专注于为跨境生态参与者提供数据支持与智能化工作流。平台基于大数据与 AI 技术&#xff0c;帮助商家精准分析市场趋势、优化运营策略&…

【Python爬虫】简单案例介绍3

本文继续接着我的上一篇博客【Python爬虫】简单案例介绍2-CSDN博客 目录 3.3 代码开发 3.3 代码开发 编写代码的步骤&#xff1a; request请求科普中国网站地址url&#xff0c;解析得到类名为"list-block"的div标签。 for循环遍历这个div列表里的每个div&#xff0…

swift菜鸟教程6-10(运算符,条件,循环,字符串,字符)

一个朴实无华的目录 今日学习内容&#xff1a;1.Swift 运算符算术运算符比较运算符逻辑运算符位运算符赋值运算区间运算符其他运算符 2.Swift 条件语句3.Swift 循环4.Swift 字符串字符串属性 isEmpty字符串常量let 变量var字符串中插入值字符串连接字符串长度 String.count使用…

如何通过技术手段降低开发成本

通过技术手段降低开发成本的关键在于&#xff1a; 自动化工具的使用、优化开发流程、云计算资源的利用、开发技术栈的精简与创新、团队协作平台的高效管理。 其中&#xff0c;自动化工具的使用是最为有效的技术手段之一。自动化工具通过减少人工干预和重复性工作&#xff0c;大…

Ubuntu上docker、docker-compose的安装

今天来实践下Ubuntu上面安装docker跟docker-compose&#xff0c;为后面安装dify、fastgpt做准备。 一、安装docker sudo apt-get updatesudo apt-get install docker.io 然后系统输入 docker --version 出现下图即为docker安装成功。 二、安装docker-compose 我先看下系统…

OpenCV图像处理进阶教程:几何变换与频域分析全解析

OpenCV图像处理进阶教程&#xff1a;几何变换与频域分析全解析 &#x1f4da; 本文提供了OpenCV图像处理的核心操作详解&#xff0c;从基础的几何变换到高级的频域分析&#xff0c;代码示例清晰易懂&#xff0c;实用性强。完整代码已开源至GitHub&#xff1a;https://github.co…

AJAX与Axios基础

目录 一、AJAX 核心概念解析 1.1 AJAX 的核心概念 1.2 AJAX 工作原理 1.3 AJAX 局限性 二、axios 库介绍 2.1 Axios 核心特性 2.2 快速上手 2.3 核心配置项 2.4 错误处理标准方案 三、Axios 核心配置项 3.1 常用核心配置项 1. url 2. method 3. params 4. data …

[OS] vDSO + vvar(频繁调用的处理) | 存储:寄存器(高效)和栈(空间大)| ELF标准包装规范(加速程序加载)

vDSO vvar 一、社区公告板系统&#xff08;类比 vDSO vvar&#xff09; 想象你住在一个大型社区&#xff0c;管理员&#xff08;内核&#xff09;需要向居民&#xff08;用户程序&#xff09;提供实时信息&#xff08;如天气预报、社区活动时间等&#xff09;。直接让每个居…

Sentinel源码—1.使用演示和简介二

大纲 1.Sentinel流量治理框架简介 2.Sentinel源码编译及Demo演示 3.Dashboard功能介绍 4.流控规则使用演示 5.熔断规则使用演示 6.热点规则使用演示 7.授权规则使用演示 8.系统规则使用演示 9.集群流控使用演示 5.熔断规则使用演示 (1)案例说明熔断和降级 (2)Sentin…

IDEA的常用设置(更新中......)

文章目录 1. 自动导包2. 忽略大小写3. 设置项目文件编码格式4. 设置方法之间分割线5. 设置字体大小6. 设置IDEA默认不打开项目持续更新中...... 1. 自动导包 File->Settings->Editor->General>Auto Import 2. 忽略大小写 File->Editor->General->Code…

c# Kestrel

Kestrel 是 .NET 中用于 ASP.NET Core 应用程序的跨平台 Web 服务器。它是轻量级且高性能的&#xff0c;能够处理大量并发连接&#xff0c;常被用作 ASP.NET Core 应用的默认服务器。以下为你介绍 Kestrel 的基本使用和配置&#xff1a; 基本使用 创建一个简单的 ASP.NET Cor…

x86 保护模式中的GDT表是什么?

GDT&#xff08;全局描述符表&#xff0c;Global Descriptor Table&#xff09;是 x86 保护模式下用于描述不同类型内存段的一个重要数据结构。在保护模式下&#xff0c;GDT 用于管理和保护系统内存&#xff0c;它通过提供一组段描述符来定义内存的访问权限、大小、类型等属性 …

筛选条件在on和where中的区别(基于hivesql)

理解筛选条件在on和where中的区别&#xff0c;最好先理解sql的执行顺序&#xff0c;尽管实际执行时不同的物理执行引擎可能会有特定的优化&#xff0c;但是逻辑执行顺序必须遵循&#xff1a; 1&#xff09;from&#xff1a;确定数据源是什么&#xff0c;from后可以是单表&#…

vue3+vite+ts使用daisyui/tailwindcss

vite创建vue3脚手架 npm init vitelatest myVue3 – --template vue cd .\myVue3\ npm i npm run dev 安装tailwindcss/daisyui 依赖安装 npm install -D tailwindcss postcss autoprefixer daisyui npx tailwindcss init -p 这条命令将生成postcss.config.js(因为加了…

大联盟(特别版)双端互动平台完整套件分享:含多模块源码+本地部署环境

这是一套结构清晰、功能完整的互动平台组件&#xff0c;适合有开发经验的技术人员进行模块参考、结构研究或本地部署实验使用。 该平台覆盖前端展示、后端服务、移动端资源以及完整数据库&#xff0c;采用模块化架构&#xff0c;整体部署流程简单清晰&#xff0c;适合自研团队参…

Spark-SQL

Spark-SQL 概述 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块 Shark 是伯克利实验室 Spark 生态环境的组件之一&#xff0c;是基于 Hive 所开发的工具&#xff0c;它修改了内存管理、物理计划、执行三个模块&#xff0c;并使之能运行在 Spark 引擎上…

无人机气动-结构耦合技术要点与难点

一、技术要点 1. 多学科耦合建模 气动载荷与结构响应的双向耦合&#xff1a;气动力&#xff08;如升力、阻力、力矩&#xff09;导致结构变形&#xff0c;而变形改变气动外形&#xff0c;进一步影响气流分布&#xff0c;形成闭环反馈。 建模方法&#xff1a; 高精度C…

element-ui plus 中 filter-method 函数多次触发问题解决

前情提要 点进这个文章的小伙伴&#xff0c;应该都是为了解决一个需求&#xff0c;把原本的前端过滤改为后端过滤&#xff0c;但是将filter-method修改为后端取数据后&#xff0c;发现其触发了很多次。博主也是在修改表格过滤时用到了这个坑&#xff0c;本篇文章为大家解决一下…

基于【Lang Chain】构建智能问答系统的实战指南

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是Lang Chain 2、LangChain在问答系统中的核心优…