Ernte-, Ertrags- und skalierbare Toleranzsysteme: Eine Zusammenfassung

Dieser Artikel enthält eine Zusammenfassung des 1999 von Eric Brewer & Amando Fox veröffentlichten Papiers „Ernte-, Ertrags- und skalierbare Toleranzsysteme“. Alle nicht zugeordneten Zitate stammen aus diesem Papier.

Das Papier befasst sich mit den Kompromissen zwischen Konsistenz und Verfügbarkeit (CAP) für große Systeme. Es ist sehr einfach, auf CAP zu verweisen und zu behaupten, dass kein System Konsistenz und Verfügbarkeit haben kann.

Aber es gibt einen Haken. Die GAP wurde auf verschiedene Weise missverstanden. Wie Coda Hale in seinem ausgezeichneten Blog-Beitrag „Sie können Partitionstoleranz nicht opfern“ erklärt:

Von der Konsistenz, Verfügbarkeit und Partitionstoleranz des CAP-Theorems ist die Partitionstoleranz in verteilten Systemen obligatorisch. Sie können es nicht nicht wählen. Anstelle von CAP sollten Sie über Ihre Verfügbarkeit in Bezug auf Ertrag (Prozent der erfolgreich beantworteten Anfragen) und Ernte (Prozent der erforderlichen Daten, die tatsächlich in den Antworten enthalten sind) nachdenken und darüber, welche dieser beiden Daten Ihr System bei Fehlern opfern wird.

Das Papier konzentriert sich auf die Erhöhung der Verfügbarkeit von Großsystemen durch Fehlertoleranz, Eindämmung und Isolierung:

Wir gehen davon aus, dass Clients Anfragen an Server stellen. In diesem Fall gibt es mindestens zwei Metriken für das korrekte Verhalten: Ertrag, dh die Wahrscheinlichkeit, mit der eine Anforderung abgeschlossen wird, und Ernte, bei der der Anteil der in der Antwort reflektierten Daten gemessen wird, d. H. Vollständigkeit der Antwort auf die Anfrage.

Die beiden Metriken Ernte und Ertrag lassen sich wie folgt zusammenfassen:

  • Ernte : Daten in Antwort / Gesamtdaten

    Beispiel: Wenn einer der Knoten in einem Cluster mit 100 Knoten ausgefallen ist, beträgt die Ernte für die Dauer des Fehlers 99%.

  • Ausbeute : Anfragen mit Erfolg abgeschlossen / Gesamtzahl der Anfragen

    Hinweis: Der Ertrag unterscheidet sich von der Betriebszeit. Yield befasst sich mit der Anzahl der Anfragen, nicht nur mit der Zeit, zu der das System nicht auf Anfragen antworten konnte.

Das Papier argumentiert, dass es bestimmte Systeme gibt, die jedes Mal perfekte Antworten auf Anfragen erfordern. Es gibt auch Systeme, die gelegentlich unvollständige Antworten tolerieren können.

Um die Gesamtverfügbarkeit unserer Systeme zu erhöhen, müssen wir die erforderlichen Konsistenz- und Verfügbarkeitsgarantien sorgfältig durchdenken.

Handel mit Ernte gegen Ertrag - probabilistische Verfügbarkeit

Fast alle Systeme sind probabilistisch, ob sie es realisieren oder nicht. Insbesondere ist jedes System, das bei einzelnen Fehlern zu 100% verfügbar ist, insgesamt wahrscheinlich verfügbar (da die Wahrscheinlichkeit mehrerer Fehler ungleich Null ist).

Das Papier spricht über das Verständnis der Wahrscheinlichkeitscharakteristik der Verfügbarkeit. Dies hilft beim Verständnis und bei der Begrenzung der Auswirkungen von Fehlern, indem Entscheidungen darüber getroffen werden, was verfügbar sein muss und welche Art von Fehlern das System beheben kann.

Sie beschreiben die lineare Verschlechterung der Ernte bei Fehlern mit mehreren Knoten. Die Ernte ist direkt proportional zur Anzahl der Knoten, die ordnungsgemäß funktionieren. Daher nimmt sie linear ab / zu.

Zur Steigerung des Ertrags werden zwei Strategien vorgeschlagen:

  1. Zufällige Verteilung von Daten auf den Knoten

    Wenn einer der Knoten ausfällt, ändert sich das durchschnittliche und das schlechteste Fehlerverhalten nicht. Wenn die Verteilung jedoch nicht zufällig ist, kann die Auswirkung eines Fehlers je nach Datentyp variieren.

    Wenn beispielsweise nur einer der Knoten, auf denen Informationen zum Kontostand eines Benutzers gespeichert sind, ausfällt, kann das gesamte Bankensystem nicht funktionieren.

  2. Replizieren der wichtigsten Daten

    Dies verringert die Auswirkung für den Fall, dass einer der Knoten, die eine Teilmenge von Daten mit hoher Priorität enthalten, ausfällt.

    Es verbessert auch die Ernte.

Eine weitere bemerkenswerte Beobachtung in diesem Artikel ist, dass es möglich ist, alle Ihre Daten zu replizieren. Es trägt nicht viel zur Verbesserung Ihrer Ernte / Ihres Ertrags bei, erhöht jedoch die Betriebskosten erheblich. Dies liegt daran, dass das Internet auf Best-in-Effort-Protokollen basiert, die niemals 100% Ernte / Ertrag garantieren können.

Anwendungszerlegung und orthogonale Mechanismen

Die zweite Strategie konzentriert sich auf die Vorteile des Entwurfs orthogonaler Systeme.

Zunächst wird festgestellt, dass große Systeme aus Subsystemen bestehen, die Fehler nicht tolerieren können. Sie versagen jedoch auf eine Weise, die es dem gesamten System ermöglicht, weiter zu funktionieren, was sich auf den Nutzen auswirkt.

Der eigentliche Vorteil besteht in der Möglichkeit, die Statusverwaltung jedes Subsystems separat bereitzustellen und eine starke Konsistenz oder einen dauerhaften Status nur für die Subsysteme bereitzustellen, die dies benötigen, nicht für die gesamte Anwendung. Die Einsparungen können erheblich sein, wenn nur wenige kleine Subsysteme die zusätzliche Komplexität erfordern.

Das Papier besagt, dass orthogonale Komponenten völlig unabhängig voneinander sind. Sie haben keine Laufzeitschnittstelle zu anderen Komponenten, es sei denn, es gibt eine Konfigurationsschnittstelle. Dadurch kann jede einzelne Komponente unabhängig ausfallen und die Auswirkungen auf das Gesamtsystem minimieren.

Die Zusammensetzung von orthogonalen Subsystemen verschiebt die Last der Überprüfung auf möglicherweise schädliche Interaktionen von der Laufzeit zur Kompilierungszeit, und der Einsatz von orthogonalen Schutzmechanismen verbessert die Robustheit für die auftretenden Laufzeitinteraktionen, indem eine verbesserte Fehlerbegrenzung bereitgestellt wird.

Das Ziel dieser Arbeit war es, die Forschung auf dem Gebiet der Entwicklung fehlertoleranter und hochverfügbarer Großsysteme zu motivieren.

Wenn Sie sorgfältig über die Konsistenz und Verfügbarkeit nachdenken, muss die Anwendung dies gewährleisten. Neben den Kompromissen ist es in der Lage, in Bezug auf Ernte gegen Ertrag zu machen.

Wenn Ihnen dieses Papier gefallen hat, drücken Sie bitte den Klatschknopf, damit mehr Leute es sehen. Vielen Dank.

PS - Wenn Sie es bis hierher geschafft haben und eine E-Mail erhalten möchten, wenn ich einen dieser Beiträge veröffentliche, melden Sie sich hier an.