2009-02-19 40 views
9

Mientras que la publicación @http://highscalability.com/amazon-architecture explica la arquitectura de Amazon en general, me interesa saber cómo se implementa Amazon S3.Arquitectura de Amazon S3

Algunos de mis conjeturas son

  1. Un sistema de archivos distribuido como HDFS http://hadoop.apache.org/core/docs/current/hdfs_design.html
  2. Un relacional DB no persistente como CouchDB http://couchdb.apache.org/

¿Es posible implementar algo similar a esto en una escala mucho más pequeña utilizando lenguajes de scripting como Python o PHP?

+0

Hay al menos [uno] (https://sourceforge.net/projects/s3mockup/) Solución equivalente S3 que puede usar para probar clientes en contra. Puede encontrar información estudiando el código fuente y quizás podría usarlo en su propio proyecto. –

+0

Mira MogileFS. No es compatible con API con S3, y tiene muchas menos funciones que S3, pero realiza el proceso básico de distribución de archivos estáticos en un conjunto de servidores de almacenamiento de bajo costo. – melo

Respuesta

5

Amazon S3 se implementa utilizando la arquitectura descrita en el Libro Dynamo:

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

El documento explica hash consistente, y cómo y por qué la garantía es "consistencia eventual".

La resolución de conflictos de la que hablan para Dynamo no está expuesta a los usuarios de S3. Se usa internamente en las aplicaciones de Amazon, pero para S3, la única resolución de conflicto es la última escritura gana.

Editar: Werner Vogels ha dicho "Dynamo no está directamente expuesto externamente como un servicio web, sin embargo, Dynamo y otras tecnologías similares de Amazon se utilizan para alimentar partes de nuestros servicios web de Amazon, como S3". http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

Quiero hacer hincapié en que él no está diciendo que S3 y Dynamo comparten componentes, explícitamente dice que Dynamo en sí es una de las tecnologías que alimentan S3. Todo lo que he visto de S3, incluidas las advertencias, se explica al suponer que S3 es un sofisticado envoltorio de servicios web alrededor de Dynamo con autenticación, contabilidad y resolución de conflictos de última escritura que es invisible para el usuario.

La pregunta original era sobre el mecanismo de almacenamiento subyacente para S3. No es explícitamente un sistema de archivos distribuidos como HDFS o una base de datos no relacional como CouchDB. Dynamo cumple esta función.

+1

No creo que esto sea del todo cierto. Los objetivos de Dynamo son bastante diferentes de S3 (Dynamo se usa para carritos de compras y casos de uso similares, muchas escrituras, resolución de conflictos proporcionados por la aplicación, valores cortos) que S3 (almacén simple de claves/valores, con valores grandes, sin conflictos basados ​​en el contenido resolución o combinación. Y como tal, el diseño interno y el diseño son bastante diferentes (AFAIK). Arquitectónicamente comparten muchas cosas, y algunos componentes internos también. – StaxMan

+0

Dynamo y S3 son arquitecturas totalmente diferentes – leon

+0

Dynamo se puede usar para algunas piezas de S3 (por ejemplo, almacenamiento de metadatos), pero la estructura de almacenamiento primaria no tiene relación alguna –

1

Está más cerca de 2, aunque con contenido almacenado como "BLOB" sin que el sistema se preocupe por el contenido, mientras que CouchDB sí. El almacenamiento de fondo utiliza una base de datos local (BDB?) Para los nodos de clústeres utilizados para almacenar copias múltiples. Las lecturas pueden ir a cualquier nodo que tenga una copia, al igual que las escrituras, pero las escrituras deben resolverse para eliminar conflictos. Como Kevin menciona, esto garantiza "coherencia eventual", pero no ofrece garantías estrictas sobre cuándo, ni qué escritura gana (desde un punto de vista externo, internamente definido).

Reading Dynamo docs es útil para comprender muchos de los conceptos, pero la implementación de AFAIK es diferente. Dynamo es utilizado internamente por Amazon para otros usos. También hay implementaciones de código abierto de ambos; uno interesante es Project Voldemort. CouchDB es obviamente muy interesante también.

2

Ni la arquitectura de Amazon S3 ni su implementación se han hecho públicas. Como tal, no está disponible para la extensión con el fin de desarrollar la capacidad de crear nubes privadas de cualquier tamaño.

Hay algunos artículos sobre temas de arquitectura de almacenamiento en la nube. Puede encontrarlos útiles. Aquí es uno: CACSS: Towards a Generic Cloud Storage Service

El método por el cual diferentes tecnologías se pueden combinar para proporcionar un único excelente rendimiento, el sistema de almacenamiento en la nube altamente escalable y fiable también es detallada. Esta investigación sirve como una fuente de conocimiento para proveedores de nube sin experiencia , dándoles la capacidad de configurar rápidamente sus propios servicios de almacenamiento en la nube