我正在学习AWS Dynamodb。作为AWS文档,AWS将其设置为分布式数据库集群,数据库中的数据跨AWS区域的可用性区域进行故障转移。
我非常想了解Dynamodb和可用性区域的底层架构。
正如我所想的,在可用性区域中有多个服务器实例(可能是EC2实例)作为数据库集群作为DynamoDB;可用性区域中的dynamodb将被复制到某个区域的所有可用性区域。
欢迎任何想法、讨论或有用的链接。
发布于 2019-10-27 13:15:18
这对我来说有点模糊,你的实际问题是什么,但我会尝试回答我认为是你问题核心的问题--“可用性区域”做什么。我遗漏了关于DynamoDB的领先模型和一致性的许多细节,这与您关于可用性区域的问题并不真正相关。您可以在许多文档、演示文稿和视频中找到这些和其他问题--我最喜欢的一个是https://www.youtube.com/watch?v=yvBR71D0nAQ。
无论如何,DynamoDB中的每一段数据都被复制到三个物理节点(机器)中。DynamoDB的集群实际上可能有数百个这样的节点(您无法知道),但是每个数据项都存储在其中的三个节点上。您不知道是哪一个,但您知道的是,在同一个分区中的两个项(即具有相同的分区键)保证位于相同的三个节点上--这允许操作("Query")读取整个分区以提高效率,因为它可以从一个节点的磁盘连续读取。
无论如何,这个复制提供了两个主要的保证:它提供了持久性--这意味着如果一个副本丢失了,我们还有其他副本。它还提供了high-availability --意味着如果一个副本暂时关闭(例如停电、网络问题等)数据库仍然是完全可操作的--读和写都可以继续进行,而无需等待丢失的副本重新出现。
问题是,如果所有三个副本都位于同一个数据中心内,灾难可能同时发生:数据中心的火灾可能会导致耐久性的损失(实际上,这三个副本都会烟消云散)。此数据中心的停电或网络问题可能导致high-availability.的丢失。为了解决这个问题,亚马逊在每个地理区域都有几个独立的数据中心,它称之为“可用性区域”。这些独立的数据中心位于物理上不同的建筑物中,连接到不同的电网、不同的互联网连接点等,以尽可能地保证一场灾难不会影响这些数据中心中的多个。数据中心的物理位置使得它们之间的距离足够近,因此它们之间的网络延迟最小(例如,1ms),而彼此之间的距离足够远,因此单个灾难不太可能同时发生。
DynamoDB保证每个数据项的三个副本不只是位于相同的可用性区域(数据中心),而是转移到三个不同的可用区域。至少在有三个或三个以上可用区域的地区(大多数是这样)。
即使在不同的可用区域,一些巨大的灾难仍可能袭击其中的几个。你可以在电影中找到很多关于这类灾难的想法,包括全面的核战争、外星入侵、小行星、海啸摧毁整个东海岸;-)由于这些和其他较少的原因,亚马逊还为你提供了多个地理区域()的选择,它将你的数据复制到完全不同的国家和大陆。但是由于这些副本之间的延迟时间很长,它在复制的工作方式上发生了很大的变化(查看DynamoDB文档中的“全局表”),这实际上是另一个讨论的主题。
https://stackoverflow.com/questions/58577181
复制相似问题