spring boot项目配置使用minion

一. Minio概述

Minio是一款开源的高性能对象存储服务,兼容Amazon S3 API,适用于私有云、混合云及边缘计算场景。它采用分布式架构设计,支持水平扩展,提供数据加密、版本控制、生命周期管理等企业级功能,适用于存储非结构化数据(如图片、视频、日志等)。

核心特性

  • S3兼容:完全兼容Amazon S3 API,现有S3工具可直接对接。
  • 高性能:基于Golang编写,优化了并发和吞吐量,适合高负载场景。
  • 分布式部署:支持Erasure Code(纠删码)技术,实现数据冗余和恢复。
  • 轻量级:单二进制文件部署,资源占用低,适合容器化(如Docker、Kubernetes)。
  • 安全性:支持TLS加密、客户端加密、IAM策略及审计日志。

部署模式

  • 单机模式:快速部署用于测试或开发,无冗余能力。
  • 分布式模式:多节点集群部署,数据自动分片和冗余,保障高可用。

使用场景

  • 大数据存储:与Hadoop、Spark等大数据工具集成。
  • 备份与归档:结合生命周期策略自动管理数据。
  • 云原生应用:为Kubernetes提供持久化存储解决方案。
  • CDN源站:存储静态资源并通过API快速分发。

技术优势

  • 纠删码技术:数据自动分片并分散存储,即使部分节点故障仍可恢复,冗余度可配置。
  • 加密与安全:支持客户端加密(SSE-C)、服务器端加密(SSE-S3)和传输加密(TLS)。
  • 监控与日志:集成Prometheus、Grafana等工具,提供实时监控和日志分析能力。

快速安装示例(Linux)

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data

访问http://localhost:9000并使用默认凭据(用户名minioadmin,密码minioadmin)登录管理界面。

与其他存储方案对比

  • vs Ceph:Minio更轻量,配置简单,适合中小规模;Ceph功能更全但复杂度高。
  • vs NAS:Minio通过对象存储接口提供更高扩展性,NAS适合文件级访问。

Minio适合需要简单、高性能S3兼容存储的场景,开源版本满足多数需求,企业版提供额外支持和服务。

二. 添加依赖

		<dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.5.10</version>
        </dependency>

三. application.yml配置

minio:
  endpoint: http://localhost:9000
  access-key: ${
   MINIO_ACCESS_KEY:root}
  secret-key: ${
   MINIO_SECRET_KEY:123456}
  bucket-name: fusion
  connect-timeout: 3000
  socket-timeout: 15000

四. 创建MinioConfig文件

/**
 * MinIO存储服务配置类
 * 

* 该类用于配置MinIO客户端连接参数,并在初始化时自动创建存储桶(如果不存在) * 并设置存储桶的公共读访问策略。配置属性通过`minio`前缀绑定到应用配置。 * * 示例配置: * minio.endpoint=http://localhost:9000 * minio.accessKey=minioadmin * minio.secretKey=minioadmin * minio.bucketName=my-bucket */ package org.example.common.config; import io.minio.BucketExistsArgs; import io.minio.MakeBucketArgs; import io.minio.MinioClient; import io.minio.SetBucketPolicyArgs; import jakarta.annotation.PostConstruct; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @Data @Configuration @ConfigurationProperties

你可能感兴趣的:(spring boot项目配置使用minion)