使用 Minio 的极简对象存储

还没有读者喜欢这个。
Storage units side by side

Scott Meyers。由 Opensource.com 修改。CC BY-SA 2.0。

2007 年,GlusterFS 彻底改变了大型分布式存储解决方案在组织中的实施方式——现在任何人都可以使用商用硬件创建分布式存储解决方案,用于媒体流、数据分析以及使用 GlusterFS 的其他数据密集型任务。Red Hat 于 2011 年收购了 GlusterFS。最近,GlusterFS 的创始人之一 Anand Babu Periasamy 宣布了一个新的开源项目 Minio。Minio 的设计旨在使应用程序开发人员能够构建自己的云存储。我最近采访了 Anand Babu,以了解更多关于 Minio 的信息。

Minio 路线图

Minio 是云存储的另一种实现方式。Minio 的目标是使应用程序开发人员能够构建自己的存储云,就像亚马逊、谷歌和 Facebook 开发自己的专有云存储一样。

现代应用程序必须处理大量数据。数据库专为存储和查询元数据而设计。当涉及到存储数据本身时,云存储已成为应用程序开发人员的首选。有用于文档存储的 MongoDB,用于 JavaScript 运行时的 Node.js,用于 HTML 框架的 Angular,而 Minio 旨在填补对象存储的空白。

Minio 基于客户端-服务器模型。对象存储客户端实用程序 mc 和库(Node.js、Go 和 Java)已准备好用于生产环境。Minio 与 Amazon S3 云存储服务兼容,将使用户能够大量地移入和移出云存储。mc 提供了类似 Unix ls-、cp- 和 rsync 的命令,这些命令适用于本地磁盘和云存储。

独立版本的服务器目前可供下载。它支持内存、文件系统和 Donut(擦除存储)后端。服务器的托管版本也可用,旨在用于测试和开发。

分布式版本的服务器以及操作和用户控制台正在开发中,大约在 6 到 12 个月内,该堆栈应该完成。

选择 Golang

Minio 使用 Go,它类似于 Java,但没有 JVM 依赖项。Go 的通道和 goroutine 使其非常适合编写可扩展的高性能服务器。Go 的一个被吹捧的部分是消除了对包管理的需求。Go 代码编译为单个静态二进制文件;只需将其复制到任何地方并运行即可。

Go 是有主见的,并且深受谷歌用例的影响,但 Minio 并不介意继承谷歌构建基础设施软件的方式。Go 还没有 Java 成熟,并且在工具和垃圾回收方面仍然存在一些粗糙的地方;但是,Go 已准备好用于开发生产级软件。Go 1.5 的下一个版本实现了高效的并发垃圾回收并解决了工具问题。

在采用 Golang 之前,考虑了许多选项

  • C++ 和 Google V8 JavaScript:Minio 最初是用 C++ 和 V8 原型化的。JavaScript 带来了通过网络发送代码并在持续的基础上修补实时系统的能力。由于 V8 C++ API 不必要地复杂,因此被放弃了。Minio 团队也不想继承 JavaScript 的局限性。

  • C++ 和 Mozilla SpiderMonkey:与 Google V8 相比,SpiderMonkey 的性能不相上下,并且其 API 也更简洁;但是,由于 JavaScript 的局限性,SpiderMonkey 被否决了。

  • Java:Java 成熟且快速。关于 Java 的一切都很棒,除了它臃肿的 JVM 依赖项。

  • Haskell:如果 Haskell 是为内部使用而编写的,那么它将是 Minio 的首选。不幸的是,Haskell 没有受到开发人员社区的足够关注。

  • Rust:Rust 是一种强大的现代语言,如果 Golang 不存在,它将是第二选择。Rust 非常适合数据库引擎、事务服务器和 Internet 浏览器等项目。实现对象存储相对简单,不需要 Rust 那么多。

  • C 和 Python:C 功能强大,Python 编写代码很有趣,但 C 是原始的,Python 更适合 DevOps。

  • C 和 GNU Guile:此选项用于 GNU FreeIPMI 和 GNU Freetalk;Scheme 很棒,但它的社区采用有限。

为 Minio 贡献力量

Minio 旨在在 6-12 个月内完成完整的堆栈开发,所以现在是加入社区并影响其方向的好时机。以下是您可以为 Minio 做出贡献的方式

  • Gitter:Minio 社区在 Gitter 上闲逛,这类似于 IRC。

  • GitHub:Minio 的所有代码都在 GitHub 上公开开发。

  • 贡献指南:按照本指南设置开发环境。由于 Go 代码看起来很像 C 或 Java,因此入门很容易。

标签
User profile image.
Nitish 对开源、系统软件和创业公司的交叉领域感兴趣。他喜欢阅读和探索任何开源的东西。在空闲时间,他喜欢阅读励志书籍。他目前正在构建 Parseable - 一个开源对象存储、日志存储、管理和可观察性平台。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.