如何实现 99.999999999% 的耐用性

这篇文章概述了 Amazon S3 如何提供令人难以置信的耐用性。如果您想了解更多信息,请滚动到底部并找到参考资料。

1

   

背景故事

2010 年 11 月 - 法国巴黎。一位名叫朱莉娅的年轻软件工程师在一家制药初创公司工作。

他们每天都会创建许多日志文件。耐用性对他们的商业模式来说很重要。然而他们将数据存储在内部的一个小型服务器机房里。生活很美好。随着季节的流逝。但是有一天。他们的主数据服务器的硬盘崩溃了。并毁掉了一切。朱莉娅注意到无法找到主要客户的日志文件。所以她很伤心。幸运的是他们有一个备用服务器。

但她知道,他们目前的安排是自找麻烦。因此她在网上寻找便宜又耐用的存储解决方案。并阅读有关 Amazon S3 的信息。它的耐用性数字令她眼花缭乱。Amazon Simple Storage Service(S3 )是一个对象存储。它存储没有层次结构的非结构化数据。

2

   

Amazon S3 耐用性

Amazon S3 提供11 个 9的耐用性 - 99.999999999%。

换句话说,1000 万个对象中的*一个数据对象可能会在*1000 万年内丢失。

耐用性是关于防止数据丢失。

以下是 Amazon S3 提供极高耐用性的方式:

2.1

   

1、数据冗余

机械硬盘以较小的成本提供大存储。

因此它们在云中仍然被广泛使用

但他们却常常失败

这可能是由于物理冲击或电气故障而发生的。

61bd914a9537055750e146897cc104bd.jpeg

一个解决方案就是在多个硬盘上复制数据。因此,如果发生故障,可以从另一个磁盘恢复数据。换句话说,复制提高了耐用性。但是,如果存储*特定数据对象的*所有硬盘都发生故障,仍然存在数据丢失的风险。

e10d8639efd9760527f64fed98a5bde9.jpeg

因此他们使用擦除编码来降低数据丢失的概率。这是一种复制技术。擦除编码将数据对象分割成称为数据分片的块。并创建称为奇偶校验分片的额外块。而原始数据对象可以从分片的子集中重新创建。

f9c8ec6a3972fbe890544251ddceb340.jpeg

他们将擦除编码的*碎片存储在*许多硬盘上。从而降低数据丢失的概率。换句话说,多层次的灵活复制可以提高耐用性。在上图中,碎片以不同的颜色显示。

141c49428a77bc5f225709b976e81e54.jpeg{:height 293, :width 778}

它们运行后台进程监控存储设备的健康状况。并快速更换故障的设备以重新复制其数据。此外,他们不会保留空的存储设备。而是每个存储设备中都有一些可用空间。因此许多存储设备可以参与恢复。并通过并行化提供*高恢复*吞吐量

2.2

   

2、数据完整性

它们通过*多种服务*发送用户数据,然后将其存储在 S3 中。

然而,网络设备中的位翻转存在导致数据损坏的风险。

位翻转是指位从 0 变为 1 或从 1 变为 0 的不必要变化。

这可能是由于通信信道中的*噪音或*硬件故障而发生的

此外,TCP不能检测位翻转,因为它是一个更高级别的协议。3508718d5041fd91d7373f393e07f100.jpeg

因此他们使用 Amazon 客户端 SDK 为数据添加校验和。它可以帮助他们在数据到达 S3 时检测损坏的数据。换句话说,他们使用校验和来检查数据完整性。想象一下校验和是数据对象的指纹。因此两个不同的数据对象不会具有相同的校验和。并且他们使用 CRC32C 和 SHA-1 等校验和算法来提高性能。此外,他们使用HTTP 尾部来发送校验和。因为它允许在分块数据的末尾发送额外的数据。这样就*避免了两次扫描数据并*大规模检查数据完整性的需要。

4cd227bfb715067ea163371c88c64506.jpeg

他们在将数据存储到 S3 之前对其进行擦除编码。并向擦除编码分片添加额外的校验和。因为它允许在读取期间检查数据完整性。而 S3 每秒计算大约 40 亿个校验和。

此外,他们在向用户*返回成功响应之前会进行括号处理。包围是将数据的整个变换集合逆转的过程。它确保可以从各个分片重新创建*数据对象。换句话说,它会根据上传的数据来验证存储的数据。

2.3

   

3. 数据审计

出现故障的硬盘应快速更换。

还必须重新复制数据以确保持久性。

所以他们将硬盘的修复率与故障率进行匹配

然而故障并不总是可以预测的,因为它可能受到天气或停电的影响。

因此他们运行单独的服务检测硬盘故障。

并相应扩大维修*服务*规模。

758144b6bea6139871a1f6f61ae559ee.png

硬盘上也会发生位翻转。并可能损坏特定的*数据*扇区。换句话说,存储设备可能可以运行,但特定的数据扇区将无法读取。

fb120d9057aa0038f8a12742fdd71663.jpeg

因此他们会定期扫描存储设备以检查数据完整性。并使用存储有擦除编码分片的校验和来*审计*数据。此外,如果发现坏扇区,他们会重新复制数据。

2.4

   

4.数据隔离

它们将元数据文件内容分别存储在 S3 中。

b3d9d9c07130080b73ab63314a708de9.jpeg

元数据存储在数据库中。而文件内容则以块的形式存储在大量硬盘阵列中。他们还在可用区域内运行物理上分离的数据中心。换句话说,可用区是一组独立的数据中心。

4beb0991878cfc7aaf698cd3ec89dd97.png

每个可用区域都有单独的网络基础设施和电源。从而*降低同时发生故障*的风险并提高耐用性。但由于用户的失误,存在数据丢失的风险。例如,用户可能会意外删除或覆盖数据对象。因此他们更好地设计软件以避免这种情况。

050a7db37c062fd687b1d3504b050030.jpeg

它们在 S3 中提供*版本控制来*跟踪数据对象的变化。并且对对象的每次更改都会获得一个版本 ID。删除标记也用于删除版本。因为它延迟了实际的删除。从而避免意外覆盖或删除数据对象。此外,他们支持 S3 中的对象锁,以避免用户错误。它可以防止在指定时间内永久删除对象。此外,他们还提供时间点备份以确保持久性。

2.5

   

5. 工程文化

他们只有在进行*耐久性审查之后才会*部署变更。

因为它迫使他们思考可能的情况并简化设计决策。

换句话说,耐久性审查有助于他们了解软件设计中的风险。

fc17dcf39988954494df54f0b53e67d0.jpeg

他们保存一份书面文件以供耐用性审查。还有一个威胁模型,其中列出了可能出错的事情。从而创造一种不断思考耐用性的工程文化。此外,他们使用经过验证的数学模型来计算耐久性。

他们使耐久性成为建筑和工程文化的一部分。此外,他们非常注重耐用性基本原理。并将耐用性视为一个持续的过程。

3

   

参考

  • AWS re: Invent 2022 - 深入探究 Amazon S3 ( https://www.youtube.com/watch?v=v3HfUNQ0JOE )

  • 超越 11 个 9 - Amazon S3 如何实现持久性 ( https://www.youtube.com/watch?v=qJoATSh5CZY )

  • Amazon S3 基础知识:耐用性和可用性 ( https://www.youtube.com/watch?v=soZJGPtdmJQ )

  • 超越 11 个 9 的耐用性:使用 Amazon S3 进行数据保护 ( https://www.youtube.com/watch?v=YsIjt88E6iw )

  • Amazon S3 中的数据保护 ( https://docs.aws.amazon.com/AmazonS3/latest/userguide/DataDurability.html )

  • MDN - HTTP 尾部 ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Trailer )

  • 什么原因导致计算机内存中的位翻转? ( https://blog.robertelder.org/causes-of-bit-flips-in-computer-memory/ )

  • 理解纠删码 ( https://stonefly.com/blog/understanding-erasure-coding/ )

  • 系统设计 ( https://newsletter.systemdesign.one/p/amazon-s3-durability )


随手关注或者”在看“,诚挚感谢!

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值