【问题标题】:AWS Dynamodb and Availability Zone underlying architectureAWS Dynamodb 和可用区底层架构
【发布时间】:2019-10-27 06:53:32
【问题描述】:

我正在学习 AWS Dynamodb。作为 AWS 文档,它由 AWS 设置和配置为分布式数据库集群,并且 DB 中的数据跨 AWS 区域中的可用区进行故障转移。

我很想了解 Dynamodb 和可用区的底层架构。

正如我的想法,有多个服务器实例(可能是 EC2 实例)作为 DynamoDB 的可用区中的数据库集群;可用区中的 dynamodb 将在一个区域中的所有可用区复制

欢迎任何想法或讨论或有用的链接。

【问题讨论】:

    标签: nosql amazon-dynamodb


    【解决方案1】:

    您的实际问题是什么对我来说有点模糊,但我会尝试回答我认为您的问题的核心 - “可用区”做什么。我遗漏了很多关于 DynamoDB 的领导者模型和一致性的细节,这与您关于可用区的问题并不真正相关。您可以在许多文档、演示文稿和视频中找到这些和其他问题的解释 - 我最喜欢的一个是 https://www.youtube.com/watch?v=yvBR71D0nAQ

    无论如何,DynamoDB 中的每条数据都会复制到三个物理节点(机器)。 DynamoDB 的集群实际上可能有数百个这样的节点(你无法判断),但每一项数据都存储在其中的三个节点上。您不知道是哪个,但您知道的是,同一个 partition 中的两个项目(即具有相同的分区键)保证位于相同的三个节点上 - 这允许操作(“查询”)读取整个分区以提高效率,因为它可以从一个节点的磁盘连续读取。

    无论如何,这种复制提供了两个主要保证:它提供了持久性 - 这意味着如果一个副本丢失,我们仍然有其他副本。并且它提供了高可用性——这意味着如果一个副本暂时关闭(例如,断电、网络问题等),数据库仍然可以完全运行——读取和写入都可以继续进行,而无需等待丢失的副本重新出现。

    问题在于,如果所有三个副本都位于同一个数据中心内,灾难可能会同时袭击所有三个:数据中心发生火灾会导致 耐久性(所有三个副本从字面上看,烟消云散)。此数据中心的断电或网络问题可能会导致失去高可用性。为了解决这个问题,亚马逊在每个地理区域都有几个独立的数据中心,它称之为“可用区”。这些独立的数据中心位于物理上不同的建筑物中,连接到不同的电网、不同的互联网连接点等,以尽可能保证一场灾难不会影响多个数据中心。数据中心的物理位置使得它们彼此足够接近,因此它们之间的网络延迟最小(例如 1 毫秒),但彼此之间的距离又足够远,因此不太可能发生单一灾难。

    DynamoDB 保证每个数据项的三个副本不仅最终位于同一个可用区(数据中心)中,而且会转到三个不同的可用区。至少在具有三个或更多可用区的区域中(大多数都有)。

    即使有单独的可用区,一些巨大的灾难仍可能袭击其中几个。您可以在电影中找到许多关于此类灾难的想法,包括全面核战争、外星人入侵、小行星、海啸席卷整个东海岸 ;-) 出于这些和其他不太好莱坞化的原因,亚马逊还为您提供了选择多个地理区域,将您的数据副本放置在完全不同的国家和大陆。但是由于这些副本之间的高延迟,这种复制的工作方式发生了很大变化(查看 DynamoDB 文档中的“全局表”),这确实是另一个讨论的主题。

    【讨论】:

    • 感谢您如此详细的回答,对我很有帮助。
    猜你喜欢
    • 2014-05-09
    • 2019-04-21
    • 1970-01-01
    • 2011-05-20
    • 2022-01-14
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多