"ZuverlĂ€ssigkeit und ZuverlĂ€ssigkeit wie bei Google" - und nicht nur: Übersetzung des Artikels "Berechnung der ServicezuverlĂ€ssigkeit"

Bild

Die Hauptaufgabe von kommerziellen (und auch nichtkommerziellen) Diensten besteht darin, dem Benutzer immer zur VerfĂŒgung zu stehen. Obwohl alle abstĂŒrzen, stellt sich die Frage, was das IT-Team unternimmt, um sie zu minimieren. Wir haben einen Artikel von Ben Treynor, Mike Dahlin, Vivek Rau und Betsy Beyer „Berechnung der ServicezuverlĂ€ssigkeit“ ĂŒbersetzt, in dem beispielsweise Google erklĂ€rt, warum 100% ein falscher Bezugspunkt fĂŒr den ZuverlĂ€ssigkeitsindikator ist, was die „Regel der vier Neunen“ ist und Wie kann in der Praxis die Machbarkeit großer und kleiner AusfĂ€lle des Dienstes und / oder seiner kritischen Komponenten mathematisch vorhergesagt werden - die erwartete Ausfallzeit, die Zeit, die zum Erkennen eines Fehlers benötigt wird, und die Zeit zum Wiederherstellen des Dienstes.

Berechnung der ServicezuverlÀssigkeit


Ihr System ist so zuverlÀssig wie seine Komponenten


Ben Trainor, Mike Dalin, Vivec Rau und Betsy Beyer


Wie im Buch „ Site Reliability Engineering: ZuverlĂ€ssigkeit und ZuverlĂ€ssigkeit wie bei Google “ (im Folgenden als SRE-Buch bezeichnet) beschrieben, kann durch die Entwicklung von Google-Produkten und -Diensten eine hohe Geschwindigkeit der Freigabe neuer Funktionen erreicht werden, wĂ€hrend aggressive SLO (Service-Level-Ziele, Service-Level-Ziele) beibehalten werden. ) um eine hohe ZuverlĂ€ssigkeit und schnelle Reaktion zu gewĂ€hrleisten. SLOs erfordern, dass der Service fast immer in gutem Zustand und fast immer schnell ist. DarĂŒber hinaus geben SLOs auch die genauen Werte dieses „fast immer“ fĂŒr einen bestimmten Dienst an. SLOs basieren auf folgenden Beobachtungen:


Im allgemeinen Fall ist fĂŒr jeden Softwaredienst oder jedes System 100% der falsche Bezugspunkt fĂŒr den ZuverlĂ€ssigkeitsindikator, da kein Benutzer den Unterschied zwischen 100% und 99.999% VerfĂŒgbarkeit feststellen kann. Zwischen dem Benutzer und dem Dienst gibt es viele andere Systeme (sein Laptop, WLAN zu Hause, Anbieter, Netzteil ...), und alle diese Systeme sind in 99,999% der FĂ€lle nicht verfĂŒgbar, aber viel seltener. Daher geht die Differenz zwischen 99,999% und 100% aufgrund zufĂ€lliger Faktoren verloren, die durch die UnzugĂ€nglichkeit anderer Systeme verursacht werden, und der Benutzer profitiert nicht davon, dass wir uns viel MĂŒhe gegeben haben, um diesen letzten Bruchteil des Prozentsatzes der SystemverfĂŒgbarkeit zu erreichen. Schwerwiegende Ausnahmen von dieser Regel sind Antiblockiersysteme und Herzschrittmacher!


Eine ausfĂŒhrliche Beschreibung der Beziehung zwischen SLOs und SLIs (Service Level Indicators) und SLAs (Service Level Agreements) finden Sie im Kapitel SRE Target Level of Service. In diesem Kapitel wird auch ausfĂŒhrlich beschrieben, wie Metriken ausgewĂ€hlt werden, die fĂŒr einen bestimmten Dienst oder ein bestimmtes System relevant sind. Dies bestimmt wiederum die Auswahl des geeigneten SLO fĂŒr diesen Dienst oder dieses System.


Dieser Artikel erweitert das SLO-Thema, um sich auf Servicekomponenten zu konzentrieren. Insbesondere werden wir untersuchen, wie sich die ZuverlÀssigkeit kritischer Komponenten auf die ZuverlÀssigkeit eines Dienstes auswirkt und wie Systeme entworfen werden, um die Auswirkungen zu verringern oder die Anzahl kritischer Komponenten zu verringern.


Die meisten von Google angebotenen Dienste zielen darauf ab, Nutzern eine ZugĂ€nglichkeit von 99,99 Prozent (manchmal als "vier Neunen" bezeichnet) zu bieten. FĂŒr einige Dienste ist in der Benutzervereinbarung eine niedrigere Anzahl angegeben, das Ziel von 99,99% ist jedoch im Unternehmen gespeichert. Diese höhere Leiste bietet einen Vorteil in Situationen, in denen sich Benutzer lange vor dem Verstoß gegen die Vertragsbedingungen ĂŒber die Leistung des Dienstes beschweren, da das Ziel Nummer 1 des SRE-Teams darin besteht, Benutzer mit den Diensten zufrieden zu stellen. FĂŒr viele Dienste stellt ein internes Ziel von 99,99% den Mittelweg dar, der Kosten, KomplexitĂ€t und ZuverlĂ€ssigkeit in Einklang bringt. FĂŒr einige andere, insbesondere globale Cloud-Dienste, liegt das interne Ziel bei 99,999%.


ZuverlÀssigkeit 99,99%: Beobachtungen und Schlussfolgerungen


Schauen wir uns einige wichtige Beobachtungen und Schlussfolgerungen zum Design und Betrieb des Dienstes mit einer ZuverlÀssigkeit von 99,99% an und fahren wir dann mit der Praxis fort.


Beobachtung Nr. 1: Fehlerursachen


Fehler treten aus zwei HauptgrĂŒnden auf: Probleme mit dem Dienst selbst und Probleme mit kritischen Komponenten des Dienstes. Eine kritische Komponente ist eine Komponente, die im Falle eines Fehlers einen entsprechenden Fehler im Betrieb des gesamten Dienstes verursacht.


Beobachtung Nr. 2: Mathematik der ZuverlÀssigkeit


Die ZuverlÀssigkeit hÀngt von der HÀufigkeit und Dauer der Ausfallzeiten ab. Es wird gemessen durch:


  • Leerlauffrequenz oder umgekehrt: MTTF (mittlere Zeit bis zum Ausfall).
  • Ausfallzeit, MTTR (mittlere Reparaturzeit). Die Ausfallzeit wird durch die Zeit des Benutzers bestimmt: vom Beginn der Fehlfunktion bis zur Wiederaufnahme des normalen Betriebs des Dienstes.
    Somit wird ZuverlÀssigkeit mathematisch als MTTF / (MTTF + MTTR) unter Verwendung der entsprechenden Einheiten definiert.

Schlussfolgerung Nr. 1: Regel der zusÀtzlichen Neunen


Ein Service kann nicht zuverlĂ€ssiger sein als alle seine kritischen Komponenten zusammen. Wenn Ihr Service eine VerfĂŒgbarkeit von 99,99% sicherstellen möchte, sollten alle kritischen Komponenten in deutlich mehr als 99,99% der FĂ€lle verfĂŒgbar sein.
In Google verwenden wir die folgende Faustregel: Kritische Komponenten mĂŒssen im Vergleich zur deklarierten ZuverlĂ€ssigkeit Ihres Dienstes zusĂ€tzliche Neunen bereitstellen - im obigen Beispiel 99,999 Prozent VerfĂŒgbarkeit -, da jeder Dienst mehrere kritische Komponenten sowie seine eigenen spezifischen Probleme aufweist. Dies wird als "Regel der zusĂ€tzlichen Neunen" bezeichnet.
Wenn Sie eine kritische Komponente haben, die nicht genĂŒgend Neunen liefert (ein relativ hĂ€ufiges Problem!), Sollten Sie die negativen Folgen minimieren.


Schlussfolgerung Nr. 2: Mathematik der Frequenz, Erkennungszeit und Erholungszeit


Ein Service kann nicht zuverlĂ€ssiger sein als das Produkt aus der HĂ€ufigkeit von VorfĂ€llen und dem Zeitpunkt der Erkennung und Wiederherstellung. Beispielsweise fĂŒhren drei Abschaltungen pro Jahr von jeweils 20 Minuten zu einer Ausfallzeit von insgesamt 60 Minuten. Selbst wenn der Service den Rest des Jahres einwandfrei funktioniert hĂ€tte, wĂ€re eine ZuverlĂ€ssigkeit von 99,99 Prozent (nicht mehr als 53 Minuten Ausfallzeit pro Jahr) unmöglich.
Dies ist eine einfache mathematische Beobachtung, die jedoch hĂ€ufig ĂŒbersehen wird.


Schlussfolgerung aus den Schlussfolgerungen Nr. 1 und Nr. 2


Wenn das Maß an ZuverlĂ€ssigkeit, auf das sich Ihr Service stĂŒtzt, nicht erreicht werden kann, mĂŒssen Anstrengungen unternommen werden, um die Situation zu korrigieren - entweder durch Erhöhen der VerfĂŒgbarkeit des Service oder durch Minimieren der oben beschriebenen negativen Folgen. Das Verringern der Erwartungen (d. H. Der deklarierten ZuverlĂ€ssigkeit) ist ebenfalls eine Option und hĂ€ufig die zutreffendste: Machen Sie dem von Ihnen abhĂ€ngigen Dienst klar, dass er entweder sein System neu erstellen muss, um den Fehler in der ZuverlĂ€ssigkeit Ihres Dienstes zu kompensieren, oder seine eigenen Service-Level-Ziele zu reduzieren . Wenn Sie die Diskrepanz nicht selbst beseitigen, erfordert ein ausreichend langer Ausfall des Systems zwangslĂ€ufig Anpassungen.


Praktische Anwendung


Schauen wir uns ein Beispiel fĂŒr einen Service mit einer ZielzuverlĂ€ssigkeit von 99,99% an und erarbeiten die Anforderungen fĂŒr seine Komponenten und arbeiten mit seinen Fehlern.


Zahlen


Angenommen, Ihr 99,99-Prozent-Service ist mit den folgenden Merkmalen verfĂŒgbar:


  • Ein grĂ¶ĂŸerer Ausfall und drei kleinere AusfĂ€lle pro Jahr. Das klingt beĂ€ngstigend, aber beachten Sie, dass ein Vertrauensniveau von 99,99% eine große Ausfallzeit von 20 bis 30 Minuten und einige kurze teilweise Abschaltungen pro Jahr impliziert. (Aus der Mathematik geht Folgendes hervor: a) Der Ausfall eines Segments wird aus Sicht von SLO nicht als Ausfall des gesamten Systems angesehen, und b) die GesamtzuverlĂ€ssigkeit wird aus der Summe der ZuverlĂ€ssigkeit der Segmente berechnet.)
  • FĂŒnf kritische Komponenten in Form anderer unabhĂ€ngiger Dienste mit einer ZuverlĂ€ssigkeit von 99,999%.
  • FĂŒnf unabhĂ€ngige Segmente, die nicht nacheinander ausfallen können.
  • Alle Änderungen werden schrittweise segmentweise durchgefĂŒhrt.

Die mathematische Berechnung der ZuverlÀssigkeit lautet wie folgt:


Komponentenanforderungen


  • Die Gesamtfehlergrenze fĂŒr das Jahr betrĂ€gt 0,01 Prozent von 525.600 Minuten pro Jahr oder 53 Minuten (basierend auf dem 365-Tage-Jahr im schlimmsten Fall).
  • Die fĂŒr das Herunterfahren kritischer Komponenten zugewiesene Grenze betrĂ€gt fĂŒnf unabhĂ€ngige kritische Komponenten mit einer Grenze von jeweils 0,001% = 0,005%; 0,005% von 525.600 Minuten pro Jahr oder 26 Minuten.
  • Die verbleibende Fehlergrenze Ihres Dienstes betrĂ€gt 53-26 = 27 Minuten.

Antwortanforderungen fĂŒr das Herunterfahren


  • Erwartete Ausfallzeit: 4 (1 vollstĂ€ndige Abschaltung und 3 Abschaltungen, die nur ein Segment betreffen)
  • Der kumulative Effekt der erwarteten AusfĂ€lle: (1 × 100%) + (3 × 20%) = 1,6
  • Fehlererkennung und -behebung danach: 27 / 1,6 = 17 Minuten
  • Zeit fĂŒr die Überwachung, um einen Fehler zu erkennen und darĂŒber zu informieren: 2 Minuten
  • Zeit, die dem diensthabenden Spezialisten zur Analyse des Alarms eingerĂ€umt wird: 5 Minuten. (Das Überwachungssystem sollte SLO-VerstĂ¶ĂŸe verfolgen und bei jedem Systemausfall ein Signal an den diensthabenden Pager senden. Viele Google-Dienste werden von diensthabenden Schicht-SR-Ingenieuren unterstĂŒtzt, die auf dringende Fragen antworten.)
  • Verbleibende Zeit zur wirksamen Minimierung von Nebenwirkungen: 10 Minuten

Fazit: Hebelwirkung zur Erhöhung der ServicezuverlÀssigkeit


Es lohnt sich, die vorgestellten Zahlen sorgfÀltig zu betrachten, da sie den grundlegenden Punkt betonen: Es gibt drei Haupthebel zur Erhöhung der ZuverlÀssigkeit des Dienstes.


  • Reduzieren Sie die HĂ€ufigkeit von AusfĂ€llen - durch Freigaberichtlinien, Tests, regelmĂ€ĂŸige Bewertungen der Projektstruktur usw.
  • Reduzieren Sie Ihre durchschnittliche Ausfallzeit durch Segmentierung, geografische Isolation, allmĂ€hliche Verschlechterung oder Kundenisolation.
  • Reduzieren Sie die Wiederherstellungszeit - durch Überwachung, Ein-Knopf-RettungsvorgĂ€nge (z. B. ZurĂŒcksetzen auf einen frĂŒheren Status oder HinzufĂŒgen von Standby-Strom), Betriebsbereitschaftspraktiken usw.
    Sie können zwischen diesen drei Methoden abwĂ€gen, um die Implementierung der Fehlertoleranz zu vereinfachen. Wenn es beispielsweise schwierig ist, eine 17-minĂŒtige MTTR zu erreichen, konzentrieren Sie sich auf die Reduzierung der durchschnittlichen Ausfallzeiten. Strategien zur Minimierung nachteiliger Auswirkungen und zur AbschwĂ€chung der Auswirkungen kritischer Komponenten werden spĂ€ter in diesem Artikel ausfĂŒhrlicher erlĂ€utert.

ErlĂ€uterung „Regeln fĂŒr zusĂ€tzliche Neunen“ fĂŒr verschachtelte Komponenten


Ein zufĂ€lliger Leser kann daraus schließen, dass jedes zusĂ€tzliche Glied in der AbhĂ€ngigkeitskette zusĂ€tzliche neun erfordert, so dass zwei zusĂ€tzliche neun fĂŒr AbhĂ€ngigkeiten zweiter Ordnung, drei zusĂ€tzliche neun fĂŒr AbhĂ€ngigkeiten dritter Ordnung usw. erforderlich sind.


Dies ist die falsche Schlussfolgerung. Es basiert auf einem naiven Modell einer Hierarchie von Komponenten in Form eines Baumes mit einer konstanten Verzweigung auf jeder Ebene. In einem solchen Modell, wie in Abb. In 1 gibt es 10 eindeutige Komponenten erster Ordnung, 100 eindeutige Komponenten zweiter Ordnung, 1.000 eindeutige Komponenten dritter Ordnung usw., was zu insgesamt 1.111 eindeutigen Diensten fĂŒhrt, selbst wenn die Architektur auf vier Schichten beschrĂ€nkt ist. Ein Ökosystem hochzuverlĂ€ssiger Dienste mit so vielen unabhĂ€ngigen kritischen Komponenten ist eindeutig unrealistisch.


Bild

Abb. 1 - Komponentenhierarchie: UngĂŒltiges Modell


Eine kritische Komponente an sich kann den Ausfall des gesamten Dienstes (oder Dienstsegments) verursachen, unabhĂ€ngig davon, wo sie sich im AbhĂ€ngigkeitsbaum befindet. Wenn eine bestimmte Komponente von X als AbhĂ€ngigkeit von mehreren Komponenten erster Ordnung angezeigt wird, sollte X daher nur einmal gezĂ€hlt werden, da ihr Ausfall letztendlich zu einem Dienstausfall fĂŒhrt, unabhĂ€ngig davon, wie viele Zwischendienste ebenfalls betroffen sind.


Eine korrekte Lesart der Regel lautet wie folgt:


  • Wenn ein Dienst N eindeutige kritische Komponenten enthĂ€lt, trĂ€gt jede von ihnen 1 / N zur UnzuverlĂ€ssigkeit des gesamten durch diese Komponente verursachten Dienstes bei, unabhĂ€ngig davon, wie niedrig sie in der Hierarchie der Komponenten ist.
  • Jede Komponente sollte nur einmal gezĂ€hlt werden, auch wenn sie mehrmals in der Komponentenhierarchie vorkommt (mit anderen Worten, es werden nur eindeutige Komponenten gezĂ€hlt). Zum Beispiel bei der Berechnung der Komponenten von Service A in Abb. 2, Service B sollte nur einmal berĂŒcksichtigt werden.

Bild

Abb. 2 - Komponenten in der Hierarchie


Betrachten Sie beispielsweise einen hypothetischen Dienst A mit einer Fehlergrenze von 0,01 Prozent. Servicebesitzer sind bereit, die HĂ€lfte dieses Limits fĂŒr ihre eigenen Fehler und Verluste und die HĂ€lfte fĂŒr kritische Komponenten auszugeben. Wenn der Dienst N solche Komponenten hat, erhĂ€lt jede von ihnen 1 / N der verbleibenden Fehlergrenze. Typische Dienste haben hĂ€ufig 5 bis 10 kritische Komponenten, und daher kann jeder von ihnen nur einen zehnten oder einen zwanzigsten Grad der Fehlergrenze von Dienst A ablehnen. Daher sollten kritische Teile des Dienstes in der Regel eine zusĂ€tzliche ZuverlĂ€ssigkeit von neun aufweisen.


Fehlergrenzen


Das Konzept der Fehlergrenzen wird im Buch SRE ausfĂŒhrlich behandelt, hier sollte es jedoch erwĂ€hnt werden. Google SR-Ingenieure verwenden Fehlergrenzen, um die ZuverlĂ€ssigkeit und das Tempo von Updates auszugleichen. Diese Grenze bestimmt den akzeptablen Ausfallgrad fĂŒr den Dienst fĂŒr einen bestimmten Zeitraum (normalerweise einen Monat). Das Fehlerlimit betrĂ€gt nur 1 abzĂŒglich des SLO des Dienstes, sodass der zuvor diskutierte 99,99-prozentige verfĂŒgbare Dienst ein 0,01-prozentiges „Limit“ fĂŒr die UnzuverlĂ€ssigkeit aufweist. Bis der Dienst sein Fehlerlimit innerhalb eines Monats aufgebraucht hat, kann das Entwicklungsteam (innerhalb eines angemessenen Rahmens) neue Funktionen, Updates usw. starten.


Wenn das Fehlerlimit aufgebraucht ist, werden Änderungen am Dienst ausgesetzt (mit Ausnahme dringender Sicherheitskorrekturen und Änderungen, die den Verstoß ĂŒberhaupt verursachen sollen), bis der Dienst die Reserve im Fehlerlimit wieder auffĂŒllt oder bis sich der Monat Ă€ndert. Viele Dienste bei Google verwenden eine Schiebefenstermethode fĂŒr SLO, damit die Fehlergrenze schrittweise wiederhergestellt wird. Bei seriösen Diensten mit einem SLO von mehr als 99,99% ist es ratsam, das Limit vierteljĂ€hrlich und nicht monatlich auf Null zu setzen, da die Anzahl der zulĂ€ssigen Ausfallzeiten gering ist.


Fehlergrenzen beseitigen Spannungen zwischen Abteilungen, die andernfalls zwischen SR-Ingenieuren und Produktentwicklern auftreten könnten, und bieten ihnen ein gemeinsames, datenbasiertes Tool zur Risikobewertung fĂŒr die ProdukteinfĂŒhrung. Sie geben den SR-Ingenieuren und Entwicklungsteams auch das gemeinsame Ziel, Methoden und Technologien zu entwickeln, mit denen sie schneller innovieren und Produkte ohne „aufgeblĂ€htes Budget“ auf den Markt bringen können.


Strategien zur Reduzierung und Reduzierung kritischer Komponenten


An dieser Stelle haben wir in diesem Artikel die sogenannte "Goldene Regel fĂŒr die ZuverlĂ€ssigkeit von Komponenten" festgelegt. Dies bedeutet, dass die ZuverlĂ€ssigkeit einer kritischen Komponente zehnmal höher sein sollte als die angestrebte ZuverlĂ€ssigkeitsstufe des gesamten Systems, damit ihr Beitrag zur UnzuverlĂ€ssigkeit des Systems auf der Fehlerstufe bleibt. Daraus folgt, dass es im Idealfall die Aufgabe ist, möglichst viele Komponenten unkritisch zu machen. Dies bedeutet, dass Komponenten ein geringeres Maß an ZuverlĂ€ssigkeit aufweisen können, sodass Entwickler die Möglichkeit haben, Innovationen vorzunehmen und Risiken einzugehen.


Die einfachste und naheliegendste Strategie zur Reduzierung kritischer AbhĂ€ngigkeiten besteht darin, einzelne Fehlerquellen nach Möglichkeit zu beseitigen. Ein grĂ¶ĂŸeres System sollte in der Lage sein, ohne eine bestimmte Komponente, die keine kritische AbhĂ€ngigkeit oder SPOF darstellt, akzeptabel zu arbeiten.
TatsĂ€chlich können Sie höchstwahrscheinlich nicht alle kritischen AbhĂ€ngigkeiten beseitigen. Sie können jedoch einige Richtlinien fĂŒr das Systemdesign befolgen, um die ZuverlĂ€ssigkeit zu optimieren. Obwohl dies nicht immer möglich ist, ist es einfacher und effizienter, eine hohe SystemzuverlĂ€ssigkeit zu erreichen, wenn Sie die ZuverlĂ€ssigkeit in der Entwurfs- und Planungsphase festlegen und nicht, nachdem das System funktioniert und die tatsĂ€chlichen Benutzer betrifft.


Bewertung der Projektstruktur


Bei der Planung eines neuen Systems oder Dienstes oder bei der Neugestaltung oder Verbesserung eines vorhandenen Systems oder Dienstes kann eine ÜberprĂŒfung der Architektur oder des Projekts eine gemeinsame Infrastruktur sowie interne und externe AbhĂ€ngigkeiten aufzeigen.


Gemeinsame Infrastruktur


Wenn Ihr Dienst eine gemeinsam genutzte Infrastruktur verwendet (z. B. den Hauptdatenbankdienst, der von mehreren Produkten verwendet wird, die Benutzern zur VerfĂŒgung stehen), prĂŒfen Sie, ob diese Infrastruktur ordnungsgemĂ€ĂŸ verwendet wird. Identifizieren Sie die EigentĂŒmer der gemeinsam genutzten Infrastruktur eindeutig als zusĂ€tzliche Projektteilnehmer. Achten Sie auch auf KomponentenĂŒberlastungen. Koordinieren Sie dazu den Startvorgang sorgfĂ€ltig mit den EigentĂŒmern dieser Komponenten.


Interne und externe AbhÀngigkeiten


Manchmal hĂ€ngt ein Produkt oder eine Dienstleistung von Faktoren ab, die außerhalb der Kontrolle Ihres Unternehmens liegen - beispielsweise von Softwarebibliotheken oder Diensten und Daten von Dritten. Die Identifizierung dieser Faktoren minimiert die unvorhersehbaren Folgen ihrer Verwendung.


Planen und entwerfen Sie Systeme sorgfÀltig
Beachten Sie beim Entwurf Ihres Systems die folgenden GrundsÀtze:


Redundanz und Isolation


Sie können versuchen, die Auswirkungen der kritischen Komponente zu verringern, indem Sie mehrere unabhĂ€ngige Instanzen davon erstellen. Wenn das Speichern von Daten in einer Instanz beispielsweise eine VerfĂŒgbarkeit dieser Daten von 99,9 Prozent sicherstellt, ergibt das Speichern von drei Kopien in drei weit verbreiteten Kopien theoretisch eine VerfĂŒgbarkeitsstufe von 1 bis 0,013 oder neun Neunen, wenn der Ausfall der Instanz bei einer Korrelation von Null unabhĂ€ngig ist.


In der realen Welt ist die Korrelation niemals Null (berĂŒcksichtigen Sie die AusfĂ€lle des Backbone-Netzwerks, die viele Zellen gleichzeitig betreffen), sodass die tatsĂ€chliche ZuverlĂ€ssigkeit niemals nahe an neun Neunen heranreicht, sondern drei Neunen bei weitem ĂŒberschreitet.


In Ă€hnlicher Weise kann das Senden eines RPC (Remote Procedure Call) an einen Serverpool im selben Cluster eine 99-prozentige VerfĂŒgbarkeit der Ergebnisse gewĂ€hrleisten, wĂ€hrend das gleichzeitige Senden von drei RPCs an drei verschiedene Serverpools und das Akzeptieren der ersten Antwort zum Erreichen der VerfĂŒgbarkeitsstufe beitragen höher als drei Neunen (siehe oben). Diese Strategie kann auch die Verzögerung der Antwortzeit verkĂŒrzen, wenn die Serverpools gleich weit vom RPC-Absender entfernt sind. (Da die Kosten fĂŒr das gleichzeitige Senden von drei RPCs hoch sind, teilt Google die Zeit fĂŒr diese Anrufe hĂ€ufig strategisch zu: Die meisten unserer Systeme erwarten einen Teil der zugewiesenen Zeit vor dem Senden des zweiten RPC und etwas mehr Zeit vor dem Senden des dritten RPC.)


Reserve und ihre Anwendung


Richten Sie den Start und die Portierung der Software so ein, dass die Systeme weiterhin funktionieren, wenn einzelne Teile ausfallen (ausfallsicher) und sich bei Problemen isolieren. Das Grundprinzip hierbei ist, dass Sie wahrscheinlich Ihre Fehlergrenze ĂŒberschreiten, wenn Sie die Person zum Einschalten der Reserve verbinden.


AsynchronitÀt


Entwerfen Sie Komponenten nach Möglichkeit asynchron, um zu verhindern, dass sie kritisch werden. Wenn ein Dienst eine RPC-Antwort von einem seiner unkritischen Teile erwartet, die eine starke Verlangsamung der Antwortzeit anzeigt, wird durch diese Verlangsamung die Leistung des ĂŒbergeordneten Dienstes unnötig beeintrĂ€chtigt. Wenn Sie den RPC fĂŒr eine nicht kritische Komponente auf den asynchronen Modus einstellen, wird die Antwortzeit des ĂŒbergeordneten Dienstes nicht an die Leistung dieser Komponente gebunden. Und obwohl AsynchronitĂ€t den Code und die Infrastruktur des Dienstes komplizieren kann, lohnt sich dieser Kompromiss dennoch.


Ressourcenplanung


Stellen Sie sicher, dass alle Komponenten mit allem ausgestattet sind, was Sie benötigen. , — .



, \ .



, . . . , .



SLO. , , . , , , MTTR .



, . :


  • ? , .
  • ? ? ?


, , , . :


  • -, .
  • / . .
  • . , , . , ; , .


, : , , . — , . , , , .
, . , Google , 10 .


Fazit


, , , , . , . Google , , (. SRE, B: ).

Source: https://habr.com/ru/post/de435662/


All Articles