报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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:004101

评论

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

技术分享| 调度平台的好助手-快对讲

anyRTC开发者

音视频 调度 实时消息 快对讲 视频对讲

Android如何实现自定义短信登录丨MobTech

MobTech袤博科技

android

软件测试 | 接口自动化测试,如何实现多套环境的自动化测试?

测试人

软件测试 自动化测试 接口测试 测试开发

iOS如何实现验证码登录丨MobTech

MobTech袤博科技

ios xcode

UI 自动化测试实战(二)| 测试数据的数据驱动

霍格沃兹测试开发学社

iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践

霍格沃兹测试开发学社

阿里云视觉智能开放平台9月特惠来袭

夏夜许游

Z世代的开学季:华为技能加持,你就是焦点!

最新动态

小程序可以在智能设备上运行?

Speedoooo

小程序 物联网 IoT 智能设备 小程序容器

MobTech 短信验证REST API

MobTech袤博科技

REST API MobTech袤博科技

OPPO的航船:小布生命体将驶向怎样的科技彼岸?

脑极体

技术门槛高?来看 Intel 机密计算技术在龙蜥社区的实践 | 龙蜥技术

OpenAnolis小助手

云原生 intel sig 龙蜥技术 机密计算

RPC接口测试技术-websocket 自动化测试实践

霍格沃兹测试开发学社

【云原生 | Docker】部署 Django & Nginx & Gunicorn

计算机魔术师

8月月更

基于深度学习下的航空领域真空羽流解决方案

GPU算力

云南林职院 x WeLink一站式智慧迎新, 打造西南数字化职校新标杆

IT资讯搬运工

人工智能’

Python 自动化测试(四)

霍格沃兹测试开发学社

UI 自动化测试应不应该投入?有没有前途?怎样做最明智?

霍格沃兹测试开发学社

漫谈软件成分分析(SCA)安全测试技术

科技怪咖

Carina 全新版本 v0.11.0 上线!重磅升级不可错过

BoCloud博云

云计算 云原生 #开源

华为云WeLink助力平房区打造智慧政务办公系统

IT资讯搬运工

人工智能’

GaussDB(for Redis)即将亮相华为云快成长直播间,让成本直降75%!

IT资讯搬运工

人工智能’

宿舍全屋智能开发指南

OpenHarmony开发者

OpenHarmony

云速ERP(WeLink认证版)上线,加速中小微企业数字化经营创新

IT资讯搬运工

人工智能’

iOS自动化真机测试验证环境过程中常见问题解析

霍格沃兹测试开发学社

NFT数字藏品系统开发:怎么开发自己的数字藏品平台?

开源直播系统源码

数字藏品 数字藏品系统软件开发 数字藏品开发 数字藏品系统 数字藏品软件

app自动化测试(iOS)元素定位(新手篇)

霍格沃兹测试开发学社

go语言逆向技术之---恢复函数名称算法

科技怪咖

从检测角度思考美燃油管道商遭勒索攻击事件

科技怪咖

区块链入局,远程医疗这回“靠谱”了!

旺链科技

区块链 产业区块链 远程医疗 企业号九月金秋榜

设计模式的艺术 第十五章代理设计模式练习(设计一款基于C/S的网络图片查看器,用户只需在图片查看器中输入网页URL,程序将自动将网页所有图片下载到本地。)

代廉洁

设计模式的艺术

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