写点什么

S3 老态已显

Chris Riccomini

  • 2024-07-03
    北京
  • 本文字数:1717 字

    阅读完需:约 6 分钟

大小:891.68K时长:05:04
S3 老态已显

本文最初发表于 Materialized View 网站,由 InfoQ 中文站翻译分享。


毋庸置疑,S3 是一项工程方面的壮举。构建和运维一个超大规模的存储系统 需要顶级的灵活性。但是,S3 的特性集正在逐渐落后于它的竞争对手。值得注意的是,S3 缺少比较并交换(compare-and-swap,CAS)操作,而其他竞争对手均支持该操作。它还缺少多区域桶和对象追加功能。甚至连 S3 Express 的表现也难以尽如人意。


这些缺失的特性对于数据湖和离线使用场景来说并不重要。但是,新的基础设施正在使用对象存储作为它们的主持久化层,这一点让我感到非常兴奋。在这方面,S3 的特性差距将会是一个更大的问题。



缺失前置条件功能


前置条件(precondition)也被称为比较并交换(CAS)、条件化、如果无匹配(If-None-Match)、如果匹配(If-Match)等,该特性允许客户端仅在满足特定条件时才写入对象。客户端可能希望仅在对象不存在时才写入对象,或者仅在客户端上次读取对象后未更改的情况下才更新对象。CAS 使这一切能够得以实现。这种操作通常用于分布式系统中的锁和事务。



S3 是唯一不支持前置条件的对象存储。所有其他的对象存储均支持该功能,如 Google Cloud Storage (GCS)、Azure Blob Store (ABS)、Cloudflare Ridiculously Reliable (R2) 存储、Tigris、MinIO。


开发人员被迫使用单独的事务性存储 (如 DynamoDB) 来执行事务操作。在 DynamoDB 和 S3 之间构建两阶段写入在技术上并不困难,但它很令人烦躁,而且会导致丑陋的抽象。


S3 Express One Zone 并不是真正的 S3


当 S3 Express One Zone (S3E1Z) 刚推出时,我真的很兴奋。但是,在它上面花的时间越多,我对它就越无感。第一个问题是 Amazon 为 Express 引入的新的目录桶类型。



但问题并不局限于此。S3E1Z 缺少大量的标准 S3 特性,包括对象版本的支持、桶标签、对象锁、对象标签和 MD5 校验和 ETags。完整的清单非常令人震惊。



我们不能像对待普通的 S3 桶那样对待 S3E1Z 桶。与 CAS 操作一样,开发人员必须围绕这些缺陷进行设计。而且,由于 S3E1Z 不是多区域的,开发人员需要为多个可用性区域构建群体写入(quorum writes),以获得更高的可用性。


考虑到 S3E1Z 的高存储成本 (0.16 美元 /gb),它是 Elastic Block Store(EBS) 通用 SSD (gp3) 成本的两倍,S3E1Z 看起来更像是一个昂贵的 EBS,而且只实现了一半的 S3 API。


缺少双区域 / 多区域桶


S3 没有双区域或多区域桶。这样的桶对于更高的可用性非常有用。谷歌在这方面提供了 广泛的可选方案。



虽然这不是强制的,但拥有更高的可用性桶当然是件好事。


接受现实


我们的梦想是为开发人员提供一个具有所有这些特性的对象存储:低延迟、支持前置条件、双区域 / 多区域等等。但我们必须面对现实,工程师面临着这样的选择:放弃 S3 或围绕这些差距进行构建。

Turbopuffer 是我最喜欢的一个完全放弃 S3 的公司样例。



他们的赌注是 S3 最终会支持前置条件。这种冒险似乎是合理的,因为 Amazon 拥有所有必需的构建块 (DynamoDB 和 S3),而且每个竞争对手都在这方面击败了他们。对于正在开发的云原生 LSM,我也下了类似的赌注。


这种方式的挑战在于云之间的网络成本。所有的云提供商都对网络出口进行收费。如果数据要传输到亚马逊网络服务 (AWS) 之外的基础设施上,那么将产生网络出口费用。但是,AWS 用户的跨云成本并没有想象中的那么糟糕。Turbopuffer 的创始人兼首席执行官 Simon Eskildsen 关于该方面写过很多文章。



这样做的好处是,Turbopuffer 构建了一个优雅而简约的设计,它 只有三个组件,即 Turbopuffer 二进制文件、RAM/SSD 缓存和 Google Cloud Storage。


对许多人来说,这似乎有些极端。另一种方法是将元数据存储在 S3 之外的事务性存储中。



一旦开启了单独的元数据平面,你就会发现它的其他使用场景。认识到 S3 是一个对象存储而不是文件系统,这是进入启蒙斜坡(在新技术或新思想出现后,人们逐渐认识到其价值和应用,开始广泛采用的过程。——译者注)的必经之路。通过采用 DynamoDB 作为元数据层,系统可以获得很多好处。


最终,是放弃 S3 还是接受它的缺点取决于系统的使用场景和设计目标。但是,如果 S3 支持前置条件并且 S3E1Z 具有统一的 API,那么这个决定将会容易得多。


声明:本文由 InfoQ 翻译,未经许可禁止转载。

2024-07-03 14:004221

评论

发布
暂无评论
发现更多内容

Java Streams 的潜力

FunTester

【YashanDB知识库】主备延迟故障分析方法

YashanDB

yashandb 崖山数据库

开箱即用,AISBench测试展示英特尔至强处理器的卓越推理性能

E科讯

828优选华为云Flexus X实例,找准中小企业上云“切入口”

YG科技

华为云Flexus X实例亮相828,企业数字化专场优选云服务器

轶天下事

网站必须做IPv6改造吗?不做IPv6改造有什么影响?

国科云

住宅代理和数据中心代理如何选择?

IPIDEA全球HTTP

基于 RocketMQ 的云原生 MQTT 消息引擎设计

阿里巴巴云原生

阿里云 RocketMQ 云原生

地信领域最高奖!YashanDB首获2024地理信息科技进步奖一等奖

极客天地

Peet's Coffee与观测云跨界合作,为伙伴们呈现双重喜悦

观测云

中秋节

加速企业上云管理黑科技,华为云Flexus X实例首次亮相828企业节

轶天下事

破解企业上云难题,828优选华为云Flexus X实例加速云上管理

轶天下事

​共筑国产数据库新生态!YashanDB与华瑞指数云ExponTech达成战略合作

极客天地

助力828,华为云Flexus X实例加速企业云上管理

轶天下事

万界星空科技MES系统生产过程控制功能详解

万界星空科技

工业互联网 制造业 mes 万界星空科技 生产管理MES系统

828如何选云服务器?华为云Flexus X实例引领中小企业上云潮流

YG科技

华为云Flexus X实例云上管理痛点,828首选上云产品之一

轶天下事

服务稳定性保障的五大误解

巴辉特

运维 SRE 服务稳定性建设 服务稳定性保障

从CSM到A-CSM:不断提升的探索之路

ShineScrum

基于STM32设计的酒精检测仪

DS小龙哥

9月月更

答应我,在vue中不要滥用watch好吗?好的

不在线第一只蜗牛

前端 Vue 3

望繁信科技与中原银行达成合作:谱写银企合作新篇章!

望繁信科技

数字化转型 中原银行 流程挖掘 流程资产 流程智能

Flink Forward Asia 2024 议题征集令|探索实时计算新边界

Apache Flink

Apache 大数据 flink 实时计算 FFA

828云服务器如何选?企业云上管理认准华为云Flexus X实例

YG科技

华为云Flexus X实例3大优势,828企业上云优选产品

YG科技

新一代柔性云服务!华为云Flexus X实例亮相828企业节

轶天下事

中小企业上云好管家!828企业节亮相的华为云Flexus X实例让上云更便捷

轶天下事

StarRocks Lakehouse 快速入门——Apache Iceberg

StarRocks

Apache 数据湖 iceberg

MacTalk 测评通义灵码,如何实现“微信表情”小功能?

阿里巴巴云原生

阿里云 云原生 通义灵码

S3 老态已显_云计算_InfoQ精选文章