一、分布式文件系统应用场景

互联网海量非结构化数据的存储需求·

  • 电商网站:海量商品图片
  • 视频网站:海量视频文件网盘:海量文件
  • 社交网站:海量图片

二、minio的基础概念

2.1 基础感念

  • Object
    存储到minio的基本对象,如文件、字节流、anything
  • Bucket
    用来存储Object的逻辑空间,每个Bucket的数据是独立的。相当于客户端的顶层文件夹。
  • Drive
    即存储数据的磁盘,在MinlO启动时,以参数的方式传入。Minio中所有的对象数据都会存储在Drive里。
  • Set
  • 即一组Drive 的集合,分布式部署根据集群规模自动划分一个或多个Set,每个Set中的Drive分布在不同位置。一个对象存储在一个Set上。(For example: {1…64} is divided into 4 sets each of size 16.)

2.2 纠删码EC

MinlO使用纠删码机制来保证高可靠性,使用highwayhash来处理数据损坏( Bit Rot Protection )。关于纠删码简单来说就是可以通过数学计算,把丢失的数据进行还原,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。

三、使用docker运行部署

3.1 docker命令启动minio(单个磁盘,无纠删码)(9000端口为api控制,50000为控制台端口)账号密码都为admin

docker run --name minio -d \-p 9000:9000 \-p 50000:50000 \-v /mnt/minio/data:/data \-e MINIO_ROOT_USER="admin" \-e MINIO_ROOT_PASSWORD="123456789" \minio/minio:latest server --console-address ":50000" /data

3.2 纠删码模式启动minio

docker run --name minio -d \-p 9000:9000 \-p 50000:50000 \-v /mnt/minio/data1:/data1 \-v /mnt/minio/data2:/data2 \-v /mnt/minio/data3:/data3 \-v /mnt/minio/data4:/data4 \-v /mnt/minio/data5:/data5 \-v /mnt/minio/data6:/data6 \-v /mnt/minio/data7:/data7 \-v /mnt/minio/data8:/data8\-e MINIO_ROOT_USER="admin" \-e MINIO_ROOT_PASSWORD="123456789" \minio/minio:latest server /data{1...8} --console-address ":50000"

8个文件存在于八个driver,4个为存放校验码,4个存放数据,可以通过纠错码进行恢复。

3.3 分布式集群部署minio

  • 数据保护
    分布式Minio采用 纠删码来防范多个节点宕机和位衰减 bit rot 。分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。
  • 高可用
    单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的
    数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。
    例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不
    过你需要9台服務器才能写数据。
  • 一致性
    Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。

集群部署完成可以通过nginx负载均衡,让集群有一个统一的入口。

3.4 下载minio client 以及使用

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
./mc --help
mv mc /usr/local/sbin/# 查询mc host配置,配置到.mc/cinfig.json中
mc config host ls
# 添加minio服务
mc config host add minio-server http://192.168.229.130:9000 admin 123456789
# 删除host
mc config host remove minio-server

3.5 mc命令的使用

mc admin的使用

策略权限

Action为操作行为,Resource为资源

四、java操作minio

4.1 引入依赖

<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.0</version>
</dependency>
<dependency><groupId>me.tongfei</groupId><artifactId>progressbar</artifactId><version>0.5.3</version>
</dependency>
<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.8.1</version>
</dependency>

4.2 编写上传代码

  //连接minioMinioClient minioClient = MinioClient.builder().endpoint("http:192.168.229.130:9000").credentials("admin", "123456789").build();//创建bucketString bucketName = "test";boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if(!isExist){minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}minioClient.uploadObject(UploadObjectArgs.builder().bucket(bucketName).object("77.jpg").filename("C:\\Users\\86158\\Pictures\\QQ图片20210829121954.jpg")//本地磁盘路径.build());

4.3 编写下载代码

   minioClient.downloadObject(DownloadObjectArgs.builder().bucket(bucketName).object("77.jpg").filename("77.jpg").build());

Minio分布式存储入门(使用新版本)相关推荐

  1. 分布式MinIO快速入门 ​​​​​​​

    分布式MinIO快速入门 分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务.由于硬盘分布在不同的节点上,分布式Minio避免了单点故障. 分布式Minio有什么好处? 在大 ...

  2. minio分布式存储系列(一)__介绍及开箱使用

    minio分布式存储系列(一)__介绍及开箱使用 简介: Minio 是一个基于Go语言编写的对象存储服务.它兼容亚马逊S3云存储服务接口,可以理解为是S3的开源版本(亚马逊S3:专为从任意位置存储和 ...

  3. minio 文件预览_MinIO Docs | MinIO快速入门指南

    MinIO Quickstart Guide MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例 ...

  4. gluster分布式存储 入门篇

    目录 简介 安装 将存储主机加入受信任主机池 设置一个GlusterFS卷 测试GlusterFS 卷 GlusterFS卷 FUSE Translators(未完成) 简介 GlusterFS是一个 ...

  5. MiniO对象存储服务 磁盘缓存快速入门 ​​​​​​​

    MiniO对象存储服务 磁盘缓存快速入门 这里的磁盘缓存功能是指使用缓存磁盘来存储租户常用的一些数据.例如,假设你通过gateway azure设置访问一个对象并下载下来进行缓存,那接下来的请求都会直 ...

  6. MinIO客户端快速入门指南

    MinIO客户端快速入门指南 MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案.它支持文件系统和兼容Amazon S3的云存储服 ...

  7. MiniO 磁盘缓存快速入门

    MiniO 磁盘缓存快速入门 这里的磁盘缓存功能是指使用缓存磁盘来存储租户常用的一些数据.例如,假设你通过gateway azure设置访问一个对象并下载下来进行缓存,那接下来的请求都会直接访问缓存磁 ...

  8. MinIO Docker 快速入门 ​​​​​​​

    MinIO Docker 快速入门 前提条件 您的机器已经安装docker. 从 这里下载相关软件. 在Docker中运行MinIO单点模式. MinIO 需要一个持久卷来存储配置和应用数据.不过, ...

  9. 分布式文件存储系统MinIO笔记

    文章目录 一.MinIO介绍 1.文件系统应用场景 2.MinIO介绍 3.MinIO优点 4.MinIO的基础概念 5.纠删码EC(Erasure Code) 6.存储形式 7.存储方案 二.Min ...

最新文章

  1. Google和Facebook为什么不用Docker?
  2. C++11 正则表达式——实例1
  3. 说实话,电脑存储空间大了之后对于你的能力有很大的要求
  4. VS2008下编的程序生成的EXE 在没有安装VS2008的计算机上能运行
  5. 编写jmeter测试用例_JMeter 编写接口测试用例遇到的问题及解决
  6. Unity 开发和配置
  7. C#LeetCode刷题之#521-最长特殊序列 Ⅰ​​​​​​​(Longest Uncommon Subsequence I)
  8. Servlet、Struts2以及SpringMvc中的线程安全
  9. IMU-Allan方差分析
  10. Javaweb项目中文乱码总结
  11. mysql无法连接locahost_完美解决MySQL通过localhost无法连接数据库的问题
  12. 生物医药和医疗卫生行业的关系 生物医药行业定义分析
  13. 独家对话阿里副总裁李飞飞:数据库的进化之路
  14. 云服务器基本信息的公网ip在哪,如何查看云服务器的公网ip地址
  15. 2018n年全国计算机考试,2018ncre全国计算机等级考试报名系统
  16. 一枚笑脸 emoji,估值 20 亿美元!这个开源项目有点强...
  17. 解决Eclipse4K屏下工具栏过小
  18. 逆商助你回顾2019年迎面2020年
  19. 用批处理文件替换或删除文件名中的字符
  20. 永磁同步电机矢量控制中的双闭环是什么意思_伺服系统组成、概述与控制原理(三环控制)...

热门文章

  1. 计算机二级使用多级符号对章名,计算机二级考试题目分析
  2. Python控制台英汉-汉英电子词典(代码分享)
  3. halcon脚本-电池正反检测【附源码】
  4. 美联致美, 专属定制之美,让美丽不可复制
  5. 网络功能虚拟化:NV和NFV的区别
  6. qt android 浏览器下载安装,[原创]六款安卓平台浏览器耗电量实测
  7. @Target、@Retenrion注解
  8. 如何解决redis的并发竞争key问题?附面试答案
  9. 符天气预报软件测试,卫星云图天气预报软件
  10. tomcat集群部署