AWS Dynamodb和可用区基础架构

时间:2019-10-27 06:53:32

标签: nosql amazon-dynamodb

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

我真的很想了解Dynamodb和可用区的底层体系结构。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

DynamoDB保证每个数据项的三个副本不仅仅位于相同的可用性区域(数据中​​心)中,而是转到三个不同的副本中。至少在具有三个或更多可用区的区域中(大多数是这样)。

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