亚马逊S3架构

15

至少有一个S3等效解决方案可供您用于测试客户端。通过研究源代码,您可能会发现一些信息,并可以在自己的项目中使用它。 - Rune Grimstad
看看MogileFS。它与S3不兼容API,并且比S3少了很多功能,但它可以基本地将静态文件分布在一组低成本存储服务器上。 - melo
3个回答

6

Amazon S3采用Dynamo Paper中描述的架构实现:

http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

本文介绍了一致性哈希算法,以及为什么它保证的是“最终一致性”。
他们在 Dynamo 中讨论的冲突解决方法并没有暴露给 S3 的用户。它只在亚马逊的应用程序内部使用,但对于 S3,唯一的冲突解决方法是最后写入覆盖。
编辑:Werner Vogels 表示,“Dynamo 并未直接作为 Web 服务外部公开;然而,Dynamo 和类似的亚马逊技术被用来支持我们的 Amazon Web Services 的某些部分,比如 S3。”http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html 我想强调的是,他并没有说 S3 和 Dynamo 共享组件,他明确表示 Dynamo 本身就是支持 S3 的技术之一。根据我的观察,包括注意事项在内,假设 S3 是一个围绕着 Dynamo 的高级 Web 服务包装器,具有身份验证、计费和一个对用户不可见的最后写入覆盖冲突解决方法。
最初的问题是关于 S3 的底层存储机制。它明确不是像 HDFS 这样的分布式文件系统,也不是像 CouchDB 这样的非关系型数据库。Dynamo 扮演了这个角色。

6
我不认为这完全正确。Dynamo的目标与S3相当不同(Dynamo用于购物车和类似用例,有大量写入操作、应用提供的冲突解决、较短的值),而S3是一个简单的键/值存储,具有大型值、没有基于内容的冲突解决或合并。因此,内部实现和设计也相当不同(据我所知)。从架构上讲,它们有许多共同点,还共享一些内部组件。 - StaxMan
2
Dynamo和S3是完全不同的架构。 - leon
1
Dynamo 可以用于 S3 的某些部分(例如元数据存储),但主要的存储结构完全不相关。 - Arkadiy Kukarkin

4
亚马逊S3的架构和实现都没有公开。因此,它无法扩展以开发创建任意大小的私有云的功能。
关于云存储架构主题有一些论文。您可能会发现它们有用。这是其中之一:CACSS:通向通用云存储服务 还详细介绍了如何将不同技术组合在一起,以提供单个优秀性能、高度可扩展和可靠的云存储系统的方法。该研究为经验不足的云提供商提供了知识来源,使他们能够迅速建立自己的云存储服务。

1

尽管内容存储为“BLOBs”而无需系统关心内容,但它更接近于2,而CouchDB确实关心。后端存储使用本地DB(BDB?)用于存储多个副本的集群节点。读取可以到具有副本的任何节点,写入也可以,但需要解决冲突才能消除冲突。正如Kevin所提到的那样,这保证了“最终一致性”,但没有严格保证何时或哪个写入会获胜(从外部POV来看;在内部是有定义的)。

阅读Dynamo文档对于理解许多概念很有用,但据我所知,实现是不同的。 Dynamo在Amazon内部用于其他用途。还有开源实现的两种; 一个有趣的是Project Voldemort。 CouchDB显然也很有趣。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接