Minio学习

news2024/11/19 9:35:38

目录

一、概述

1、Minio介绍

2、Minio的基础概念

3、Minio安装

3.1、Docker容器中安装

3.2、Windows运行安装

4、分布式Minio优势

数据保护

高可用

一致性

5、Minio客户端使用

6、SpringBoot工程引入Minio


一、概述

Minio分布式文件系统。

Minio是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

Minio是一个非常轻量的服务,可以很简单的和其他应用的结合,类似NodeJS,Redis或者MySQL。

1、Minio介绍

Minio官网

Minio中文官网

Minio是全球领先的对象存储先锋,目前在全世界有数百万的用户。

高性能:在标准硬件上,读/写速度上高达183GB/秒和171GB/秒,拥有更高的吞吐量和更低的延迟。

可扩展性:为对象存储带来了简单的缩放模型,通过添加更多集群可以扩展空间。

简单:极简主义是Minio的指导性设计原则,即可在几分钟内安装和配置。

与Amazon S3兼容:亚马逊云的S3 API(接口协议)是在全球范围内达到共识的对象存储的协议,是全世界内大家都认可的标准。

数据安全:使用纠删码来保护数据免受硬件故障和无声数据损坏。

纠删码:是一种恢复丢失和损坏数据的数学算法,Minio默认采用Reed-Solomon code将数据拆分成N/2个数据块和N/2个奇偶校验块。这就意味着如果是16块盘,一个对象会被分成8个数据块、8个奇偶校验块,你可以丢失任意8块盘(不管其是存放的数据块还是校验块),你仍可以从剩下的盘中的数据进行恢复。

N/2+1块磁盘才能上传数据。

分布式MinIO快速入门

2、Minio的基础概念

Object:存储到Minio的基础对象,如文件、字节流、Anything...

Bucket:用来存储Object的逻辑空间。每个Bucket之间的数据是相互隔离的。对于客户端而言,就相当于一个存放文件的顶层文件夹。

Drive:存储数据的磁盘,在Minio启动时,以参数的方式传入。Minio中所有的对象数据都会存储在Drive里。

Set:即一组Drive的集合,分布式部署根据集群规模自动划分一个或多个Set,每个Set中的Drive分布在不同的位置,一个对象存储在一个Set上。

        一个对象存储在一个Set上。

        一个集群划分为多个Set。

        一个Set包含的Drive数量是固定的,默认由系统根据集群规模自动计算得出。

        一个Set中的Drive尽可能分布在不同的节点上。

3、Minio安装

3.1、Docker容器中安装

Docker 中安装Minio示例

3.2、Windows运行安装

要在 64 位 Windows 主机上运行 MinIO,请从以下 URL 下载 MinIO 可执行文件:

http://dl.minio.org.cn/server/minio/release/windows-amd64/minio.exe

启动:D:\minio\data\为存储数据位置

minio.exe server D:\minio\data\

编写.bat文件启动

minio.exe server D:\minio\data\

 浏览器访问:http://192.168.0.171:9000/

用户名/密码:minioadmin/minioadmin

4、分布式Minio优势

数据保护

分布式Minio采用纠删码来防范多个节点宕机和位衰减bit rot。

分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

高可用

单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。

例如:一个16节点的Minio集群,每个节点16块硬盘,就算8台服务器宕机,这个集群仍然是可读的,不过你需要9台服务器才能写数据。

一致性

Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。

分布式Minio里的节点时间差不能超过3秒,你可以使用NTP来保证时间一致。

5、Minio客户端使用

MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)。

ls       列出文件和文件夹。
mb       创建一个存储桶或一个文件夹。
cat      显示文件和对象内容。
pipe     将一个STDIN重定向到一个对象或者文件或者STDOUT。
share    生成用于共享的URL。
cp       拷贝文件和对象。
mirror   给存储桶和文件夹做镜像。
find     基于参数查找文件。
diff     对两个文件夹或者存储桶比较差异。
rm       删除文件和对象。
events   管理对象通知。
watch    监听文件和对象的事件。
policy   管理访问策略。
session  为cp命令管理保存的会话。
config   管理mc配置文件。
update   检查软件更新。
version  输出版本信息。

Minio客户端使用

下载mc.exe客户端等进行命令使用。

Minio admin使用

MinIO Client(mc)提供了“ admin”子命令来对您的MinIO部署执行管理任务。

service     服务重启并停止所有MinIO服务器
update      更新更新所有MinIO服务器
info        信息显示MinIO服务器信息
user        用户管理用户
group       小组管理小组
policy      MinIO服务器中定义的策略管理策略
config      配置管理MinIO服务器配置
heal        修复MinIO服务器上的磁盘,存储桶和对象
profile     概要文件生成概要文件数据以进行调试
top         顶部提供MinIO的顶部统计信息
trace       跟踪显示MinIO服务器的http跟踪
console     控制台显示MinIO服务器的控制台日志
prometheus  Prometheus管理Prometheus配置
kms         kms执行KMS管理操作

6、SpringBoot工程引入Minio

MinIO Java Client SDK提供简单的API来访问任何与Amazon S3兼容的对象存储服务。

官方Demo      找到examples下面都是demo

pom依赖

<dependency>
	<groupId>io.minio</groupId>
	<artifactId>minio</artifactId>
	<version>8.3.0</version>
</dependency>
<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>	
	<version>2.8.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>

上传下载例子minio在windows上上传和读取成功!

import java.io.InputStream;
import java.util.List;

import org.apache.commons.io.IOUtils;

import io.minio.MinioClient;

public class MinioDemo {
	
	static String endpoint = "http://192.168.0.171:9000";
	
	static String accessKey="minioadmin";
	
	static String secretKey="minioadmin";

	public static void main(String[] args) throws Exception {
		//获取Minio的客户端对象
		MinioClient client =new MinioClient(endpoint,accessKey,secretKey);
		//先判断Bucket是否存在
		String bucketName ="test666";
		boolean exists = client.bucketExists(bucketName);
		if (exists) {
			//存在Bucket
			System.out.println("Bucket already exists.");
		}else {
			client.makeBucket(bucketName);
		}
		
		//上传文件
		client.putObject(bucketName, "/test1.txt", "D:\\test1.txt", null);
		System.out.println("文件上传成功");
		
		//文件下载
		InputStream in = client.getObject(bucketName, "/test1.txt");
		List<String> list = IOUtils.readLines(in,"UTF-8");
		list.stream().forEach(o->System.out.println(o));
		
	}

}

天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62822.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

客服回复差评的话术模板

当店铺出现差评时&#xff0c;客服首先要去与客户进行沟通&#xff0c;帮助客户解决问题&#xff0c;尽可能去消除差评&#xff1b;如果客户不愿意沟通&#xff0c;无法消除差评的情况下&#xff0c;客服也要及时对差评进行回复。 前言 对于开网店的店主来说&#xff0c;客户…

如何搭建一个自己的音乐服务器

点赞再看&#xff0c;动力无限。 微信搜「 程序猿阿朗 」。 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录&#xff0c;有很多知识点和系列文章。 最近发现&#xff0c;经常用的网易云音乐&#xff0c;有很多歌曲下架了&#xff0c;能听的越来越少了&#xff1b;…

【电气安全】安科瑞电气火灾监控系统在江苏某大学中设计与应用

摘要&#xff1a;本文以安科瑞电气火灾系统在江苏大学科技园的应用为案例&#xff0c;介绍电气火灾系统实现对现场设备的系统集成&#xff0c;数据的采集、传输以及存储&#xff0c;验证了该系统的功能及实用性。 关键词&#xff1a;江苏大学科技园&#xff1b;电气火灾系统&a…

【数据结构】Map和Set

目录 一、JDK中的Map和Set 1.1Map接口的使用 &#xff08;1&#xff09;元素的添加操作 &#xff08;2&#xff09;在Map集合中查询特定的值 &#xff08;3&#xff09;删除Map中指定的value和key &#xff08;4&#xff09;Map集合的遍历 1.2Set集合的应用 集合java.u…

RK3588平台开发系列讲解(Thermal篇)Thermal的设备树配置

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、Tsadc 配置二、cooling device配置2.1、CPU配置2.2、 GPU配置三、 Thermal Zone配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍Thermal的设备树配置方法。 一、Tsadc 配…

【GD32F427开发板试用】+demo的正确打开方式(一)

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;四季的温度 这个系列用于汇总我在使用GD32时遇到的问题&#xff0c;为大家排坑 MDK环境准备 打开https://aijishu.com/a/1060000000356925&a…

搜索与图论-树与图的深度优先遍历

文章目录一、树与图的深度优先遍历1. 构造2. 遍历3. 具体实现详见例题——树的重心二、树与图的深度优先遍历例题——树的重心具体实现1. 样例演示2. 实现思路3. 代码注解4. 实现代码DFS 深度优先遍历详见搜索与图论-DFS 一、树与图的深度优先遍历 数与图的深度优先遍历与 DF…

JDK8新特性超详细总结

JDK8新特性 ​ Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台 课程内容的介绍 了解Java发展史Lambda表达式…

DNS轮询是什么

参考文章&#xff1a;DNS轮询是什么&#xff1f; DNS轮询简单来说就是一个域名解析多个IP地址。那么为什么会有DNS轮询呢&#xff1f;一般DNS轮询用于访问量较大的网站&#xff0c;由于一台服务器无法承载&#xff0c;所以准备了多台服务器组成集群做负载均衡&#xff0c;这些服…

使用Mac编写Thirft的HelloWorld项目

前言 最近在hive新增Thirft接口&#xff0c;于是学习了一下Thirft的使用 步骤 准备工作 brew install thrift安装thrift创建maven项目并引入依赖 <dependency><groupId>org.apache.thrift</groupId><artifactId>libthrift</artifactId><v…

led护眼灯哪种品牌质量好?2022什么牌子的护眼灯最好推荐

现在绝大部分台灯都是使用led灯珠作为发光源&#xff0c;这不仅仅是led灯珠本身的优秀&#xff0c;也更是市场的选择&#xff0c;无论是光线照度、显色性&#xff0c;还是亮度、色温的可调控性&#xff0c;led护眼灯都有非常明显的优势&#xff0c;对保护眼睛起到非常大的作用。…

微信小程序开发平台

微信小程序开发平台顾名思义就是一个可以开发小程序的地方。 微信小程序开发平台&#xff1a;【电脑浏览器输入3M.FKW.COM了解详情】 适合群体&#xff1a;企业、机构、个体户 微信小程序开发平台方式&#xff1a; 自建——可以通过套用小程序模板&#xff0c;利用拖拽式小…

ADSP-21489的开发详解:VDSP+自己编程写代码开发(3-可能出现的故障和解决办法)

如果连接失败怎么办&#xff1f;软件报错&#xff0c;无法进入上图所示的状态&#xff1f;不用担心&#xff0c;ADI 的 Visual DSP软件提供了自带的 TEST 功能&#xff0c;能通过软件分析&#xff0c;得出故障原因&#xff0c;并排除。 发现 ADI 仿真器连不上开发板&#xff0c…

浏览器执行过程与V8引擎执行原理(无惧面试)

前言&#xff1a;一文带你理解&#xff0c;浏览器渲染过程以及V8引擎背后执行原理&#xff0c;让你知道页面在浏览器上显示出来背后都做了什么事情。这将是一个js高级系列第一篇&#xff0c;这将会为之后的闭包&#xff0c;作用域链&#xff0c;原型等让人迷惑的知识打基础。感…

使用IDEA 进行 安卓开发

使用IDEA 进行 安卓开发 前言 以前使用Eclipse 进行 Android 开发&#xff0c;感觉对新手来说实在是太不友好了&#xff0c;又是Android SDK&#xff0c;有是配 gradle 等一系列的东西&#xff0c;对与新手而言&#xff0c;总是遗漏。或者版本对不上&#xff0c;一堆问题&…

.net core 读取配置的几种方式

json配置文件示例 {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"Account": {"username": "zhangsan","password":&quo…

arXiv2022-12 | FLIP:Scaling Language-Image Pre-training via Masking

凯明团队新作。 论文地址&#xff1a;https://arxiv.org/abs/2212.00794 一、问题 Even using high-end infrastructures, the wall-clock training time is still a major bottleneck hindering explorations on scaling vision-language learning. 即使使用高端的基础设施…

人工智能:声纹相关基础概念介绍

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

移动端开发——APP端上H5容器化建设

1. 背景 当前移动端和前端的结合愈加紧密&#xff0c;尤其是在偏重活动运营的电商App中&#xff0c;受制于App版本审核&#xff0c;具备研发成本低、可灵活发布等特点的H5页面受到青睐&#xff0c;使其在APP端上承接了越来越多的业务。然而H5页面本身也存在一些亟需解决的问题…

nginx配置错误三例漏洞-

路径&#xff1a;nginx/insecure-configuration 运行成功后&#xff0c;Nginx将会监听8080/8081/8082三个端口&#xff0c;分别对应三种漏洞。 8080&#xff1a;CRLF注入漏洞 8081&#xff1a; 目录穿越漏洞 8082&#xff1a; add_header被覆盖 $uri导致的CRLF注入漏洞 Nginx…