亚马逊简单存储服务(Amazon S3)是最广泛使用和可靠的云存储服务之一,提供高度可扩展和耐用的存储。许多 S3 客户的关键要求是确保其数据的最大正常运行时间和可用性。在本文中,我们将深入探讨 S3 如何通过其稳固的系统架构和实现方式实现超过99.99%的可用性。
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库! |
在这份综合指南中,我们将探讨关键的 S3 可用性架构,包括:
S3 将数据存储在桶中,桶充当顶层容器。在一个桶中,数据以对象的形式存储,对象由数据本身、元数据和一个键(名称)组成。
为了提供高持久性,S3 会在多个设备和设施之间复制数据。默认情况下,数据会在一个亚马逊云科技区域中的三个可用区之间复制,可用区是区域内的隔离位置。
S3 还会将桶划分为多个分区,并将分区分布在不同的设备和设施上,以确保负载均衡和隔离故障域。这种划分允许透明地处理故障。
与 S3 可用性相关的一些关键概念:
可用性指系统保持运行和可访问以满足用户请求的时间百分比。对于许多将 S3 用于关键任务数据的组织而言,高可用性至关重要。
根据 IDC 的数据,停机时间使企业平均每小时损失25万美元。有了 S3 的架构,潜在的停机时间得到了减少,从而节省成本并防止收入损失。
在提供始终可用性方面存在几个关键挑战:
在接下来的章节中,我们将探讨 S3 的架构如何应对这些问题。
S3 采用了高度分布式的、优化的存储系统,以实现卓越的可用性。其中关键方面包括:
尽管有冗余性,但故障仍然可能发生。为了处理崩溃,S3 使用:
下面是一个 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 的可用性来处理其关键工作负载:
在本文中,我们探讨了 S3 的内部系统架构,该架构实现了极高的可用性。关键方面包括
通过深入理解 S3 的可用性架构,开发人员可以构建高度弹性的云原生应用程序。
在评论中告诉我,如果您对这个主题还有其他问题!我很乐意进一步讨论。
文章来源:https://dev.amazoncloud.cn/column/article/64e5f9dd84d232184306823c?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN