Es wurde berichtet, dass Erlang seit über 20 Jahren in Produktionssystemen mit einer Verfügbarkeit von 99,9999999% eingesetzt wird.
Ich habe wie folgt gerechnet:
20*365.25*24*60*60*(1 - 0.999999999) == 0.631 s
Das bedeutet, dass das System innerhalb von 20 Jahren nur weniger als eine Sekunde Ausfallzeit hat. Ich versuche nicht, die Gültigkeit davon in Frage zu stellen, ich bin nur neugierig, wie wir ein System (absichtlich oder versehentlich) für nur 0,631 Sekunden herunterfahren können. Könnte uns jemand, der mit großen Softwaresystemen vertraut ist, dies erklären? Danke dir.
Weiß jemand, wie man die Ausfallzeit eines Dienstes über einen Cluster von Verarbeitungseinheiten (oder Maschinen) berechnet?
Antworten:
Die Zuverlässigkeitszahl sollte nicht die Gesamtzeit messen, die ein Teil
AXD301
(fragliches Projekt) jemals über 20 Jahre lang heruntergefahren wurde. Dies ist die Gesamtzeit in diesen 20 Jahren, in der der vomAXD301
System bereitgestellte Dienst jemals offline war. Subtiler Unterschied. Wie Joe Armstrong hier sagt :Wenn Sie etwas tiefer gehen,
AXD301
lesen Sie in der Doktorarbeit von Joe, dem ursprünglichen Autor von Erlang (einschließlich einer Fallstudie von ):Solange das Netzwerk, zu dem der Switch gehörte, ohne Ausfallzeit lief, kann der Autor "Neun-Neun-Zuverlässigkeit" angeben
AXD301
(was alles war, was er jemals gesagt hat, um Einzelheiten zu vermeiden). Dies bedeutet nicht unbedingt, dass Erlang die einzige Ursache für eine derart hohe Zuverlässigkeit ist.EDIT: In der Tat scheint "20 Jahre" selbst eine Fehlinterpretation. Joe erwähnt im selben Artikel eine Zahl von 20 Jahren, die jedoch nicht mit der Neun-Neun-Zuverlässigkeitszahl zusammenhängt, die möglicherweise aus einer viel kürzeren Studie hervorgegangen ist (wie andere bereits erwähnt haben).
quelle
Während die anderen den speziellen Fall angesprochen haben, nach dem Sie fragen, scheint Ihre Frage auf einem Missverständnis zu beruhen. Die Art und Weise, wie Sie die Frage gestellt haben, lässt mich glauben, dass Sie glauben, dass es einen manuellen Prozess gibt, um das System wieder zum Laufen zu bringen, nachdem es abgestürzt ist oder zur Wartung heruntergefahren wurde.
Erlang verfügt über mehrere Funktionen, die die Arbeitszeit des Menschen als Ursache für Ausfallzeiten verringern:
Hot Code Reload . In einem Erlang-System ist es einfach, ein Ersatzmodul für ein vorhandenes zu kompilieren und zu laden. Der BEAM-Emulator führt den Tausch automatisch durch, ohne anscheinend etwas anzuhalten. Es gibt zweifellos eine winzige Zeitspanne, in der diese Übertragung stattfindet, aber sie erfolgt automatisch in Computerzeit und nicht manuell in menschlicher Zeit. Dies macht es möglich , mit im Wesentlichen zu tun Upgrades null Ausfallzeiten. (Sie könnten Ausfallzeiten haben, wenn das Ersatzmodul einen Fehler aufweist, der das System zum Absturz bringt. Deshalb testen Sie dies, bevor Sie es für die Produktion bereitstellen.)
Vorgesetzte . In die OTP-Bibliothek von Erlang ist ein Überwachungsframework integriert, mit dem Sie festlegen können, wie das System bei einem Absturz eines Moduls reagieren soll. Die Standardaktion besteht darin, das ausgefallene Modul neu zu starten. Angenommen, das neu gestartete Modul stürzt nicht sofort wieder ab, kann die Gesamtausfallzeit Ihres Systems Millisekunden betragen. Ein solides System, das kaum jemals abstürzt, kann im Laufe der Laufzeit nur einen Bruchteil einer Sekunde der gesamten Ausfallzeit ansammeln.
Prozesse . Diese entsprechen in etwa Threads in anderen Sprachen, außer dass sie den Status nur über persistente Datenspeicher gemeinsam nutzen. Ansonsten erfolgt die Kommunikation über die Nachrichtenübermittlung. Da Erlang-Prozesse sehr kostengünstig sind (weitaus billiger als Betriebssystem-Threads), wird ein lose gekoppeltes Design gefördert, sodass bei einem Ausfall eines Prozesses nur ein winziger Teil des Systems Ausfallzeiten aufweist. In der Regel startet der Supervisor diesen einen Prozess neu, ohne dass dies Auswirkungen auf den Rest des Systems hat.
Asynchrone Nachrichtenübermittlung . Wenn ein Prozess einem anderen etwas sagen möchte, gibt es einen erstklassigen Operator in der Erlang-Sprache, der dies ermöglicht. Der Nachrichtensendeprozess muss nicht warten, bis der Empfänger die Nachricht verarbeitet hat, und er muss nicht den Besitz der gesendeten Daten koordinieren. Die asynchrone Funktionsweise des Erlang-Nachrichtenübermittlungssystems sorgt dafür. Dies trägt zur Aufrechterhaltung hoher Betriebszeiten bei, da die Auswirkungen von Ausfallzeiten in einem Teil eines Systems auf andere Teile verringert werden.
Clustering . Dies folgt aus dem vorherigen Punkt: Erlangs Nachrichtenübermittlungsmechanismus funktioniert transparent zwischen Computern in einem Netzwerk, sodass ein Sendevorgang nicht einmal darauf achten muss, dass sich der Empfänger auf einem separaten Computer befindet. Dies bietet einen einfachen Mechanismus zum Aufteilen einer Arbeitslast auf viele Maschinen, von denen jede separat ausfallen kann, ohne die Gesamtbetriebszeit des Systems zu beeinträchtigen.
quelle
Die Verfügbarkeitszahl von 99,9999999% ist eine häufig zitierte, aber grundlegend irreführende Statistik. Mats Cronqvist, eines der AXD-301-Teammitglieder, hielt auf der Erlang Factory-Konferenz 2010 in San Francisco eine Präsentation (Video) (an der ich teilnahm), in der diese genaue Verfügbarkeitsstatistik erörtert wurde. Ihm zufolge wurde es von British Telecom für einen Testzeitraum (ich glaube von Januar bis September 2002) von "5 Knotenjahren" mit dem AXD-301 beansprucht. Am Ende des Versuchs befanden sich 14 Knoten mit Live-Verkehr.
Cronqvist erklärte ausdrücklich, dass dies nicht repräsentativ für die gesamte AXD-301-Geschichte oder Erlang im Allgemeinen sei und dass er nicht glücklich darüber sei, dass Joe Armstrong dies immer wieder zitierte, was zu übertriebenen Erwartungen an Erlangs Zuverlässigkeit führte. Andere haben geschrieben, dass fünf Neunen eine realistischere Zahl sind.
Es sollte gesagt werden, dass ich ein leidenschaftlicher Erlang-Unterstützer und -Entwickler bin, der glaubt, dass der fachmännische Einsatz von Erlang zwar zu sehr hoch verfügbaren Systemen führen kann, aber nur den Hype reduzieren möchte. Ich gehe natürlich davon aus, dass Cronqvists Darstellung der Fakten korrekt ist und keinen Grund hat, etwas anderes zu glauben.
quelle
Ich verstehe diese Statistiken so, dass sie über ALLE AXD301-Systeme in der Produktion berechnet werden. Wir können davon ausgehen, dass ein AXD301 bei einem schwerwiegenden Problem länger als 0,631 Sekunden ausfällt. Während dieser Zeit übernimmt ein anderer AXD301, um das Netzwerk betriebsbereit zu halten.
Wenn Sie jedoch die Gesamtzahl der Stunden aller laufenden AXD301 summieren und das Verhältnis für diejenige festlegen, bei der AXD301 ausfällt, erhalten Sie 99,999999%
So verstehe ich diese Figur.
Ich hoffe das hilft.
quelle