MinIO-无旋钮可旋转,无按钮可按
“我需要的越少,感觉就越好。” 〜查尔斯·布科夫斯基
我们常常忘记从过去的成功项目中学习。如果您和我一样大,您将记住一个名为qmail的项目。由于其极简的设计(qmail安全保证),没有人会戳它的安全性。系统管理员也喜欢它的简单性。今天,我看到极简主义在软件设计中比以往任何时候都更加重要。
与处理可变元数据和查询语言的分布式数据库相比,理论上的对象存储应该简单得多。它只需要一组简单的API即可处理不可变数据的Blob。亚马逊,谷歌和Facebook比企业存储和操作系统供应商更了解这一点。他们可能会存储自拍照和猫录像,但数量可能高达数万亿。可伸缩性始于降低。
MinIO从极简主义的角度看待存储。
固执己见的设计
随着时间的流逝,软件自然会膨胀。像“ ls”这样的简单工具具有如此之多的功能,以至于我一生都不会使用。即使是专业用户,也常常难以调整NFS和RAID选项。存储是一个地方,我会在早期采用“自动驾驶”软件。现代云基础架构无需光纤通道和存储阵列认证。
使用MinIO,服务器和客户端几乎都没有任何选择。它做一件事,只有一种方法。例如,MinIO客户端'mc'具有ls,cp,sync,diff之类的命令,这些命令与操作系统提供的工具相似。这些命令对于所有主要操作系统上的云(兼容S3)和本地文件系统都是透明的。它们产生彩色的控制台输出,可读的数字甚至进度条。它可以移动大量数据,并使用校验和透明地验证它们。但是,它很简单,没有附带手册页。
用Golang写
MinIO服务器和客户端均使用golang编写。Golang继承了Google开发基础架构软件的方式。从源格式到构建工具,Go作为一种语言都承担着这些责任。没有人的意见,也没有混乱。
Golang与Python一样简单,但与Java或C ++一样强大。它的通道和goroutine使得编写可伸缩的高性能服务器变得非常容易。Go for MinIO的最显着优势是单个静态二进制输出,可轻松复制到任何计算机并运行。不再需要RPM和Deb依赖地狱或root需求。
不变数据
MinIO旨在存储不可变数据。照片,视频,文档,机器日志一经生成就不会更改。没有理由实现丰富的POSIX API和NFS / iSCSI协议。MinIO故意避免API删除,重命名,追加或覆盖。所有应用程序需要的是通过HTTP的Get,Put和List API。操作是原子的。他们要么成功要么不成功。
兼容S3
毫无疑问,Amazon S3云存储是对象API的黄金标准。MinIO服务器,客户端和库已经支持一部分Amazon S3 v4 API。实际上,客户端实用程序和库的设计具有“ Amazon First”优先级。故意避免使用IAM策略管理,删除/重命名和对象版本控制等功能。
简单许可证
我个人更喜欢GNU GPLv3强烈捍卫软件自由。我为MinIO选择了Apache许可证v2,同时牢记应用程序开发人员的要求。Apache许可证足够简单,但是比修改后的BSD或MIT许可证提供更好的保护。它也在FSF批准的免费软件许可列表中。
状态
MinIO处于开发的早期阶段。MinIO客户端“ mc”和库(Go,Java和Node.js)已准备好供公众使用。
快乐黑客!
-ab @abperiasamy
Minio社区:http://slack.minio.org.cn/questions