Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Amazon's Dynamo: Ein verteiltes Speichersystem für Schlüssel/Wert- Paare mit schließlicher Konsistenz Von Benjamin Riedel.

Ähnliche Präsentationen


Präsentation zum Thema: "Amazon's Dynamo: Ein verteiltes Speichersystem für Schlüssel/Wert- Paare mit schließlicher Konsistenz Von Benjamin Riedel."—  Präsentation transkript:

1 Amazon's Dynamo: Ein verteiltes Speichersystem für Schlüssel/Wert- Paare mit schließlicher Konsistenz Von Benjamin Riedel

2 Vortrag: Amazon's Dynamo Benjamin Riedel 2  weltgrößter Online-Versandhandel  40 Logistikzentren auf m²  Angestellte  Allein in Deutschland: Höchstmarke von 2,8 Mio Bestellungen pro Tag

3 Vortrag: Amazon's Dynamo Benjamin Riedel 3 Anforderungen Maximale Verfügbarkeit Keine Downtimes Geringe Antwortzeiten auch bei ausgefallenen Servern Writes müssen jederzeit verarbeitet werden können Hohe Skalierbarkeit Keine obere Grenze für Systemgröße Hardwareheterogenität erlauben Das leistet aktuell kein RDBMS!

4 Vortrag: Amazon's Dynamo Benjamin Riedel 4 Dynamo Amazon entwickelt selbst Systeme, die zu diesen Anforderungen passen Bisheriger Höhepunkt: Dynamo (2006)

5 Vortrag: Amazon's Dynamo Benjamin Riedel 5 Überblick Allgemeine Grundlagen Aufbau von Dynamo Konsistenz und Verfügbarkeit Ausblick

6 Vortrag: Amazon's Dynamo Benjamin Riedel 6 Datenzugriff get(key) Gibt Objekt oder Versionsliste eines Objektes zu einem bestimmten Schlüssel, sowie einen Kontext zurück put(key, context, object) Schreibt Objekt mit Kontext an der Stelle eines Schlüssel ins System Sowohl Schlüssel als auch Objekt werden als Byte-Array betrachtet. Allgemeine Grundlagen

7 Vortrag: Amazon's Dynamo Benjamin Riedel 7 Nutzung Alles wird durch Services realisiert Bestseller Listen Warenkorb Präferenzen... Jeder Service kann ein eigenes Speichersystem haben Jeder Service, der nur direkte Key-Zugriffe benötigt nutzt Dynamo (z.B die oberen Drei) Allgemeine Grundlagen

8 Vortrag: Amazon's Dynamo Benjamin Riedel 8 Datenspeicherung Daten werden lokal auf Knoten gespeichert Dabei kann je nach Präferenz des Services entschieden werden, was zur Speicherung verwendet wird Berkeley Database MySQL Buffer im Arbeitsspeicher mit persistenter Speicherung Allgemeine Grundlagen

9 Vortrag: Amazon's Dynamo Benjamin Riedel 9 Hohe Ansprüche Services rufen sich gegenseitig auf Damit es zu keinen Verzögerungen kommt: Service Level Agreements Jeder Service versichert eine Regelantwortzeit bei bestimmter Last (z.B. 300ms bei 500 Anfragen/Sekunde) Die Regel heißt für Amazon: 99,9% der Fälle! Allgemeine Grundlagen

10 Vortrag: Amazon's Dynamo Benjamin Riedel 10 Consistent Hashing Dynamoknoten sind ringförmig angeordnet Dieser Ring wird auf einen Ring aller möglichen MD5-Hashs (128bit) abgebildet Aufbau von Dynamo

11 Vortrag: Amazon's Dynamo Benjamin Riedel 11 Consistent Hashing (Forts.) Schlüssel werden ebenfalls gehashed Schlüsselhash legt fest, wo im Ring etwas gespeichert wird Jeder Knoten verwaltet den Bereich zwischen seinem Vorgänger und sich Aufbau von Dynamo

12 Vortrag: Amazon's Dynamo Benjamin Riedel 12 N Jede Datei wird auf N Knoten gespeichert Dabei werden die im Uhrzeigersinn ersten N gesunden Knoten von der Schlüsselposition aus gewählt Für Schlüssel k wären dies B, C, D Aufbau von Dynamo

13 Vortrag: Amazon's Dynamo Benjamin Riedel 13 Virtual Nodes System läuft auf Standardhardware Geschwindigkeit der einzelnen Server stark unterschiedlich Um Stärke schnellerer Server zu nutzen, verwaltet jeder Server ( )mehrere virtuelle Knoten Aufbau von Dynamo

14 Vortrag: Amazon's Dynamo Benjamin Riedel 14 Serververteilung Dynamo ist für den Umgang mit Ausfällen ausgelegt Defekte Serverhardware Netzwerkprobleme Stromausfälle Naturkatastrophen … Daher sind die Rechenzentren weltweit verteilt Aufbau von Dynamo

15 Vortrag: Amazon's Dynamo Benjamin Riedel 15 Server hinzufügen Neuer Server wird im System angemeldet Übernimmt entsprechend seiner Größe x Knoten von anderen Servern Bsp: neuer Server ( ) übernimmt Knoten C Aufbau von Dynamo

16 Vortrag: Amazon's Dynamo Benjamin Riedel 16 Server entfernen Analog zum Hinzufügen Restliche Server übernehmen gleichmäßig entsprechend ihrer Stärke Knoten des entfernten Bsp: Server wird entfernt Aufbau von Dynamo

17 Vortrag: Amazon's Dynamo Benjamin Riedel 17 Gossip Jeder Server hat Informationen über die anderen Server im Ring Pro Sekunde vergleicht jeder Server seine Informationen mit einem zufälligen anderen Server Aufbau von Dynamo

18 Vortrag: Amazon's Dynamo Benjamin Riedel 18 R & W Dynamo lässt Nutzer entscheiden, auf wie viele der N Kopien der Schreibzugriff bzw der Lesezugriff erfolgreich sein muss Gesteuert über Variablen R(read) und W (write) Aus Verfügbarkeitsgründen nutzen viele Services Werte von R < N und W < N Dies kann dazu führen, dass die Daten im System nicht konsistent sind Aufbau von Dynamo

19 Vortrag: Amazon's Dynamo Benjamin Riedel 19 R & W (Forts.) Bsp: Häufige Konfiguration: N=3, R=2, W=2 Knoten 1 fällt aus Update auf Datei x erreicht nur K2 und K3 K1 funktioniert wieder, K2 fällt aus get() auf Datei x, es kommen die Versionen von K1 und K3 zurück, also die Version vor dem Update und die danach System muss erkennen, welche neuer ist Konsistenz & Verfügbarkeit

20 Vortrag: Amazon's Dynamo Benjamin Riedel 20 Vector Clocks Im Kontext steht, welcher Server wie oft einen Schreibzugriff auf eine Datei koordiniert hat Dies erfolgt über Vector Clocks Eine VC Instanz kann z.B. so aussehen:  ([Sx,1], [Sy,2]) So kann erkannt werden, ob Versionen voneinander abstammen und sie ggf. vereinigen Falls Versionen nicht automatisch zu vereinigen sind, erfolgt Semantic Reconciliation, d.h Service bekommt alle Versionen und muss selbst mit Hilfe von Hintergrundinformationen vereinigen Konsistenz & Verfügbarkeit

21 Vortrag: Amazon's Dynamo Benjamin Riedel 21 Vector Clocks (Forts.) Bsp: Sx schreibt 2 mal Datei Sy schreibt in diese Version Sz schreibt in dieselbe Version, ohne die von Sy zu kennen Sx bekommt und schreibt das Ergebnis der Sem. Reconc. Konsistenz & Verfügbarkeit

22 Vortrag: Amazon's Dynamo Benjamin Riedel 22 Semantic Reconciliation - Zahlen Von allen Services bekommen auf ihre Anfrage an Dynamo 99,94% 1 Kopie zurück 0,00057% 2 Kopien zürück 0,00047% 3 Kopien zurück 0,00009% 4 Kopien zurück Konsistenzprobleme trotz nicht vollständig konsistentem System selten! Konsistenz & Verfügbarkeit

23 Vortrag: Amazon's Dynamo Benjamin Riedel 23 Sloppy Quorum Bei einem System der Größe Amazons gibt es ständig Ausfälle Dynamo ist dafür optimiert Verfügbarkeit wichtigstes Kriterium Bei Ausfall eines Knotens übernimmt der nächste Knoten Sloppy Quorum bedeutet: Um die Anforderungen durch R & W zu erfüllen, reicht es, wenn R/W beliebige Knoten Erfolg zurückmelden – es müssen nicht die eigentlich zuständigen Server sein Konsistenz & Verfügbarkeit

24 Vortrag: Amazon's Dynamo Benjamin Riedel 24 Sloppy Quorum (Forts.) B fällt aus C ist nun verantwortlich für den Bereich von B E muss Objekte von B mitspeichern Wenn B wiederkommt, schickt E Objekte an B Konsistenz & Verfügbarkeit

25 Vortrag: Amazon's Dynamo Benjamin Riedel 25 Hinted Handoff Woher weiß E, was er rüberschicken muss? Alle Dateien, die über Sloppy Quorum auf einem Knoten gespeichert werden, werden in einer separaten DB gespeichert Zusätzlich ist markiert (hinted), wo sie eigentlich hätten gespeichert werden sollen E prüft regelmäßig, ob die Knoten, für die es Dinge in der separaten DB gespeichert hat, wieder erreichbar sind Konsistenz & Verfügbarkeit

26 Vortrag: Amazon's Dynamo Benjamin Riedel 26 Merkle Trees Im Fehlerfall sollen nach Rückkehr eines ausgefallenen Knotens A nicht alle Objekte vom Ersatzknoten B zu A gesendet werden. Stattdessen werden nur geänderte Objekte übertragen Auswahl geänderter Objekte erfordert normalerweise Prüfung aller Objekte Alternative: Jeder Knoten hat für jeden Objektsatz einen Merkle Tree Konsistenz & Verfügbarkeit

27 Vortrag: Amazon's Dynamo Benjamin Riedel 27 Merkle Trees (Forts.) Bäume, die in ihren Knoten einen Hash des durch den Knoten aufgespannten Teilbaumes speichern Genutzt zum Vergleich zweier Bäume Haben zwei (Teil)Bäume den selben Hashwert, dann sind sie identisch Konsistenz & Verfügbarkeit

28 Vortrag: Amazon's Dynamo Benjamin Riedel 28 DynamoDB gestartet Teil der Amazon Web Services (AWS) Mietbarer NoSQL-Datenbank-Service, der mit Dynamo arbeitet Bereits im März mehrere Mrd. Zugriffe pro Tag erreicht Genutzt von z.B. News International, Electronic Arts, IMDb Im Juni bereits Jahresziele übertroffen Ausblick

29 29 Vielen Dank!

30 Vortrag: Amazon's Dynamo Benjamin Riedel 30 Quellen Amazon-Bestellungen-an-nur-einem-Tag.html ( , Verkaufsrekord) ( , Werner Vogels) Dynamo: Amazon's Highly Available Key-value Store (2007, DeCandia, Deniz Hastorun, Jampani, Kakulapati, Lakshman, Pilchin, Sivisubramanian, Vosshall, Vogels) Eventually Consistent (2007, Werner Vogels)

31 31


Herunterladen ppt "Amazon's Dynamo: Ein verteiltes Speichersystem für Schlüssel/Wert- Paare mit schließlicher Konsistenz Von Benjamin Riedel."

Ähnliche Präsentationen


Google-Anzeigen