MinIO 简介

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

为什么需要对象存储?

在互联网越来越普及的当下,各种 APP 如雨后春笋。用户通过 APP 可以进行远程办公、查看新闻咨询、理财、社交、教育等等。在上面这些场景中,避免不了需要查看图片、音频、视频。那么问题来了?这些图片、视频、音频是怎样的存储的呢?

传统开发中,我们可以使用 tomcat 类似的服务器进行映射目录实现资源访问(在 server.xml 文件中进行配置)。例如:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">	
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />		   
         <!-- 增加的静态资源映射配置 -->
  	<Context path="/static" docBase="D:\static" reloadable="true" crossContext="true"></Context>
</Host>

也可以使用 nginx 对静态资源进行代理。例如:

server {
    listen       8080;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html; # 代理 html 目录
        index  index.html index.htm;
    }
}

随着 APP 用户量的增加,服务器需要存储海量的图片、音频和视频。此时,再使用上面方式就显得不足了。当然,如果资金充足,可以购买成熟对象存储服务产品,例如:阿里云对象存储OSS(Object Storage Service)。如果不想购买存储服务产品,则可以自己搭建对象存储服务,MinIO 就是你的选择。

MinIO 功能特性

兼容 Amazon S3

MinIO 使用 Amazon S3 v2 / v4 API。可以使用 MinIO SDK,MinIO Client,AWS SDK 和 AWS CLI 访问 MinIO 服务器。

数据保护

MinIO 使用 Minio Erasure Code 来防止硬件故障。也许会损坏一半以上的 driver,但是仍然可以从中恢复。

高度可用

MinIO 服务器可以容忍分布式设置中高达(N / 2)-1 节点故障。而且,您可以配置 MinIO 服务器在 MinIO 与任意 Amazon S3 兼容服务器之间存储数据。

Lambda 计算

MinIO 服务器通过其兼容 AWS SNS / SQS 的事件通知服务触发 Lambda 功能。支持的目标是消息队列,如 Kafka,NATS,AMQP,MQTT,Webhooks 以及 Elasticsearch,Redis,Postgres 和 MySQL 等数据库。

加密和防篡改

MinIO 为加密数据提供了机密性,完整性和真实性保证,而且性能开销微乎其微。使用 AES-256-GCM,ChaCha20-Poly1305 和 AES-CBC 支持服务器端和客户端加密。加密的对象使用 AEAD 服务器端加密进行防篡改。

可对接后端存储

除了 MinIO 自己的文件系统,还支持 DAS、 JBODs、NAS、Google 云存储和 Azure Blob 存储。

sdk 支持

基于 MinIO 轻量的特点,它得到类似 Java、Python 或 Go 等语言的 sdk 支持

MinIO 优点和缺点

优点

  • 学习成本低,安装运维简单,开箱即用

  • 目前 MinIO 论坛推广给力,有问必答

  • 提供 Java 客户端、JS 客户端

缺点

  • 社区不够成熟,业界参考资料较少

  • 不支持动态增加节点,MinIO 创始人的设计理念就是动态增加节点太复杂,后续会采用其它方案来支持扩容

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号