一、docker环境下部署

1  Minio 介绍
MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非 常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/ 虚拟机镜像等,而 一个对象文件可以是任意大小,从几kb 到最大 5T不等,MinIO 是一个非常轻量的服务 , 可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL 。
2 Minio优点
(1)部署简单 : 一个 single 二进制文件即是一切,还可支持各种平台。
(2)minio 支持海量存储,可按 zone 扩展 ( 原 zone 不受任何影响 ) ,支持单个对象最大 5TB;
(3)兼容 Amazon S3 接口,充分考虑开发人员的需求和体验 ;
(4)图灵学院 低冗余且磁盘损坏高容忍,标准且最高的数据冗余系数为 2( 即存储一个 1M 的数据对象,实际占用
(5)磁盘空间为 2M) 。但在任意 n/2 块 disk 损坏的情况下依然可以读出数据 (n 为一个纠删码集合 (Erasure Coding Set)中的 disk 数量 ) 。并且这种损坏恢复是基于单个对象的,而不是基于整个存储卷的。
(6)读写性能优异
3 docker环境下minio的安装
docker run -d -p 9000:9000 -p 50000:50000 --name minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server --console-address ":50000" /data

4 纠删码模式
4.1  介绍

Minio 使用纠删码 erasure code 和校验和 checksum 来保护数据免受硬件故障和无声数据损坏。 即便 您丢失一半数量(N/2 )的硬盘,您仍然可以恢复数据。

4.2  实现

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

一、SpringBoot整合

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>

2  yml

minio:endpoint: http://localhost:81accesskey: minioadminsecretKey: minioadmin

3  下载

public String downloadFile(String fileUrl, String saveUrl) {String fileName = "";HttpURLConnection httpUrl = null;byte[] buf = new byte[1024];int size = 0;try {URL url = new URL(fileUrl);httpUrl = (HttpURLConnection) url.openConnection();httpUrl.connect();BufferedInputStream bis = new BufferedInputStream(httpUrl.getInputStream());File file = new File(saveUrl);if (!file.exists()) {file.mkdirs();}String arrUrl[] = fileUrl.split("/");fileName = arrUrl[arrUrl.length - 1];FileOutputStream fos = new FileOutputStream(saveUrl + "/" + fileName);while ((size = bis.read(buf)) != -1) {fos.write(buf, 0, size);}fos.close();bis.close();} catch (IOException e) {e.printStackTrace();;}httpUrl.disconnect();return fileName;}

4   上传

 public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {try {MinioClient minioClient =MinioClient.builder().endpoint("http://192.168.18.128:9000").credentials("admin", "12345678").build();String bucketName = "userimage";boolean exists =minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if (!exists) {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}minioClient.uploadObject(UploadObjectArgs.builder().bucket(bucketName).object("小红.jpg").filename("小红.jpg").build());System.out.println("上传文件成功");} catch (MinioException e) {System.out.println("Error occurred: " + e);System.out.println("HTTP trace: " + e.httpTrace());}}

致谢:感谢达内支持

基于Minio实现分布式云存储相关推荐

  1. 区块链分布式云存储项目盘点

    随着人类发展,产生了无数PB的数据,存储它的位置和方式的问题变得越来越重要.从内部部署存储迁移到云存储一直是过去十年的主题,而且这一趋势正在加速.但是现目前云存储都是由科技巨头主导到这个市场,这些公司 ...

  2. 什么是分布式_什么是分布式存储?分布式云存储有什么优势?

    点击蓝色字关注 [悦好创富圈]! 一个出类拔萃的公众号 关注的人都发大财了 什么是分布式存储 分布式存储是数据存储技术.它通过网络使用企业中每台机器的磁盘空间.这些分散的存储资源构成了虚拟存储设备,数 ...

  3. 【重识云原生】第三章云存储3.5节——商用分布式云存储方案

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  4. 基于hadoop构建对象存储系统_基于Hadoop企业私有云存储平台的构建

    量数据存储.数据规模易扩展性的要求. 关键词: 企业级用户:私有云:云存储: Hadoop :云计算:海量数据: HBase :元数据 中图分类号: TP 391 文献标志码: A Establish ...

  5. 基于FastDfs的分布式文件存储系统设计

    前言 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服务 ...

  6. 基于云存储网关的Veeam备份归档上云方案

    前言 面对数据可靠性和合规性要求的不断增长,只备份一份数据已经不能满足用户对于数据可靠性的需求.传统备份厂商的异地备份方案是将用户生产环境里的数据备份至不同机柜或者异地机房来保护数据,规避单机房存在的 ...

  7. 5G 来袭,数据暴增,新一代云存储平台如何承载?

    随着5G.大数据.人工智能等新兴技术的发展,数据进一步大幅增长.IDC预计,到2025年,全球将有175 ZettaBytes的数据总量.与此同时,存储的可扩展性.容量等问题逐渐凸显,需要大规模的数据 ...

  8. Storj:区块链在云存储上的应用

    写作背景 本人即将开始三年的计算机硕士学涯,目前研究方向是区块链与云存储的结合.在学习中了解到Storj Labs这家公司已经推出了比较完整的.以区块链为核心技术的分布式云存储服务:Storj.在对其 ...

  9. 论文:云存储区块链技术:系统文献综述

    Blockchain Technology for Cloud Storage: A Systematic Literature Review 本文链接:https://download.csdn.n ...

最新文章

  1. python中的文件父路径怎么表达_如何在Python中访问父目录
  2. MATLAB实战系列(二)- 如何使用YALMIP检验数学模型的正确性?
  3. 【图像处理opencv】_图像锐化
  4. java容器类4:Queue深入解读
  5. liferay-ui:search-container 用法
  6. .9-浅析webpack源码之NodeEnvironmentPlugin模块总览
  7. vue基础4——自定义指令
  8. 理解运算符优先级(简单易懂,建议收藏)
  9. 整理vim格式回车变成空两格
  10. 细说业务逻辑(前篇)
  11. 发票上的计算机字体,发票代码和发票号码是什么字体
  12. wifi分析仪怎么看哪个信道好_专业的WiFi检测工具有哪些?如何解决wifi信号不好?...
  13. 数控车宏程序c语言,a类宏程序什么意思?a类宏程序编程入门
  14. 阎王爷:别总写代码,这130个网站比涨工资都重要!(建议收藏)
  15. 摆地摊赚钱方案全攻略
  16. uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了...
  17. 【Python爬虫】你还在纠结选择哪个爬虫库嘛,全都拿来吧你
  18. 分享一下最近数学竞赛的获奖经历
  19. adonis命令serve
  20. java控制扬声器发声_Linux 控制扬声器发声

热门文章

  1. AndroidStudio中使用Git发布与更新,同步到本地(github关联)
  2. banq修复_banq的U盘如何?相比闪迪还有三星哪个最好?都是USB3.0
  3. Pyinstaller 打包exe 报错 failed to execute script XXX的一种解决方案
  4. python爬虫 环境配置
  5. C语言和汇编实现STM32F103点亮LED
  6. UiPath直播课程
  7. 层净高怎么算_房屋的层高和净高怎么算?你知道相关标准吗
  8. 浅谈双层玻璃的功效matlab代码,双层玻璃的功效-数学模型实验报告.doc
  9. 电子计算机使用的逻辑元件是电子管,智慧职教: ( ??)电子计算机使用的主要逻辑元件是电子管。...
  10. 五一回家的票买没?来看看“12306” 是如何支撑百万 QPS 的?