开源存储服务MinIO的入门介绍(0)

前言

MinIO 是一款非常热门的开源对象存储服务器,能够完美兼容亚马逊的 S3 协议, 对 K8s 也能够进行非常友好的支持,专为 AI 等云原生工作负载而设计。包括构建高性能的云原生数据机器学习、大数据分析、海量存储的基础架构等方面,MinIO 都可以提供数据工作负载。有数据统计,在*,很多企业,比如阿里巴巴、腾讯、百度、中国联通、华为、中国移动等9000多家企业也都在使用 MinIO 产品。

MinIO 简单介绍

MinIO 如此受欢迎,肯定是有原因的。那么,具体的原因都有哪些呢?接下来我们就来看一看。

  1. 高性能。MinIO 是全球领先的对象存储服务先锋,目前在全世界有数百万的用户。在标准硬件上,读/写速度上高达183 GB / 秒 和 171 GB / 秒。
  2. 可扩展性。MinIO 借鉴了 Web 缩放器,为对象存储带来了简单的缩放模型。在部署 MinIO 时, 扩展从单个群集开始,
  3. 云原生支持。MinIO 是在过去4年的时间内从0开始打造的一款软件,符合一切原生云计算的架构和构建过程,并且包含最新的云计算的全新的技术和概念。
  4. 纯开源。MinIO 基于Apache V2 license 100% 开放源代码。 这就意味着 MinIO 的客户能够自动的、无限制、*免费使用和集成 MinIO、*的创新和创造、*的去修改、*的再次发行新的版本和软件。
  5. 兼容 S3 存储。亚马逊云的 S3 API(接口协议)是在全球范围内达到共识的对象存储的协议,是全世界内大家都认可的标准。
  6. 简单。极简主义是 MinIO 的指导性设计原则。简单性减少了出错的机会,提高了正常运行时间,提供了可靠性,同时简单性又是性能的基础。本人在自己的项目中就使用到 MinIO,用于存储文件对象,在使用方面,基本上和阿里云的 OSS、腾讯云的 COS 差不太多,上手非常快。

API 介绍

操作存储桶

存储桶可以理解成是用来分离存储数据的数据容器,关于存储桶的API接口主要有下面几个:

  1. MakeBucket,创建存储桶
  2. ListBuckets,查询当前存储桶列表
  3. BucketExists,判断存储桶是否存在
  4. RemoveBucket,删除存储桶
  5. ListObjects,列举存储桶中所有的对象
  6. ListObjectsV2,列举存储桶中所有的对象(V2版本)
  7. ListIncompleteUploads,查询存储桶中未完整上传的对象列表

存储桶策略

存储桶的相关策略,具体接口如下:

  1. SetBucketPolicy,设置存储桶或者对象的访问权限,其中权限类型有 None、只读、只写、可读可写。
  2. GetBucketPolicy,查询存储桶或者对象的访问权限。

操作文件对象

文件存储对象的操作行为,具体接口如下:

  1. FPutObject,把指定文件上传到一个对象中。当对象小于 128MB 时,会调用一次 PUT 请求进行上传。当大于 128MB 时,会根据文件的实际大小自动拆分成 128MB 一块或更大一些的块儿进行上传。需要注意是对象的最大大小是 5TB。
  2. FGetObject,下载文件并将文件保存到本地文件系统。
  3. FPutObjectWithContext,和 FPutObject 接口操作是一样的,不过允许取消上传请求。
  4. FGetObjectWithContext,和 FGetObject 接口操作是一样的,不过允许取消下载请求。

操作对象

一般存储对象的操作行为,具体接口如下:

  1. GetObject,下载对象
  2. PutObject,上传对象
  3. GetObjectWithContext,和 GetObject 接口操作是一样的,不过允许取消下载请求。
  4. PutObjectWithContext,和 PutObject 接口操作是一样的,不过允许取消上传请求。
  5. StatObject,获取对象的数据信息。
  6. CopyObject,对象拷贝
  7. RemoveObject,删除对象
  8. RemoveObjects,删除对象集合
  9. RemoveIncompleteUpload,删除未完整上传的对象。

结尾

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



作者简介:????大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,????公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!????

上一篇:一文揭秘单线程的Redis为什么这么快?


下一篇:Node.js 实现存储服务的下载功能【包含前后端代码】