Amazon S3 architecture
Alors que le post @ http://highscalability.com/amazon-architecture explique Amazon architecture en général, je suis intéressé à savoir comment Amazon S3 est mis en œuvre.
Certains de mes suppositions sont
- Un système de fichiers distribués comme HDFS
http://hadoop.apache.org/core/docs/current/hdfs_design.html - Non relationnelle persistante DB comme CouchDB
http://couchdb.apache.org/
Est-il possible de mettre en œuvre quelque chose de semblable à ce sur une échelle beaucoup plus petite, à l'aide de langages de script comme Python ou PHP?
Il y a au moins une S3 solution équivalente, que vous pouvez utiliser pour tester les clients contre. Vous pouvez trouver des informations en étudiant le code source et peut-être que vous pourriez l'utiliser dans votre propre projet.
Regardez MogileFS. Ses pas l'API compatible avec le S3, et a beaucoup moins de fonctionnalités que S3, mais il fait le processus de base de la distribution statique des fichiers sur un ensemble de faible coût des serveurs de stockage.
Regardez MogileFS. Ses pas l'API compatible avec le S3, et a beaucoup moins de fonctionnalités que S3, mais il fait le processus de base de la distribution statique des fichiers sur un ensemble de faible coût des serveurs de stockage.
OriginalL'auteur Sukumar | 2009-02-19
Vous devez vous connecter pour publier un commentaire.
Amazon S3 est mis en œuvre à l'aide de l'architecture décrite dans le Dynamo de Papier:
http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
Le document explique cohérente de hachage, et comment et pourquoi la garantie est "la cohérence des résultats".
La résolution des conflits qu'ils parlent pour la Dynamo n'est pas exposés à des utilisateurs de S3. Il est utilisé en interne dans Amazon applications, mais pour les S3, la seule résolution des conflits est la dernière écriture gagne.
Edit: Werner Vogels a dit "Dynamo n'est pas exposé directement de l'extérieur comme un service web; toutefois, le Dynamo et similaires Amazon technologies sont utilisées pour l'alimentation de pièces de notre Amazon Web Services, tels que le S3." http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
Je tiens à souligner qu'il n'est pas en disant S3 et Dynamo partager des composants, il dit explicitement que la Dynamo elle-même est l'une des technologies que le pouvoir S3. Tout ce que j'ai vu de la S3, y compris les mises en garde, est représenté par l'hypothèse S3 est une fantaisie de services web wrapper autour de la Dynamo avec l'authentification, de la comptabilité, et la dernière écriture gagne conflit à résoudre les qui est invisible pour l'utilisateur.
La question d'origine était sur le sous-jacent mécanisme de stockage pour les S3. Il est explicitement pas un système de fichiers distribués comme HDFS ou une base de données non relationnelle comme CouchDB. Dynamo remplit ce rôle.
Dynamo et S3 sont totalement différentes architectures
Dynamo peut être utilisé pour quelques morceaux de S3 (par exemple, le stockage des métadonnées), mais la principale structure de stockage est complètement indépendants
OriginalL'auteur Kevin Peterson
Ni de Amazon S3 architecture, ni ses
la mise en œuvre n'a pas encore été rendu public. En tant que tel,
il n'est pas disponible pour l'extension afin de développer
la capacité de créer des clouds privés de toute taille.
Il y a peu de documents sur le cloud de stockage de l'architecture des sujets. Vous pourriez trouver utiles.
En voici une: CACSS: Vers un Générique Service de Stockage en Nuage
La méthode par laquelle les différents
les technologies peuvent être combinés pour fournir une excellente performance, hautement évolutive et fiable cloud
système de stockage est également détaillé. Cette recherche sert comme une source de connaissances pour les inexpérimentés cloud
fournisseurs, de leur donner la capacité de rapidement la mise en place leurs propres services de stockage en nuage
OriginalL'auteur leon
C'est plus proche de 2, mais avec des contenus stockés comme des "BLOBs" sans système de soins sur le contenu, alors que CouchDB. Backend de stockage utilise un local DB (BDB?) pour les nœuds de clusters utilisé pour stocker plusieurs copies. Lit peut aller à l'un nœud qui a une copie, comme écrit, mais écrit doivent être résolues afin de se débarrasser de conflits. Comme Kevin mentionne, ce qui garantit "la cohérence des résultats", mais ne donne pas de garanties strictes de quand, ou qui écrivent des victoires (à partir de POV externe; à l'interne qui est défini).
Lecture Dynamo docs est utile dans la compréhension de la plupart des concepts, mais autant que je sache, la mise en œuvre est différente. Dynamo est utilisée en interne par Amazon pour d'autres utilisations. Il y a aussi des implémentations open source de les deux; l'une intéressante est Projet De Voldemort.
CouchDB est évidemment très intéressant.
OriginalL'auteur StaxMan