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

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

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

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

2. 上传文件

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

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

  • 新建一个存储桶 test

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

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

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

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

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

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

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

下一篇我们将要学习在 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

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

此时你就可以大胆手动删除 /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 入门指南相关推荐

  1. 架构方案(16) 常见分布式文件存储介绍、选型比较、以及架构设计

    数据正成为世界上最有价值的资源,分布式文件存储是应对数据爆炸的最好解决方案,那就会涉及到分布式文件存储方案.选型.架构设计等. 分布式文件存储的来源 在这个数据爆炸的时代,产生的数据量不断地在攀升,从 ...

  2. 常见分布式文件存储介绍、选型比较、以及架构设计

    2019独角兽企业重金招聘Python工程师标准>>> 分布式文件存储的来源 在这个数据爆炸的时代,产生的数据量不断地在攀升,从GB,TB,PB,ZB.挖掘其中数据的价值也是企业在不 ...

  3. 常见分布式文件存储介绍、选型比较、架构设计

    数据正成为世界上最有价值的资源,分布式文件存储是应对数据爆炸的最好解决方案,那就会涉及到分布式文件存储方案.选型.架构设计等. 分布式文件存储的来源 在这个数据爆炸的时代,产生的数据量不断地在攀升,从 ...

  4. 分布式与微服务系列(三)、SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者、消费者)

    SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者.消费者) 一.软件架构和微服务需求 1.1.微服务需求 1.2.框架选择 1.3.集群分布(下面为此图实 ...

  5. 分布式与微服务系列 - Dubbo

    一.前言 本内容仅用于个人学习笔记,如有侵扰,联系删除 视频教程:尚硅谷Dubbo教程(dubbo经典之作) 二.基础知识 1.分布式基础理论 1.1.什么是分布式系统? <分布式系统原理与范型 ...

  6. 全栈开发之MinIO分布式文件存储集群

    背景 你们项目中关于上传的文件是存储在什么地方的? 我们的项目关于文件存储经过了这么一个演进过程: 静态资源目录:当时前后端不分离,直接在项目的静态资源目录,每次部署前,先备份资源目录,否则就会丢失掉 ...

  7. K8S部署分布式文件存储minio两种部署方式

    一. 分布式文件存储系统有很多,比如hadoop的HDFS和FastDFS.今天部署minio文件系统. 二. 分布式文件存储minio GitHub官网和minio官网都有详细的文档 MinIO下载 ...

  8. 微服务系列(五):事件驱动的数据管理

    编者的话|本文来自 Nginx 官方博客,是「Chris Richardson 微服务」系列的第五篇文章.第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点:第二和第三篇描述了微服务架构模块 ...

  9. Mysql保存是事件驱动吗_【CHRIS RICHARDSON 微服务系列】事件驱动的数据管理-5

    编者的话 |本文来自 Nginx 官方博客,是「Chris Richardson 微服务」系列的第五篇文章.第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点:第二和第三篇描述了微服务架构模 ...

最新文章

  1. DeepLearning:环境配置(cuda+cudnn)
  2. 拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树?
  3. react字符串转html函数,react 字符串强转为html标签
  4. Oracle的一些资料
  5. 中原消费金融借了就借不了吗?
  6. 图灵机概念的javascript演示
  7. Redash本地开发环境搭建
  8. slam 图像处理 matlab,MATLAB R2020a图像处理和计算机视觉新进展
  9. Axure rp8元件库载入失败怎么解决
  10. 嵌入式软件设计(freertos使用)
  11. 计算机与英语教学的论文开题报告,英语教学法毕业论文开题报告范文
  12. 2022年金三银四该如何规划,才能轻松拿到offer
  13. 天蝎项目整机柜服务器技术规范v1.01,第九章 天蝎项目整机柜服务器技术规范v1.01.pdf...
  14. shell 脚本学习
  15. 2012年中国最佳医院排行榜
  16. 电磁场与电磁波(6)——静电场的边值问题:唯一性定理
  17. 【Git】Git 的基本使用
  18. 使用的tk集成mybatis,报No MyBatis mapper was found in的警告解决方案
  19. 前端开发中常用的英语单词短语总结
  20. Activity 边边角角

热门文章

  1. 满江红java_满江红3-侠骨柔情
  2. 用USB-TTL给stm32f10x烧录问题解决方案
  3. 级数arctan(1/√n)
  4. 使用WINDOWS自带文件进行映射
  5. Mac系统 / 更新系统后「意外退出」及「崩溃闪退」问题修复方法
  6. ISO Standards
  7. 屏幕录制软件怎么用?录制电脑屏幕的技巧
  8. 条码打印软件制作服饰吊牌标签教程
  9. Mac新手使用技巧——系统偏好设置
  10. 抖音html啥意思,抖音参与话题什么意思,抖音话题什么意思