golang,go,博客,开源,编程

golang每日一库之MinIO

Updated on with 0 views and 0 comments

MinIO 是一个高性能的分布式对象存储系统,兼容 Amazon S3 接口,适用于私有云、公有云和混合云环境。

项目地址:
🔗 GitHub:https://github.com/minio/minio


简介

MinIO 是用 Go 语言编写 的开源对象存储服务,它遵循 S3 API 协议,因此可以与大量现有工具无缝对接。

MinIO 的目标是成为云原生时代的 “现代对象存储解决方案”,广泛应用于 Kubernetes、数据湖、AI/ML 存储等场景。


特点

1. S3 兼容性

MinIO 完全兼容 Amazon S3 的 API,意味着你可以用 AWS 的 SDK 或工具(如 s3cmd, rclone, awscli)直接对接 MinIO,无需修改业务逻辑。

2. 高性能

  • 读写速度非常快,甚至比 AWS S3 更快。
  • 采用 SIMD、零拷贝、并发 IO 等优化手段。

3. 分布式部署

支持横向扩展,节点越多,容量越大、性能越高。

  • 支持 erasure code 分布式容错
  • 支持跨节点纠删码(Erasure Code)
  • 多副本冗余、自动修复损坏数据

4. 部署简单

  • 单个二进制文件即可部署
  • 非常适合本地测试、CI/CD、边缘设备

5. Kubernetes 原生支持

官方提供 Operator,可用于自动部署和管理 MinIO 集群,支持持久卷、服务发现等。

6. 安全性

  • 默认使用 HTTPS
  • 支持加密-at-rest 和加密-in-transit
  • 集成身份认证、策略控制(IAM)

使用🌰

1. 本地快速启动

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

默认会在本地的 9000 端口启动服务,管理 UI 在 http://localhost:9001

默认账号密码:

export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin

2. 使用 mc(MinIO Client)

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
./mc alias set local http://localhost:9000 minioadmin minioadmin
./mc mb local/mybucket
./mc cp test.jpg local/mybucket

示例

使用 AWS SDK for Go 访问 MinIO:

import (
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
)

func main() {
    sess := session.Must(session.NewSession(&aws.Config{
        Region:           aws.String("us-east-1"),
        Endpoint:         aws.String("http://localhost:9000"),
        S3ForcePathStyle: aws.Bool(true),
        Credentials:      credentials.NewStaticCredentials("minioadmin", "minioadmin", ""),
    }))

    svc := s3.New(sess)

    _, err := svc.CreateBucket(&s3.CreateBucketInput{
        Bucket: aws.String("test-bucket"),
    })
    if err != nil {
        panic(err)
    }
}

相关组件

名称说明
minio服务端组件,主程序
mc官方客户端工具,命令行风格类似 awscli
minio-operatorKubernetes Operator,自动部署和管理集群

最后

MinIO 是一个 轻量、快速、云原生 的对象存储系统,S3 兼容性极强,非常适合需要私有部署对象存储的企业和开发者。尤其适用于 分布式部署、云原生环境、边缘计算 等场景。


标题:golang每日一库之MinIO
作者:mooncakeee
地址:http://blog.dd95828.com/articles/2025/06/17/1750122103344.html
联系:scotttu@163.com