对象存储的新指标

The New Metrics of Object Storage

总的来说,当人们想到对象存储时,他们会想到一件事——每TB/GB的价格。虽然这是一个合理的成本指标,但它会使对象存储变得一维,并将其降级为归档用例。此外,它扭曲了与企业技术堆栈中这一越来越重要的组成部分相关的价值。

坦率地说,传统的对象存储玩家应该对此负责。多年来,他们为了制造越来越便宜的设备,在技术方面缺乏创新。虽然这些老牌供应商可能会争辩说,这是客户想要的,但他们错了。

证据可以在亚马逊网络服务 (AWS) 去年实现的 250 亿美元收入中找到——其中绝大部分来自高性能、主要对象存储。如果我们保守地将 200 亿美元归因于 S3 存储服务,我们也可以安全地说,S3 的规模可能与剩余的设备市场总和相当。再加上定价相似且增长迅速的 Azure Blob 和 Google Cloud 收入,情况就很明显了——成本只是一个考虑因素。

这就是为什么现代企业关注更广泛的一组指标——强调性能、运营效率、灵活性和价格的指标,而不仅仅是价格本身。他们认识到,将数据冷藏会降低数据对组织的价值。在最大限度地提高组织数据价值的目标下,设备供应商的做法似乎是背道而驰的。

企业应该考虑什么?好吧,它们可以分为五大类

  1. 性能
  2. 可扩展性
  3. S3 兼容性
  4. 故障响应
  5. 一致性

除了成本之外,这五个要素定义了对象存储中的新指标。它们是六大要素。让我们依次看一下。

性能

对象存储传统上并不以性能著称。在价格战中,设备供应商不断牺牲性能。也就是说,他们使用“冰川”之类的术语来定义其产品。

现代对象存储改变了这一点。

从亚马逊到MinIO,我们看到的速度接近 Hadoop,甚至超过它。对象存储的新指标与 HDD 的 10 GB/s 到 NVMe 的 35+GB/s 的读写速度有关。NVMe 的吞吐量对于SparkPresto、Tensorflow、Teradata、Vertica、Splunk 以及分析堆栈中的其他现代计算框架来说已经足够快了。MPP 数据库正在将对象存储作为目标这一事实证明,对象存储正越来越多地成为主要存储。

如果您的对象存储系统无法提供这些速度,那么您将无法与所有数据交互,也无法从中提取适当的价值。即使您将数据从传统对象存储中提取到内存中处理框架,您仍然需要吞吐量才能将数据进出该内存——您无法从传统的对象设备中获得这种吞吐量。

这是一个关键点。新的性能指标是吞吐量,而不是延迟。这是大规模数据所需的,而这在现代数据基础设施中是常态。

需要注意的是,虽然性能基准是一个不错的代理,但只有在特定环境中运行特定应用程序后,才能真正了解性能。只有这样,他们才能了解瓶颈是存储软件、驱动器、网络还是计算层。

可扩展性

可扩展性通常被称为单个命名空间中可以容纳的 PB 数。每个供应商都声称其规模达到了 ZB 级,但这掩盖了一个事实,即随着规模的扩大,庞大的单体系统会变得脆弱、复杂、不稳定且昂贵。

可扩展性的新指标是您可以处理多少个不同的命名空间或租户。

这个指标直接来自超大规模云提供商——它们的构建块很小,但可以扩展到数十亿。简而言之,这就是云原生方式。

当构建块很小时,一切都能够更有效地理解和优化——安全性、访问控制、策略管理、生命周期管理、非破坏性升级和更新,最终是性能。构建块的大小是故障域的可管理性的一个函数。这就是高度弹性系统的架构方式。

在现代企业中,多租户具有多个维度。虽然它确实指的是企业如何组织对数据和应用程序的访问,但它也指的是应用程序本身以及它们如何从逻辑上彼此隔离。

现代多租户方法具有以下特点

  • 租户可以在很短的时间内从数百个增长到数百万个。
  • 租户彼此完全隔离,使它们能够运行具有不同配置、权限、功能、安全性和服务级别的同一对象存储软件的不同版本。当扩展新服务器、更新和地理位置时,这是一个运营现实。
  • 弹性和按需。
  • 每个操作都是 API 驱动的并自动化,无需人工干预来查看仪表板。
  • 软件足够轻量级,可以容器化,并利用行业标准的编排服务,如 Kubernetes。

S3 兼容性

亚马逊 S3 API 是对象存储的事实标准,以至于每个对象存储软件供应商都声称与之兼容。也就是说,AWS S3 兼容性实际上是二元的。它在所有情况下都起作用,或者根本不起作用。S3 兼容性的指标为 1。

这意味着,可能有数百个,甚至数千个角落情况,您期望发生的事情没有发生。这对专有软件或设备供应商来说尤其具有挑战性。原因是,他们大多数用例是简单的归档或备份,因此 API 调用的多样性非常低,用例也相当同质。显然,这是开源软件具有显著优势的领域。鉴于他们所见过的应用程序、操作系统和硬件架构的规模和多样性,他们已经遇到了大多数角落情况。

作为应用程序创建者,这一点很重要。您需要针对这些供应商测试您的应用程序。开源使评估供应商声明以及确定哪些平台针对您的应用程序表现良好变得容易。如果您的供应商足够好,可以作为网关,并被其他人用作网关——您就可以相信它也能满足您的需求。关于开源和 S3 的最后一个要点。开源意味着企业可以避免供应商锁定,并提高透明度。这让人们放心,解决方案的寿命将远远超过其部署位置。

关于 S3 兼容性的几个其他快速要点。

如果您运行任何大数据应用程序,S3 SELECT 通过使用 SQL 从对象存储中仅提取所需的内容,可以将性能和效率提高几个数量级。

此外,对存储桶通知的支持是关键。存储桶通知促进无服务器计算——这是任何基于微服务的函数即服务中的一个关键组成部分。鉴于对象存储是云中事实上的存储——当将您的对象服务器暴露给云原生应用程序时,此功能将成为必备功能。

最后,S3 实现需要支持亚马逊 S3 服务器端加密 API (SSE-C、SSE-S3、SSE-KMS)。更重要的是,它应该支持防篡改,这是可证明安全的。任何低于此标准的行为都会带来不必要的风险。

故障

对象存储中可能被忽视的指标是如何处理故障的。故障会发生,并且会以多种形式出现。对象存储系统需要优雅地处理所有这些故障。

例如,存在单点故障。此指标为零。

不幸的是,许多对象存储系统会使用“特殊”节点,这些节点必须处于启动状态才能使集群正常运行。这些包括名称节点或元数据服务器。这会创建一个单点故障。

即使存在多个故障点,能够承受灾难性故障也至关重要。驱动器会失效。服务器会宕机。关键是要采用专为将故障视为正常情况而设计的软件。这意味着,当磁盘或节点出现故障时,软件会继续不受影响地运行。

内联擦除编码和位腐烂保护带来的革命确保您可以在软件不再能够返回数据之前,丢失与奇偶校验块一样多的磁盘或节点。这通常是驱动器数量的一半。

故障很少在规模上进行测试,但应该是强制性的。在负载下模拟故障将提供对该故障的总成本(数据丢失、时间和技能)的准确图景。

一致性

一致性的指标为 100%——也称为严格一致性。一致性是任何存储系统中的一个关键组成部分,但严格一致性却很少见。例如,亚马逊 S3 ListObject 不严格一致,它只是最终一致的。

严格一致性是什么意思?对于在确认 PUT 操作后的所有操作,以下必须成立

  • 更新后的值在从任何节点读取时可见。
  • 更新通过冗余机制保护免受节点故障的影响。

这意味着即使在写入过程中拔掉了插头,也不会丢失任何数据。结果是系统永远不会返回损坏或陈旧的数据。这是一个很高的标准,对从事务应用程序到备份和恢复用例都有影响。

结论

这些是对象存储中的新指标,反映了现代企业的用法模式——性能、一致性、可扩展性、故障域和 S3 兼容性是云原生应用程序和大型数据分析的基础。我们鼓励读者在构建现代数据堆栈时,除了考虑成本外,还要参考此清单。 请随时查看并与我们进行交流。如果您有 PB 级的数据,请务必注意上限,因为它可以对未来的成本提供非凡的确定性。