首页 > 其他分享 >微服务系列:分布式文件存储之 MinIO 入门指南

微服务系列:分布式文件存储之 MinIO 入门指南

时间:2022-12-21 23:38:47浏览次数:55  
标签:Minio 文件 存储 minio minioData MinIO 分布式 入门


经过前面多篇文章我们学习了服务网关、服务调用、服务注册、服务监控等微服务系列的的相关知识,今天开始我们来学习一下分布式文件的相关知识。

首先我们从学习 ​​MinIO​​​ 对象存储服务开始,后面还会学习下其他的分布式文件存储服务比如 ​​FastDFS​​ 等。

话不多说,开始今天的学习。

基本介绍

1. 什么是对象存储

关于对象存储,我们可以看下 ​​阿里云OSS​​ 的解释。

对象存储服务OSS(Object Storage Service)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。

对象存储最大的优势就在于它可以存储大容量的非结构化数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。对于大多数的企业来说,这可以说是最为理想的存储媒介了。

2. 什么是分布式文件

分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。

分布式文件系统是面对互联网的需求而产生,互联网时代对海量数据如何存储?靠简单的增加硬盘的个数已经满足不了我们的要求,因为硬盘传输速度有限但是数据在急剧增长,另外我们还需要做好数据备份、数据安全等。

3. 什么是 ​​MinIO​

​MinIO​​ 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。基于 Apache License v2.0 开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL 等。

在中国:阿里巴巴、腾讯、百度、中国联通、华为、中国移动等等9000多家企业也都在使用 ​​MinIO​​ 产品。

官网:​​www.minio.org.cn/​​

4. ​​MinIO​​ 特点

  • 高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读、35GG/s的写速率
  • 可扩容:不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心
  • 云原生:容器化、基于K8S的编排、多租户支持
  • Amazon S3兼容:Minio使用Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器。
  • 可对接后端存储: 除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储。
  • SDK支持: 基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持
  • Lambda计算: Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等数据库。
  • 有操作页面
  • 功能简单: 这一设计原则让MinIO不容易出错、更快启动
  • 支持纠删码:MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据

上手使用

本篇文章将演示如何搭建一个 ​​MinIO​​ 对象存储服务,演示直接使用我本地的 Windows 系统。

1. 下载启动

下载地址:​​https://min.io/download​

直接下载 windows 版的 ​​minio.exe​

我们再创建一个文件夹 ​​D:\minioData​​ 作为文件数据存储的地方,

然后在 ​​minio.exe​​ 文件夹下使用 cmd 命令启动

minio.exe server D:/minioData

微服务系列:分布式文件存储之 MinIO 入门指南_文件存储

此处启动也可以这样

minio.exe server D:/minioData/data0 D:/minioData/data1 D:/minioData/data2 http://192.168.1.201/D:/minioData
  • 这里面指定了4个分区,具体可以根据你的实际情况进行配置。可以四台主机各一个数据存放位置,也可以两台主机各两个存放位置。我这边是三个存放位置在一台主机上,第四个在另一台主机上。格式是 ip + 存放位置

启动成功后浏览器访问地址 http://localhost:9000

微服务系列:分布式文件存储之 MinIO 入门指南_分布式_02

默认的用户名和密码在启动的时候就告诉你啦 ​​minioadmin/minioadmin​

2. 上传文件

登录成功之后我们进入主页面

微服务系列:分布式文件存储之 MinIO 入门指南_MinIO_03

通过使用 MinIO 的网页端即可完成文件的上传下载功能,下面我们来演示下。

  • 新建一个存储桶 test

微服务系列:分布式文件存储之 MinIO 入门指南_微服务_04

  • 创建好之后我们来给这个存储桶中上传张图片

微服务系列:分布式文件存储之 MinIO 入门指南_spring cloud_05

  • 上传成功后,点击 share,取到一个地址

微服务系列:分布式文件存储之 MinIO 入门指南_微服务_06

微服务系列:分布式文件存储之 MinIO 入门指南_spring cloud_07

  • 浏览器访问这个地址,可以访问到这张图片

微服务系列:分布式文件存储之 MinIO 入门指南_MinIO_08

我们刚刚访问的这个地址只是一个临时地址,要想获取一个永久的访问路径,需要修改存储桶的访问策略,我们可以点击存储桶右上角的设置按钮来修改访问策略

微服务系列:分布式文件存储之 MinIO 入门指南_MinIO_09

​Prefix​​​ 填 ​​*​​​,​​Access​​ 有三种,一种只读、一种只写、一种可读可写,这里我们选择只读即可

保存之后我们就只需要通过拷贝链接中的前一串路径即可永久访问该文件 http://192.168.0.111:9000/test/wallhaven-dp2okl.jpg

微服务系列:分布式文件存储之 MinIO 入门指南_微服务_10

是不是感觉搭建起来超级简单。

下一篇我们将要学习在 Java 项目中如何集成 ​​MinIO​​。

纠删码(erasure code) 模式

在上面的 ​​MinIO​​ 特点中有一条是支持纠删码,这里我们就对这个特点来验证一下。

1. 概念

MinIO 使用纠删码和校验和等特性保护数据免受硬件故障和静默数据损坏。使用最高级别的冗余,使用者可最多丢失多达一半(N/2)的驱动器,仍可以自动恢复数据。

纠删码是一种用来重建丢失或损坏数据的数学算法。MinIO 使用 Reed-Solomon 码将需要存储的对象切分为可变数据块和奇偶校验块。例如,在由 12 个驱动器构成的存储架构中,对象分片范围可以是 6 个数据块、6 个奇偶校验块到 10 个数据块、2 个奇偶校验块。

2. 验证

这次我们这样来启动 MinIO

minio.exe server D:/minioData/data0 D:/minioData/data1 D:/minioData/data2 D:/minioData/data3

微服务系列:分布式文件存储之 MinIO 入门指南_微服务_11

在控制台上传文件后,你会发现上传目录下的文件是文件夹的形式

微服务系列:分布式文件存储之 MinIO 入门指南_分布式_12

此时你就可以大胆手动删除 /minioData 目录下的 dataN(N 从0到3) 目录,只要删除的驱动(目录)个数小于 N/2,都可以保证文件被恢复(即:你删除了目录之后,过一会也会自动创建,无需人为干预)。

文章参考:​​minio原理和使用​

PS:都看到这里了,点个赞吧,彦祖

补充

1、 ​​Linux​​​ 下启动 ​​minio​

./minio server /data1 &

2、修改 ​​minio​​ 默认账号密码

直接修改环境变量的配置文件 ​​vim /etc/profile​

export MINIO_ACCESS_KEY=accesskey(自行设置) 
export MINIO_SECRET_KEY=secretkey(自行设置)


标签:Minio,文件,存储,minio,minioData,MinIO,分布式,入门
From: https://blog.51cto.com/u_15915810/5960197

相关文章

  • 使用zabbix proxy实现主动代理跨网段分布式监控
    1、zabbixproxy简述  zabbix作为一个分布式监控系统,是支持代理(proxy)收集zabbixagent的监控数据然后由zabbixproxy再把数据发给zabbixserver,也就是zabbixproxy可以代......
  • Netty入门
    1.简介异步,基于事件驱动的网络应用框架TCP/IP=>JDK原生=>NIO===>Netty《netty实战》《netty权威指南》2.应用基于网络的高并发或者网络的通信RPC框架远程服务调用,......
  • 微服务系列:分布式事务 Spring Cloud Alibaba 之 Seata 实战篇
    ​​微服务系列:分布式事务SpringCloudAlibaba之Seata入门篇​​在上一篇入门篇中,我们已经对​​Seata​​​有了大致的了解,并搭建好了​​seata-server​​​服务......
  • 分布式系统接口,如何避免表单的重复提交?
    关于怎么实现承载更多用户量的系统,一直是我重点关注的一个技术方向。改造架构提高承载力,通常来讲分为两个大方向,互相配合实现。硬件架构改进,主要是使用阿里云这种多组件的......
  • 分布式数据库各回滚恢复工具学习(binlog2sql,MyFlash,my2sql ...)
    1、背景:DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此......
  • 普通人或者门外汉该怎样入门编程?
    继我关注很久一位编程的大牛发布了他的那篇文章——<探究:普通人都是怎么入门编程>https://www.cnblogs.com/liuyangfirst/p/16991386.html我先去再相关评论里看到了有人说......
  • 仿文:普通人或者门外汉该怎样入门编程?
    继我关注很久一位编程的大牛发布了他的那篇文章——<探究:普通人都是怎么入门编程>https://www.cnblogs.com/liuyangfirst/p/16991386.html我先去再相关评论里看到了有......
  • Day24.1.数组入门
    Day24.1.数组入门1.定义数组是相同数据的有序集合每个数据为一个数组元素,每个数组元素可以通过一个下标来访问他们2.数组的声明创建声明: //方法一 dataTyp......
  • 使用MiniO Client(mc)连接AWS S3
    客户端名称:minioclientminio中文官网地址:http://docs.minio.org.cn/docs/master/minio-client-complete-guideminio英文官网地址:https://min.io/docs/minio/linux/index.ht......
  • ceph分布式存储安装(ceph-deploy)
    ceph学习ceph简介和特性ceph时一个多版本存储系统,它把每一个待管理的数据量切分为一到多个固定带下的对象数据,并以其为原子单元完成数据存取。对象数据的地处存储服务......