亚马逊S3架构

Suk*_*mar 13 amazon hadoop couchdb distributed-system amazon-s3

虽然post @ http://highscalability.com/amazon-architecture解释了亚马逊的体系结构,但我很想知道如何实现Amazon S3.

我的一些猜测是

  1. 像HDFS这样的分布式文件系统 http://hadoop.apache.org/core/docs/current/hdfs_design.html
  2. 非关系持久数据库,如CouchDB http://couchdb.apache.org/

是否可以使用Python或PHP等脚本语言以更小的规模实现类似的功能?

Kev*_*son 6

Amazon S3使用Dynamo Paper中描述的体系结构实现:

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

本文解释了一致的散列,以及保证是"最终一致性"的方式和原因.

他们谈论Dynamo的冲突解决方案并未向S3的用户公开.它在Amazon的应用程序内部使用,但对于S3,唯一的冲突解决方案是最后写入获胜.

编辑:Werner Vogels曾表示"Dynamo不会直接暴露在外部作为Web服务;但是,Dynamo和类似的亚马逊技术用于为我们的Amazon Web Services提供部分服务,例如S3." http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

我要强调的是,他并不是说S3和Dynamo共享组件,他明确表示Dynamo本身就是为S3提供动力的技术之一.我从S3看到的所有内容,包括警告,都是通过假设S3是一个奇特的Web服务包装器来解决的,其中包括身份验证,记帐和用户不可见的最后写入 - 胜利冲突解决方案.

最初的问题是关于S3的底层存储机制.它显然不是像HDFS这样的分布式文件系统,也不是像CouchDB这样的非关系型数据库.Dynamo充当这个角色.

  • 我不认为这是真的.迪纳摩的目标是从S3而不同(迪纳摩用于购物车和类似用途的情况下,很多写的,应用程序提供的冲突resoluton,短值),比S3的(简单的键/值存储,具有较大的值,没有基于内容的冲突因此,内部impl和设计是完全不同的(AFAIK).在架构上,它们共享许多东西,以及一些内部组件. (5认同)
  • Dynamo 和 S3 是完全不同的架构 (2认同)