基于minio的对象存储使用指南

官方文档

是什么

  • MinIO 是全球领先的对象存储先锋,目前在全世界有数百万的用户. 在标准硬件上,读/写速度上高达183 GB / 秒 和 171 GB / 秒。
  • 对象存储可以充当主存储层,以处理Spark、Presto、TensorFlow、H2O.ai等各种复杂工作负载以及成为Hadoop HDFS的替代品。
  • MinIO用作云原生应用程序的主要存储,与传统对象存储相比,云原生应用程序需要更高的吞吐量和更低的延迟。而这些都是MinIO能够达成的性能指标
  • 简单可扩展
  • 与aws的s3兼容,可实现无缝衔接

安装

  • 其他方式安装请参考官方文档
  • docker安装minio
docker run -p 9000:9000 --name minio1 \
  -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
  -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
  -v /mnt/data:/data \
  -v /mnt/config:/root/.minio \
  minio/minio server /data

对象存储原理

  • MinIO的编码方式,将一个对象编码成若干个数据块和校验块,我们简称为Erasure Code码,这个是编码的类型,这种编码的类型,还需要算法来实现,minio 采用的是 Reed-Solomon算法
  • 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。
  • Minio默认采用Reed-Solomon code将数据拆分成N/2个数据块和N/2个奇偶校验块
  • 16块盘,一个对象会被分成8个数据块、8个奇偶校验块,你可以丢失任意8块盘(不管其是存放的数据块还是校验块),你仍可以从剩下的盘中的数据进行恢复
    在这里插入图片描述
  • 解释
    • B是一个n x (m + n)的矩阵
    • D是一个我们真实的一个数据块举证
    • 图一
      • 存储的时候按n+m存储,也就是冗余量是m
    • 图二
      • 此时数据D1,D4,C2数据丢失
    • 图三
      • 根据矩阵运算可知,原始数据矩阵D可有Survivors矩阵*B`的可逆矩阵求得
  • 综上所诉
    • 数据丢失最大容忍为m
    • 数据冗余量为m
    • 一般情况m = n,所以就是2倍冗余

存储桶通知指南

  • 存储桶(Bucket)如果发生改变,比如上传对象和删除对象,可以使用存储桶事件通知机制进行监控,并通过以下方式发布出去
  • AMQP,MQTT,Elasticsearch,Redis,NATS,PostgreSQL,MySQL,Apache Kafka,Webhooks
  • 配置一个es通知案例
    • MinIO Server的配置文件默认路径是 ~/.minio/config.json
    • ES配置信息是在notify这个节点下的elasticsearch节点下
    "elasticsearch": {
        "1": {
            "enable": true,
            "format": "namespace",
            "url": "http://127.0.0.1:9200",
            "index": "minio_events"
        }
    },
    
    • 重启server
    • 添加通知事件
    mc mb myminio/images
    mc event add  myminio/images arn:minio:sqs:us-east-1:1:elasticsearch --suffix .jpg
    
    • 验证
    $ mc cp myphoto.jpg myminio/images # 上传一张图片到存储桶
    $ curl  "http://localhost:9200/minio_events/_search?pretty=true" # 访问es以查看事件通知
    
    

客户端安装

brew install minio/stable/mc
mc --help

sdk指南

# 引入MinIO包。
from minio import Minio
from minio.error import (ResponseError, BucketAlreadyOwnedByYou,
                         BucketAlreadyExists)

# 使用endpoint、access key和secret key来初始化minioClient对象。
minioClient = Minio('play.min.io',
                    access_key='Q3AM3UQ867SPQQA43P2F',
                    secret_key='zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
                    secure=True)

# 调用make_bucket来创建一个存储桶。
try:
       minioClient.make_bucket("maylogs", location="us-east-1")
except BucketAlreadyOwnedByYou as err:
       pass
except BucketAlreadyExists as err:
       pass
except ResponseError as err:
       raise
else:
        try:
               minioClient.fput_object('maylogs', 'pumaserver_debug.log', '/tmp/pumaserver_debug.log')
        except ResponseError as err:
               print(err)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值