乐趣区

关于人工智能:Amazo-S3-是如何实现-99999999999-的持久性和可用性的

亚马逊简略存储服务(Amazon S3)是最宽泛应用和牢靠的云存储服务之一,提供高度可扩大和耐用的存储。许多 S3 客户的要害要求是确保其数据的最大失常运行工夫和可用性。在本文中,咱们将深入探讨 S3 如何通过其巩固的零碎架构和实现形式实现超过 99.99% 的可用性。

亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注 / 珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库!

在这份综合指南中,咱们将探讨要害的 S3 可用性架构,包含:

  • 跨可用区(AZs)的数据复制 – S3 在提交写入之前,将数据同步复制到至多 3 个可用区。
  • 智能申请路由 – S3 将流量路由到最近的设施,以获取所申请的数据,从而最大限度地缩小提早。
  • 疾速故障检测 – S3 应用健康检查,在几秒钟内 检测故障,并触发复原。
  • 主动复原 – S3 保留额定的容量,以解决从失败设施重定向的流量。
  • 分区和负载平衡 – S3 将存储桶 分区,以蕴含故障并均衡负载。
  • 强一致性模型 – S3 提供写入后一致性,并避免古老数据。

背景

S3 将数据存储在桶中, 桶充当顶层容器。在一个桶中, 数据以对象的模式存储, 对象由数据自身、元数据和一个键 (名称) 组成。

为了提供高持久性,S3 会在多个设施和设施之间复制数据。默认状况下, 数据会在一个亚马逊云科技区域中的三个可用区之间复制, 可用区是区域内的隔离地位。

S3 还会将桶划分为多个分区, 并将分区散布在不同的设施和设施上, 以确保负载平衡和隔离故障域。这种划分容许通明地解决故障。

与 S3 可用性相干的一些要害概念:

  1. 复制:这不仅仅是复制。对于 S3 而言,这是一种在亚马逊云科技区域内同步复制数据到三个不同设施的实际。每个设施都充当隔离的区域,确保即便一个设施宕机,其余设施依然可用。
  2. 分区加强巩固性:S3 的存储桶被划分为分区,这些分区散布在不同的设施和设施上。这种继续分区确保了均衡负载,并隔离了故障。
  3. 一致性与故障切换:两个根本支柱。S3 优先保护最新的正本(一致性),并在故障时切换到备份正本(故障切换)。

高可用性的重要性

可用性指零碎放弃运行和可拜访以满足用户申请的工夫百分比。对于许多将 S3 用于要害工作数据的组织而言,高可用性至关重要。

依据 IDC 的数据,停机工夫使企业均匀每小时损失 25 万美元。有了 S3 的架构,潜在的停机工夫失去了缩小,从而节省成本并避免支出损失。

确保可用性面临的挑战

在提供始终可用性方面存在几个要害挑战:

  1. 在不影响提早的状况下在数据中心之间复制写入操作
  2. 在几秒钟内进行疾速故障检测
  3. 无数据失落地无缝复原故障
  4. 在故障和复原期间放弃读取一致性
  5. 随着数据量减少线性扩大

在接下来的章节中,咱们将探讨 S3 的架构如何应答这些问题。

S3 如何实现高可用性

S3 采纳了高度分布式的、优化的存储系统,以实现卓越的可用性。其中要害方面包含:

主动故障检测和复原

只管有冗余性, 但故障依然可能产生。为了解决解体,S3 应用:

  • 健康检查: 每秒进行超过 5 万次的存储服务器状态查看
  • 自我修复: 通过校验验证主动修复损坏的对象
  • 故障转移: 如果主服务器敞开, 在 60 秒内将流量路由到备用服务器

上面是一个 Java 故障转移逻辑示例:

if (primaryServer.isHealthy()) {routeTraffic(primaryServer);  
} else {logError(primaryServer);  
  routeTraffic(secondaryServer);  
  recoverData(primaryServer);  
}

即便多个服务器离线, 这也能够确保服务放弃 99.99% 的可用性。

分区和负载平衡
S3 将存储桶分区为多个片段,并在各个设施之间进行散布。这样能够隔离故障并动态平衡负载。每个分区能够解决每秒 5500 次申请。

跨可用区同步复制
S3 在提交写入之前,将数据同步复制到至多 3 个可用区。这确保即便一个可用区齐全失败,也不会失落数据。

强一致性
S3 对新的 PUT 和 DELETE 操作提供写入后一致性。它还能够检测数据损坏,以避免提供古老数据。相比行业标准的 3 -4%,S3 的中位错误率约为 0.01%。

智能申请路由

S3 确定蕴含所申请数据的最近设施,并相应地路由流量。这样能够在均衡负载的同时最大限度地缩小提早。S3 能够维持超过 150 万次每秒 的申请流量。

理论案例

让咱们看看 Acme 公司如何利用 S3 的可用性来解决其要害工作负载:

  • 在逾越可用区 A、B、C 的 S3 存储桶中存储的剖析数据有 500 个分区
  • 可用区 A 遇到重大故障,流量持续从可用区 B、C 中进行
  • 当初写入只复制到可用区 B、C
  • 一旦 A 复原,S3 会从新均衡分区以缩小热点
  • 在整个故障期间,Acme 的数据依然可用

论断

在本文中,咱们探讨了 S3 的外部零碎架构,该架构实现了极高的可用性。要害方面包含

  • 多可用区架构隔离故障并提供低提早
  • 主动复原简化了故障期间的操作
  • 分区能够隔离故障并实现从新均衡
  • 强一致性避免提供古老数据

通过深刻了解 S3 的可用性架构,开发人员能够构建高度弹性的云原生应用程序。
在评论中通知我,如果您对这个主题还有其余问题!我很乐意进一步探讨。

文章起源:https://dev.amazoncloud.cn/column/article/64e5f9dd84d23218430…

退出移动版