2009-02-19 33 views
9

Podczas gdy post @http://highscalability.com/amazon-architecture wyjaśnia ogólnie architekturę Amazona, interesuje mnie wiedza na temat implementacji usługi Amazon S3.Architektura Amazon S3

Niektóre moje domysły są

  1. Rozproszony system plików jak HDFS http://hadoop.apache.org/core/docs/current/hdfs_design.html
  2. Non relacyjny trwałe DB jak CouchDB http://couchdb.apache.org/

Czy jest możliwe aby zaimplementować coś podobnego do to na znacznie mniejszą skalę przy użyciu języków skryptowych takich jak Python czy PHP?

+0

Istnieje co najmniej [jeden] (https://sourceforge.net/projects/s3mockup/) Równoważne rozwiązanie S3, którego można używać do testowania klientów. Możesz znaleźć informacje, studiując kod źródłowy, a może będziesz mógł go użyć w swoim własnym projekcie. –

+0

Spójrz na MogileFS. To nie jest API kompatybilne z S3 i ma o wiele mniej funkcji niż S3, ale robi podstawowy proces dystrybucji plików statycznych na zestaw tanich serwerów pamięci masowej. – melo

Odpowiedz

5

Amazon S3 jest realizowany za pomocą architekturę opisaną w Dynamo księgi:

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

Dokument wyjaśnia spójną mieszania i jak i dlaczego gwarancja jest „ewentualna konsekwencja”.

Rozwiązanie konfliktu, o którym rozmawiają dla Dynamo, nie dotyczy użytkowników S3. Jest wykorzystywany wewnętrznie w aplikacjach Amazon, ale dla S3 jedynym rozwiązaniem rozwiązywania konfliktów jest ostatni zapis.

Edytuj: Werner Vogels powiedział: "Dynamo nie jest bezpośrednio eksponowane na zewnątrz jako usługa internetowa, jednak Dynamo i podobne technologie Amazon są wykorzystywane do zasilania części naszych Amazon Web Services, takich jak S3." http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

Chciałbym podkreślić, że nie mówi on o składnikach S3 i Dynamo, mówi wprost, że samo Dynamo jest jedną z technologii, które zasilają S3. Wszystko, co widziałem z S3, w tym zastrzeżenia, jest brane pod uwagę przy założeniu, że S3 jest fantazyjnym opakowaniem usług internetowych wokół Dynamo z uwierzytelnianiem, księgowaniem i rozwiązaniem konfliktu ostatniego zapisu i wygranej, które jest niewidoczne dla użytkownika.

Pierwotne pytanie dotyczyło mechanizmu przechowywania danych w S3. Nie jest to wyraźnie rozproszony system plików, taki jak HDFS lub nierelacyjna baza danych, taka jak CouchDB. Dynamo wypełnia tę rolę.

+1

Nie sądzę, że to prawda. Cele Dynamo różnią się znacznie od S3 (Dynamo jest używane w przypadku koszyków sklepowych i podobnych przypadków użycia, wielu zapisów, rozstrzygania konfliktów dostarczanych przez aplikacje, krótkich wartości) niż w przypadku S3 (prosty magazyn kluczy/wartości, z dużymi wartościami, bez konfliktu związanego z treścią I tak, wewnętrzne impl & design są zupełnie inne (AFAIK) Architektonicznie dzielą wiele rzeczy i niektóre wewnętrzne komponenty – StaxMan

+0

Dynamo i S3 są zupełnie innymi architekturami – leon

+0

Dynamo może być używane do niektórych elementów S3 (np. Przechowywanie metadanych), ale podstawowa struktura pamięci jest całkowicie niepowiązana –

1

Jest bliżej 2, chociaż z treścią przechowywaną jako "BLOB" bez systemu dbającego o zawartość, natomiast CouchDB ma. Magazyn zaplecza używa lokalnej bazy danych (BDB?) Dla węzłów klastrów używanych do przechowywania wielu kopii. Odczyt może przejść do dowolnego węzła, który ma kopię, tak jak pisze, ale zapisy muszą zostać rozwiązane, aby pozbyć się konfliktów. Jak wspomina Kevin, gwarantuje to "ostateczną spójność", ale nie daje ścisłych gwarancji, kiedy i które zapisują wygrane (z zewnętrznego POV, wewnętrznie zdefiniowanego).

Czytanie dokumentów Dynamo jest przydatne w zrozumieniu wielu koncepcji, ale implementacja AFAIK jest inna. Dynamo jest używane wewnętrznie przez Amazon do innych celów. Istnieją również implementacje open source obu; jeden interesujący to Project Voldemort. CouchDB jest oczywiście bardzo interesujący.

2

Żadna z architektury Amazon S3 ani jej implementacja nie została jeszcze opublikowana. Jako taki, nie jest dostępny do przedłużenia w celu opracowania zdolności do tworzenia chmur prywatnych o dowolnym rozmiarze.

Istnieje kilka artykułów na tematy architektury przechowywania w chmurze. Możesz je znaleźć przydatne. Oto jeden: CACSS: Towards a Generic Cloud Storage Service

Sposób, który można łączyć różne technologii w celu zapewnienia jednego doskonałą wydajność, bardzo niezawodne i skalowalne chmura system magazynowania jest szczegółowe. To badanie służy jako źródło wiedzy dla niedoświadczonych dostawców usług w chmurze , co daje im możliwość szybkiego konfigurowania własnych usług przechowywania w chmurze.