【问题标题】:How does mongodb replica compare with amazon ebs?mongodb副本与amazon ebs相比如何?
【发布时间】:2013-10-02 13:03:51
【问题描述】:

我是 mongodb 和 amazon ec2 的新手。
在我看来,mongo 副本的存在是为了:1/ 避免数据丢失和 2/ 使读取和服务更快。
在亚马逊,他们有这个 EbS 东西。据我了解,它是一个全局持久存储,例如 Dropbox。
那么,如果亚马逊通过 EBS 抽象出对副本的需求,是否还需要副本?
提前感谢
托马斯

【问题讨论】:

  • EBS 和副本是两个完全不同的东西,在两个完全不同的层次上工作

标签: mongodb amazon-ec2 amazon-ebs


【解决方案1】:

让我澄清几件事。

如果您习惯于使用现有技术,EBS 本质上就是一个 SAN 卷。它可以附加到一个实例,但它始终具有有限的 IO。使用 RAID 可以帮助最大化 IO,预置 IOPS 可以帮助您最大化吞吐量。

然而,理想情况下,对于 MongoDB,您希望有足够的内存,以便可以在内存中完全访问索引,如果需要访问磁盘,性能会下降。

Mongo 可以使用 Replicas,主要用于故障转移和复制(您可以将读取发送到从属服务器,但所有写入都需要命中主服务器),以及用于拆分数据集以提高性能的分片。即使您使用 EBS 进行存储,您仍然需要执行这些操作。

【讨论】:

  • 因此,如果我的数据库中的数据多于 1 台计算机可以处理的数据,则 EBS 不是解决方案,而是我应该使用常规 mongodb 分片,只使用亚马逊服务器进行复制和分片,然后忘记关于 EBS,对吧?
  • 您可能仍会使用 EBS。您在 EC2 实例上只有两个存储选项,即 EBS 和实例存储。虽然实例存储可以提供更好的性能(尤其是在 SSD Hi IO 实例上),但您必须仔细构建数据库复制,因为如果实例停止,实例存储将会丢失。
  • 愚蠢的跟进:我应该有很少的实例和很多 1Gb EBS 卷,很少有 1Tb EBS 卷的实例,还是很多实例有几个 1gb EBS 卷?
  • RAID 配置可以使用的卷数量是有限制的。根据您的实例大小,它将是 4-8 个卷。如果您要使用 raid 选项,请将卷设置得足够大,以便为您提供相当大的增长空间。
【解决方案2】:

副本不仅用于存储冗余,还用于服务器冗余。如果您的 MongoDB 服务器(使用 EBS 卷)突然消失,例如,它所在的主机出现故障,会发生什么情况?您需要做很多事情,例如克隆一个新实例来替换它,将卷附加到该实例,将流量重新路由到它等等。Mongo 的副本集意味着您不必这样做。即使其中一个发生故障,它们也会继续工作,因此您的停机时间基本上为 0。

此外,它还有一层冗余。到目前为止,您只能信任 EBS - 如果 AWS 有一个错误会擦除您的卷或使其在不可接受的长时间内不可用怎么办?使用副本集,您甚至可以跨可用区复制数据,甚至复制到完全不同的云提供商。

副本集还允许您从多个节点读取数据,因此理论上,在您从一个实例中最大化 EBS 连接为您提供的内容后,您可以提高读取吞吐量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2011-01-10
    相关资源
    最近更新 更多