{"id":37335,"date":"2019-10-31T22:17:01","date_gmt":"2019-10-31T19:17:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kot-shryodingera-bez-korobki-problema-konsensusa-v-raspredelyonnyh-sistemah\/"},"modified":"2019-10-31T22:17:01","modified_gmt":"2019-10-31T19:17:01","slug":"kot-shryodingera-bez-korobki-problema-konsensusa-v-raspredelyonnyh-sistemah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kot-shryodingera-bez-korobki-problema-konsensusa-v-raspredelyonnyh-sistemah","title":{"rendered":"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Stellen Sie sich vor, in einem Raum sind f\u00fcnf Katzen eingesperrt. Um ihren Besitzer zu wecken, m\u00fcssen sie sich gemeinsam darauf einigen, denn die T\u00fcr k\u00f6nnen sie nur zu f\u00fcnft aufdr\u00fccken. Wenn eine der Katzen Schr\u00f6dingers Katze ist und die anderen nichts von ihrer Entscheidung wissen, stellt sich die Frage: \u201eWie k\u00f6nnen sie das anstellen?\u201c <\/p>\n<p>In diesem Artikel erkl\u00e4re ich Ihnen einfach die theoretischen Grundlagen der verteilten Systeme und deren Funktionsprinzipien. Zudem werde ich die zentrale Idee des Paxos-Algorithmus oberfl\u00e4chlich betrachten. <\/p>\n<p><img decoding=\"async\" alt=\"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen\" src=\"\/wp-content\/uploads\/2019\/08\/17c1edb1fca739d29dc4922bbbe820ce.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nWenn Entwickler Cloud-Infrastrukturen nutzen, mit verschiedenen Datenbanken arbeiten oder in Clustern aus vielen Knoten agieren, sind sie \u00fcberzeugt, dass die Daten intakt, sicher und immer verf\u00fcgbar sind. Aber woher kommen diese Garantien?<\/p>\n<p>Im Wesentlichen sind die Garantien, die wir haben, die Garantien des Anbieters. Diese sind in der Dokumentation etwa so beschrieben: \u201eDieser Dienst ist ausreichend zuverl\u00e4ssig, er hat einen festgelegten SLA, machen Sie sich keine Sorgen, alles wird verteilt funktionieren, wie Sie es erwarten.\u201c <\/p>\n<p>Wir neigen dazu, an das Beste zu glauben, denn kluge K\u00f6pfe gro\u00dfer Unternehmen haben uns versichert, dass alles gut wird. Wir stellen uns nicht die Frage: Warum k\u00f6nnte das eigentlich funktionieren? Gibt es eine formale Begr\u00fcndung f\u00fcr die Richtigkeit solcher Systeme?<\/p>\n<p>K\u00fcrzlich war ich auf <noindex><a rel=\"nofollow\" href=\"https:\/\/sptdc.ru\">einer Schule f\u00fcr verteilte Berechnungen<\/a><\/noindex> und war von diesem Thema sehr inspiriert. Die Vorlesungen an der Schule erinnerten eher an Mathematikunterricht als an etwas, das mit Computersystemen zu tun hat. Doch genau so wurden damals die wichtigsten Algorithmen bewiesen, die wir jeden Tag benutzen, oft ohne es zu merken. <\/p>\n<p>In den meisten modernen verteilten Systemen wird der Konsensalgorithmus Paxos und seine verschiedenen Modifikationen verwendet. Das Beste daran ist, dass die Begr\u00fcndung und die grunds\u00e4tzlich m\u00f6gliche Existenz dieses Algorithmus einfach mit Stift und Papier bewiesen werden kann. In der Praxis wird der Algorithmus in gro\u00dfen Systemen eingesetzt, die auf einer enormen Anzahl von Knoten in der Cloud arbeiten. <\/p>\n<p><b class=\"spoiler_title\">Eine einfache Illustration dessen, was als N\u00e4chstes folgt: die Aufgabe der zwei Gener\u00e4le<\/b>Lassen Sie uns zur Aufw\u00e4rmung die <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%B4%D0%B2%D1%83%D1%85_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D0%BB%D0%BE%D0%B2\">Aufgabe der zwei Gener\u00e4le besprechen<\/a><\/noindex>. <\/p>\n<p>Wir haben zwei Armeen \u2013 die Rote und die Wei\u00dfe. Die wei\u00dfen Truppen sind in der belagerten Stadt stationiert. Die roten Truppen unter dem Befehl der Gener\u00e4le A1 und A2 sind auf beiden Seiten der Stadt positioniert. Die Aufgabe der Roten besteht darin, die wei\u00dfe Stadt anzugreifen und zu gewinnen. Allerdings ist das Heer jedes roten Generals f\u00fcr sich genommen kleiner als das der Wei\u00dfen.<\/p>\n<p><img decoding=\"async\" alt=\"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen\" src=\"\/wp-content\/uploads\/2019\/08\/2a684a484d4f6cb3d4e33f2367206d9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Bedingungen f\u00fcr den Sieg der Roten: Beide Gener\u00e4le m\u00fcssen gleichzeitig angreifen, um einen numerischen Vorteil gegen\u00fcber den Wei\u00dfen zu haben. Dazu m\u00fcssen sich die Gener\u00e4le A1 und A2 miteinander abstimmen. Wenn jeder separat angreift, werden die Roten verlieren. <\/p>\n<p>Um sich abzustimmen, k\u00f6nnen die Gener\u00e4le A1 und A2 Boten durch das Gebiet der wei\u00dfen Stadt schicken. Ein Bote kann erfolgreich zu dem verb\u00fcndeten General gelangen oder von den Gegnern abgefangen werden. Die Frage ist: Gibt es eine solche Abfolge der Kommunikation zwischen den roten Gener\u00e4len (die Reihenfolge, in der Boten von A1 zu A2 und umgekehrt von A2 zu A1 geschickt werden), bei der sie garantiert eine Vereinbarung f\u00fcr den Angriff zur Stunde X erreichen? Hierbei wird unter Garantie verstanden, dass beide Gener\u00e4le eine eindeutige Best\u00e4tigung erhalten, dass der Verb\u00fcndete (der andere General) definitiv zur festgelegten Zeit X angreift.<\/p>\n<p>Angenommen, A1 schickt einen Boten zu A2 mit der Nachricht: \u201eLass uns heute Nacht um Mitternacht angreifen!\u201c. General A1 kann nicht angreifen, ohne eine Best\u00e4tigung von General A2 zu erhalten. Wenn der Bote von A1 angekommen ist, sendet General A2 eine Best\u00e4tigung mit der Nachricht: \u201eJa, lass uns heute die Wei\u00dfen \u00fcberfallen\u201c. Aber nun wei\u00df General A2 nicht, ob sein Bote angekommen ist oder nicht, er hat keine Garantie, dass der Angriff gleichzeitig erfolgen wird. Jetzt ben\u00f6tigt General A2 wieder eine Best\u00e4tigung.<\/p>\n<p>Wenn wir ihre Kommunikation weiter ausf\u00fchren, zeigt sich Folgendes: So viele Nachrichtenaustauschzyklen es auch geben mag, es gibt keine M\u00f6glichkeit, beide Gener\u00e4le garantiert dar\u00fcber zu informieren, dass ihre Nachrichten empfangen wurden (vorausgesetzt, einer der Boten k\u00f6nnte abgefangen werden).<\/p>\n<p>Das Problem der zwei Gener\u00e4le ist eine hervorragende Veranschaulichung eines sehr einfachen verteilten Systems, in dem es zwei Knoten mit unzuverl\u00e4ssiger Kommunikation gibt. Das bedeutet, wir haben keine 100% Garantie, dass sie synchronisiert werden. \u00dcber \u00e4hnliche Probleme in gr\u00f6\u00dferem Ma\u00dfstab werden wir sp\u00e4ter im Artikel sprechen.<\/p>\n<h2>Wir f\u00fchren das Konzept der verteilten Systeme ein.<\/h2>\n<p>\nEin verteiltes System ist eine Gruppe von Computern (im Folgenden Knoten genannt), die Nachrichten austauschen k\u00f6nnen. Jeder einzelne Knoten ist eine autonome Einheit. Ein Knoten kann Aufgaben selbstst\u00e4ndig bearbeiten, aber um mit anderen Knoten zu interagieren, muss er Nachrichten senden und empfangen. <\/p>\n<p>Wie genau die Nachrichten implementiert sind und welche Protokolle verwendet werden, ist in diesem Kontext nicht von Interesse. Wichtig ist, dass die Knoten des verteilten Systems Daten austauschen k\u00f6nnen, indem sie Nachrichten senden.<\/p>\n<p>Die Definition scheint nicht sehr kompliziert zu sein, jedoch m\u00fcssen wir ber\u00fccksichtigen, dass ein verteiltes System eine Reihe von Attributen aufweist, die f\u00fcr uns relevant sind.<\/p>\n<h4>Attribute verteilter Systeme<\/h4>\n<p><\/p>\n<ol>\n<li><b>Nebenl\u00e4ufigkeit<\/b> \u2013 die M\u00f6glichkeit gleichzeitiger oder konkurrierender Ereignisse im System. Dar\u00fcber hinaus werden wir davon ausgehen, dass Ereignisse, die auf zwei verschiedenen Knoten auftreten, potenziell konkurrierend sind, solange wir keine klare Reihenfolge dieser Ereignisse haben. Und in der Regel haben wir eine solche klare Reihenfolge nicht.<\/li>\n<li><b>Fehlen globaler Uhren<\/b>. Wir haben keine klare Abfolge von Ereignissen aufgrund des Fehlens globaler Uhren. In der gewohnten Welt der Menschen sind wir daran gew\u00f6hnt, dass wir Uhren und eine absolute Zeit haben. Alles \u00e4ndert sich, wenn es um verteilte Systeme geht. Selbst bei hochpr\u00e4zisen Atomicuhren gibt es Drift, und es k\u00f6nnen Situationen auftreten, in denen wir nicht sagen k\u00f6nnen, welches von zwei Ereignissen zuerst passiert ist. Daher k\u00f6nnen wir uns auch nicht auf die Zeit verlassen.<\/li>\n<li><b>Unabh\u00e4ngiger Ausfall von Systemknoten<\/b>. Es gibt ein weiteres Problem: Etwas kann schiefgehen, einfach weil unsere Knoten nicht ewig funktionieren. Eine Festplatte kann ausfallen, eine virtuelle Maschine in der Cloud kann neu starten, das Netzwerk kann flackern und Nachrichten gehen verloren. Dar\u00fcber hinaus sind Situationen m\u00f6glich, in denen Knoten funktionieren, aber gegen das System arbeiten. Diese letzte Klasse von Problemen hat sogar einen eigenen Namen erhalten: das Problem der <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%B2%D0%B8%D0%B7%D0%B0%D0%BD%D1%82%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D1%85_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D0%BB%D0%BE%D0%B2\">byzantinischen Gener\u00e4le<\/a><\/noindex>. Das bekannteste Beispiel f\u00fcr ein verteiltes System mit diesem Problem ist die Blockchain. Aber heute werden wir diese spezielle Klasse von Problemen nicht betrachten. Uns interessieren Situationen, in denen einfach einer oder mehrere Knoten ausfallen k\u00f6nnen.<\/li>\n<li><b>Kommunikationsmodelle (Nachrichten\u00fcbertragungsmodelle) zwischen Knoten<\/b>. Wir haben bereits festgestellt, dass Knoten durch den Austausch von Nachrichten kommunizieren. Es gibt zwei bekannte Modelle des Nachrichtenaustauschs: synchron und asynchron.<\/li>\n<\/ol>\n<p><\/p>\n<h4>Kommunikationsmodelle zwischen Knoten in verteilten Systemen<\/h4>\n<p>\n<b>Synchrones Modell<\/b> \u2013 wir wissen genau, dass es eine endliche, bekannte Zeitspanne gibt, in der eine Nachricht garantiert von einem Knoten zu einem anderen gelangt. Wenn diese Zeit abgelaufen ist und die Nachricht nicht eingetroffen ist, k\u00f6nnen wir mit Sicherheit sagen, dass der Knoten ausgefallen ist. In einem solchen Modell haben wir eine vorhersehbare Wartezeit. <\/p>\n<p><b>Asynchrones Modell<\/b> \u2013 in asynchronen Modellen nehmen wir an, dass die Wartezeit endlich ist, aber es gibt keine solche Zeitspanne, nach der man garantieren kann, dass ein Knoten ausgefallen ist. Das hei\u00dft, die Wartezeit auf eine Nachricht von einem Knoten kann beliebig lang sein. Dies ist eine wichtige Definition, und wir werden sp\u00e4ter weiter dar\u00fcber sprechen. <\/p>\n<h2>Das Konzept des Konsenses in verteilten Systemen<\/h2>\n<p>\nBevor wir das Konzept des Konsenses formal definieren, betrachten wir ein Beispiel f\u00fcr eine Situation, in der wir ihn ben\u00f6tigen, n\u00e4mlich \u2013 <b>State Machine Replication<\/b>. <\/p>\n<p>Wir haben ein verteiltes Protokoll, das konsistent sein und identische Daten auf allen Knoten des verteilten Systems enthalten sollte. Wenn ein Knoten einen neuen Wert ermittelt, den er in das Protokoll aufnehmen m\u00f6chte, besteht seine Aufgabe darin, diesen Wert allen anderen Knoten anzubieten, damit das Protokoll auf allen Knoten aktualisiert wird und das System in einen neuen konsistenten Zustand \u00fcbergeht. Dabei ist es wichtig, dass die Knoten sich untereinander einigen: Alle Knoten m\u00fcssen zustimmen, dass der vorgeschlagene neue Wert korrekt ist, und alle Knoten m\u00fcssen diesen Wert akzeptieren, bevor sie gemeinsam den neuen Wert in das Protokoll schreiben k\u00f6nnen. <\/p>\n<p>Mit anderen Worten: Kein Knoten hat widersprochen, dass er aktuellere Informationen hat und der vorgeschlagene Wert falsch ist. Die Vereinbarung zwischen den Knoten und die Zustimmung zu einem einheitlichen, anerkannten Wert ist der Konsens in einem verteilten System. Im Folgenden werden wir \u00fcber Algorithmen sprechen, die es einem verteilten System erm\u00f6glichen, Konsens verl\u00e4sslich zu erreichen.<br \/>\n<img decoding=\"async\" alt=\"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen\" src=\"\/wp-content\/uploads\/2019\/08\/300b0834985d5d29286a83b00e6775a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nFormell k\u00f6nnen wir den Konsensalgorithmus (oder einfach den Konsensalgorithmus) als eine Funktion definieren, die ein verteiltes System von Zustand A in Zustand B \u00fcberf\u00fchrt. Dieser Zustand muss von allen Knoten akzeptiert werden, und alle Knoten m\u00fcssen ihn best\u00e4tigen k\u00f6nnen. Wie sich herausstellt, ist diese Aufgabe alles andere als trivial.<\/p>\n<h4>Eigenschaften des Konsensalgorithmus<\/h4>\n<p>\nDer Konsensalgorithmus muss drei Eigenschaften aufweisen, damit das System weiterhin existiert und Fortschritte beim \u00dcbergang von einem Zustand in einen anderen erzielt:<\/p>\n<ol>\n<li><b>Zustimmung <\/b> \u2013 alle korrekt arbeitenden Knoten m\u00fcssen denselben Wert akzeptieren (in Artikeln wird dieses Merkmal auch als Sicherheitsmerkmal bezeichnet). Alle Knoten, die derzeit funktionsf\u00e4hig sind (nicht ausgefallen oder vom Rest getrennt), m\u00fcssen zu einer \u00dcbereinstimmung kommen und einen bestimmten endg\u00fcltigen gemeinsamen Wert akzeptieren.\n<p>Hier ist es wichtig zu verstehen, dass die Knoten in unserem betrachteten verteilten System eine \u00dcbereinstimmung anstreben. Das bedeutet, wir sprechen jetzt \u00fcber Systeme, in denen etwas ausfallen kann (zum Beispiel kann ein Knoten ausfallen). In diesem System gibt es jedoch keine Knoten, die absichtlich gegen andere arbeiten (das Problem der byzantinischen Gener\u00e4le). Durch dieses Merkmal bleibt das System konsistent.<\/li>\n<li><b>Integrit\u00e4t <\/b> \u2014 wenn alle korrekt funktionierenden Knoten denselben Wert anbieten <b>v<\/b>, dann muss jeder korrekt funktionierende Knoten diesen Wert akzeptieren <b>v<\/b>. <\/li>\n<li><b>Beendigung <\/b>\u2013 alle korrekt funktionierenden Knoten werden letztendlich einen bestimmten Wert annehmen (Liveness-Eigenschaft), was es dem Algorithmus erm\u00f6glicht, im System Fortschritte zu erzielen. Jeder einzelne korrekt funktionierende Knoten sollte fr\u00fcher oder sp\u00e4ter den endg\u00fcltigen Wert annehmen und dies best\u00e4tigen: \u201eF\u00fcr mich ist dieser Wert wahr, ich stimme mit dem gesamten System \u00fcberein.\u201c<\/li>\n<\/ol>\n<p><\/p>\n<h4>Beispiel f\u00fcr das Funktionieren eines Konsensalgorithmus<\/h4>\n<p>\nW\u00e4hrend die Eigenschaften des Algorithmus m\u00f6glicherweise nicht ganz verst\u00e4ndlich sind, lassen Sie uns anhand eines Beispiels veranschaulichen, welche Phasen ein einfacher Konsensalgorithmus in einem System mit synchronem Nachrichtenaustausch durchl\u00e4uft, in dem alle Knoten ordnungsgem\u00e4\u00df funktionieren, Nachrichten nicht verloren gehen und nichts kaputtgeht (passiert das wirklich?).<\/p>\n<ol>\n<li>Alles beginnt mit dem Vorschlag (Propose). Angenommen, ein Client hat sich mit einem Knoten namens \u201eKnoten 1\u201c verbunden und eine Transaktion gestartet, indem er dem Knoten einen neuen Wert \u2013 O \u2013 \u00fcbertr\u00e4gt. Ab diesem Moment nennen wir \u201eKnoten 1\u201c <b>proposer<\/b>. Als proposer muss \u201eKnoten 1\u201c nun das gesamte System dar\u00fcber informieren, dass er neue Daten hat, und er sendet an alle anderen Knoten die Nachricht: \u201eSehen Sie! Ich habe den Wert \u201eO\u201c erhalten und m\u00f6chte ihn aufzeichnen! Bitte best\u00e4tigen Sie, dass Sie ebenfalls \u201eO\u201c in Ihr Protokoll aufnehmen werden.\u201c\n<p><img decoding=\"async\" alt=\"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen\" src=\"\/wp-content\/uploads\/2019\/08\/bd6a9394229b8a2a5b0bf987ba53500b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li> Die n\u00e4chste Phase ist die Abstimmung \u00fcber den vorgeschlagenen Wert (Voting). Warum ist sie notwendig? Es k\u00f6nnte sein, dass andere Knoten aktualisierte Informationen erhalten haben, und sie verf\u00fcgen \u00fcber Daten zu derselben Transaktion.\n<p><img decoding=\"async\" alt=\"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen\" src=\"\/wp-content\/uploads\/2019\/08\/7080d6222971c6bab012410ef9e074e1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn der Knoten \u201eKnoten 1\u201c seinen Vorschlag sendet, \u00fcberpr\u00fcfen die anderen Knoten die zugeh\u00f6rigen Daten in ihren Protokollen. Wenn es keine Widerspr\u00fcche gibt, erkl\u00e4ren die Knoten: \u201eJa, ich habe keine anderen Informationen zu diesem Ereignis. Der Wert \u201eO\u201c ist die aktuellste Information, die wir haben.\u201c <\/p>\n<p>In jedem anderen Fall k\u00f6nnen die Knoten \u201eKnoten 1\u201c antworten: \u201eH\u00f6r mal! Ich habe aktuellere Informationen zu dieser Transaktion. Nicht \u201eO\u201c, sondern etwas Besseres.\u201c<\/p>\n<p>In der Abstimmungsphase kommen die Knoten zu einer Entscheidung: Entweder akzeptieren alle einen Wert oder einer von ihnen stimmt dagegen und zeigt an, dass er aktuellere Daten hat. <\/li>\n<li> Wenn die Abstimmungsrunde erfolgreich war und alle \u201ef\u00fcr\u201c gestimmt haben, wechselt das System in die n\u00e4chste Phase \u2013 die Annahme des Wertes (Accept). \u201eKnoten 1\u201c sammelt alle Antworten der anderen Knoten und meldet: \u201eAlle haben dem Wert \u201eO\u201c zugestimmt! Jetzt erkl\u00e4re ich offiziell, dass \u201eO\u201c unser neuer Wert ist, einheitlich f\u00fcr alle! Notiert es euch, vergesst es nicht. Schreibt es in euer Protokoll!\u201c\n<p><img decoding=\"async\" alt=\"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen\" src=\"\/wp-content\/uploads\/2019\/08\/c4bc2af053a27d7030824d45c3ad6def.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li> Die anderen Knoten senden eine Best\u00e4tigung (Accepted), dass sie den Wert \u201eO\u201c gespeichert haben; in der Zwischenzeit sind keine neuen Informationen eingegangen (eine Art zweiphasiger Commit). Nach diesem bedeutsamen Ereignis betrachten wir die verteilte Transaktion als abgeschlossen.<br \/>\n <img decoding=\"async\" alt=\"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen\" src=\"\/wp-content\/uploads\/2019\/08\/2a9c49729f2607099385fee29f45d1f3.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/li>\n<\/ol>\n<p>\nDer Konsensalgorithmus besteht in einfachen F\u00e4llen aus vier Schritten: Vorschlag (propose), Abstimmung (voting), Akzeptanz (accept) und Best\u00e4tigung der Akzeptanz (accepted).<\/p>\n<p>Wenn wir in einem der Schritte keinen Konsens erzielen k\u00f6nnen, wird der Algorithmus neu gestartet, wobei die Informationen ber\u00fccksichtigt werden, die die Knoten bereitstellen, die sich geweigert haben, den vorgeschlagenen Wert zu best\u00e4tigen.<\/p>\n<h2>Der Konsensalgorithmus in einem asynchronen System<\/h2>\n<p>\nBis zu diesem Punkt verlief alles reibungslos, da wir von einem synchronen Nachrichtenmodell sprachen. Aber wir wissen, dass wir in der heutigen Welt alles asynchron erledigen. Wie funktioniert ein \u00e4hnlicher Algorithmus in einem System mit einem asynchronen Nachrichtenmodell, in dem wir davon ausgehen, dass die Wartezeit auf eine Antwort des Knotens beliebig lang sein kann (\u00fcbrigens kann der Ausfall eines Knotens ebenfalls als Beispiel betrachtet werden, bei dem der Knoten beliebig lange antworten kann). <\/p>\n<blockquote><p>Jetzt, da wir wissen, wie der Konsensalgorithmus grunds\u00e4tzlich funktioniert, richtet sich die Frage an die neugierigen Leser, die bis hierher gelesen haben: Wie viele Knoten in einem System mit N Knoten und einem asynchronen Nachrichtenmodell k\u00f6nnen ausfallen, damit das System weiterhin Konsens erreichen kann?<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Die richtige Antwort und die Begr\u00fcndung finden Sie hinter dem Spoiler.<\/b>Die richtige Antwort lautet: <b>0<\/b>. Wenn auch nur ein Knoten in einem asynchronen System ausf\u00e4llt, kann das System keinen Konsens erreichen. Diese Aussage wurde in der bekannten FLP-Theorem (1985, Fischer, Lynch, Paterson, Link zum Original am Ende des Artikels) bewiesen: \u201eDie Unm\u00f6glichkeit, einen verteilten Konsens zu erreichen, wenn mindestens ein Knoten ausf\u00e4llt\u201c.<br \/>\n<img decoding=\"async\" alt=\"Schr\u00f6dingers Katze ohne Box: das Konsensproblem in verteilten Systemen\" src=\"\/wp-content\/uploads\/2019\/08\/92417aafe00841aaa41cbefe0386e21a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLeute, dann haben wir ein Problem, wir sind es doch gewohnt, dass alles asynchron ist. Und jetzt ist da so etwas. Wie geht es weiter? <\/p>\n<p>Wir haben gerade \u00fcber Theorie und Mathematik gesprochen. Was bedeutet \u201eKonsens kann nicht erreicht werden\u201c, wenn wir es von der mathematischen Sprache in unsere \u2013 ingenieurtechnische \u2013 \u00fcbersetzen? Das bedeutet, dass \u201enicht immer ein Konsens erreicht werden kann\u201c, d.h. es gibt einen Fall, in dem Konsens unerreichbar ist. Und welcher Fall ist das? <\/p>\n<p>Dies stellt einen Versto\u00df gegen die oben beschriebene Liveness-Eigenschaft dar. Es gibt kein gemeinsames Einvernehmen und das System kann keinen Fortschritt erzielen (kann nicht innerhalb einer endlichen Zeit abgeschlossen werden), wenn wir keine Antwort von allen Knoten erhalten. Denn in einem asynchronen System haben wir keine vorhersehbare Antwortzeit, und wir k\u00f6nnen nicht wissen, ob ein Knoten ausgefallen ist oder einfach nur lange braucht, um zu antworten.<\/p>\n<p>In der Praxis k\u00f6nnen wir jedoch eine L\u00f6sung finden. Angenommen, unser Algorithmus kann im Falle von Ausf\u00e4llen lange arbeiten (potenziell unbegrenzt). In den meisten Situationen, in denen die meisten Knoten korrekt funktionieren, werden wir Fortschritte im System machen. <\/p>\n<p>In der Praxis arbeiten wir mit teilweise synchronen Kommunikationsmodellen. Teilweise Synchronit\u00e4t wird so verstanden: Im Allgemeinen haben wir ein asynchrones Modell, aber formal wird ein Begriff von \u201eglobaler Stabilisationszeit\u201c an einem bestimmten Zeitpunkt eingef\u00fchrt. <\/p>\n<p>Dieser Zeitpunkt kann lange auf sich warten lassen, doch eines Tages wird er kommen. Der virtuelle Wecker wird l\u00e4uten, und ab diesem Moment k\u00f6nnen wir die Zeitdifferenz vorhersagen, in der Nachrichten ankommen. Von diesem Augenblick an verwandelt sich das System von asynchron in synchron. In der Praxis haben wir es mit genau solchen Systemen zu tun. <\/p>\n<h2>Der Paxos-Algorithmus l\u00f6st Konsensprobleme<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Paxos_(computer_science)\">Paxos <\/a><\/noindex> \u2013 ist eine Familie von Algorithmen, die das Konsensproblem f\u00fcr teilweise synchronisierte Systeme l\u00f6sen, unter der Annahme, dass einige Knoten ausfallen k\u00f6nnen. Der Autor des Paxos-Algorithmus ist <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Leslie_Lamport\">Leslie Lamport<\/a><\/noindex>. Er pr\u00e4sentierte einen formalen Beweis f\u00fcr das Bestehen und die Korrektheit des Algorithmus im Jahr 1989. <\/p>\n<p>Doch der Beweis erb proved sich als alles andere als trivial. Die erste Ver\u00f6ffentlichung erschien erst im Jahr 1998 (33 Seiten) mit einer Beschreibung des Algorithmus. Es stellte sich heraus, dass sie \u00e4u\u00dferst schwer verst\u00e4ndlich war, und im Jahr 2001 wurde eine Erl\u00e4uterung des Artikels ver\u00f6ffentlicht, die 14 Seiten umfasste. Die Umfangsangaben der Ver\u00f6ffentlichungen sollen verdeutlichen, dass das Konsensproblem in der Tat nicht einfach ist und hinter solchen Algorithmen eine enorme Anstrengung der kl\u00fcgsten K\u00f6pfe steht.<\/p>\n<blockquote><p>Interessanterweise bemerkte Leslie Lamport in seinem Vortrag, dass es in dem zweiten erkl\u00e4renden Artikel eine Aussage gibt, eine Zeile (er pr\u00e4zisierte nicht welche), die unterschiedlich interpretiert werden kann. Aus diesem Grund funktionieren viele moderne Implementierungen von Paxos nicht ganz korrekt. <\/p><\/blockquote>\n<p>\nEine detaillierte Analyse der Funktionsweise von Paxos w\u00fcrde mehrere Artikel erfordern, daher versuche ich, die Hauptidee des Algorithmus sehr kurz zu vermitteln. In den Links am Ende dieses Artikels finden Sie Materialien f\u00fcr eine tiefere Auseinandersetzung mit diesem Thema.<\/p>\n<h4>Rollen in Paxos<\/h4>\n<p>\nIm Algorithmus Paxos gibt es das Konzept von Rollen. Schauen wir uns die drei Hauptrollen an (es gibt Modifikationen mit zus\u00e4tzlichen Rollen):<\/p>\n<ol>\n<li><b>Proposers (manchmal auch als: F\u00fchrer oder Koordinatoren bezeichnet)<\/b>. Das sind die Leute, die von einem neuen Wert des Nutzers erfahren und die Rolle des F\u00fchrers \u00fcbernehmen. Ihre Aufgabe ist es, eine Runde zur Vorschlag eines neuen Wertes einzuleiten und die weiteren Aktionen der Knoten zu koordinieren. Dabei erlaubt Paxos in bestimmten Situationen mehrere F\u00fchrer.<\/li>\n<li><b>Acceptors (W\u00e4hler)<\/b>. Dies sind Knoten, die \u00fcber die Annahme oder Ablehnung eines bestimmten Wertes abstimmen. Ihre Rolle ist sehr wichtig, da sie die Entscheidung treffen, in welchen Zustand das System nach der n\u00e4chsten Phase des Konsensalgorithmus \u00fcbergehen wird (oder auch nicht).<\/li>\n<li><b>Lernende<\/b>. Knoten, die einfach den neuen angenommenen Wert annehmen und aufzeichnen, wenn sich der Zustand des Systems ge\u00e4ndert hat. Sie treffen keine Entscheidungen, sondern erhalten nur Daten und k\u00f6nnen diese an den Endbenutzer weitergeben. <\/li>\n<\/ol>\n<p>\nEin Knoten kann in unterschiedlichen Situationen mehrere Rollen kombinieren. <\/p>\n<h4>Der Begriff Quorum<\/h4>\n<p>\nWir nehmen an, dass wir ein System aus <b>N<\/b> Knoten haben. Und aus diesen k\u00f6nnen maximal <b>F<\/b> Knoten ausfallen. Wenn F Knoten ausfallen, muss unser Cluster mindestens <b>2F + 1<\/b> Acceptorknoten. <\/p>\n<p>Dies ist notwendig, damit wir selbst in der schlimmsten Situation immer 'gute', korrekt arbeitende Knoten in der Mehrheit haben. Das hei\u00dft, <b>F + 1<\/b> Die \u201eguten\u201c Knoten, die sich bereit erkl\u00e4rt haben, und der endg\u00fcltige Wert wird angenommen. Andernfalls k\u00f6nnte es zu einer Situation kommen, in der unsere verschiedenen lokalen Gruppen unterschiedliche Werte annehmen und sich nicht einigen k\u00f6nnen. Daher ben\u00f6tigen wir eine absolute Mehrheit, um im Voting zu gewinnen.<\/p>\n<h4>Das Grundkonzept des Paxos-Konsensalgorithmus<\/h4>\n<p>\nDer Paxos-Algorithmus umfasst zwei gro\u00dfe Phasen, die jeweils in zwei Schritte unterteilt sind:<\/p>\n<ol>\n<li><b>Phase 1a: Vorbereiten<\/b>. In der Vorbereitungsphase informiert der Lieder (Proposer) alle Knoten: \u201eWir beginnen eine neue Abstimmungsrunde. Wir haben eine neue Runde. Die Nummer dieser Runde ist n. Jetzt werden wir abstimmen.\u201c W\u00e4hrend er lediglich den Beginn eines neuen Zyklus ank\u00fcndigt, gibt er noch keinen neuen Wert bekannt. Das Ziel dieser Phase besteht darin, eine neue Runde einzuleiten und allen seinen einzigartigen Nummern mitzuteilen. Die Rundenummer ist wichtig; sie muss gr\u00f6\u00dfer sein als alle vorherigen Abstimmungsnummern aller vorherigen Leiter. Denn nur durch die Rundenummer k\u00f6nnen die anderen Knoten im System verstehen, wie aktuell die Daten des Leiters sind. Vermutlich verf\u00fcgen die anderen Knoten bereits \u00fcber Abstimmungsergebnisse aus wesentlich sp\u00e4teren Runden und k\u00f6nnen dem Leiter einfach mitteilen, dass er hinterherh\u00e4ngt.<\/li>\n<li><b>Phase 1b: Versprechen<\/b>. Wenn die Acceptor-Knoten die Nummer des neuen Abstimmungsdurchgangs erhalten haben, gibt es zwei m\u00f6gliche Ergebnisse: \n<ul>\n<li>Die Nummer n der neuen Abstimmung ist h\u00f6her als die Nummer jeder vorherigen Abstimmung, an der der Acceptor teilgenommen hat. In diesem Fall sendet der Acceptor dem Leader ein Versprechen, dass er nicht an weiteren Abstimmungen mit einer niedrigeren Nummer als n teilnehmen wird. Falls der Acceptor bereits f\u00fcr etwas abgestimmt hat (d.h. er hat in der zweiten Phase bereits einen Wert angenommen), f\u00fcgt er seinem Versprechen den angenommenen Wert und die Nummer der Abstimmung, an der er teilgenommen hat, hinzu.<\/li>\n<li>Andernfalls, wenn der Acceptor bereits von einer Abstimmung mit einer h\u00f6heren Nummer wei\u00df, kann er einfach die Vorbereitungsetappe ignorieren und nicht auf den Leader reagieren.<\/li>\n<\/ul>\n<\/li>\n<li><b>Phase 2a: Akzeptieren<\/b>. Der Leader muss auf eine Antwort von einem Quorum (der Mehrheit der Knoten im System) warten, und wenn die erforderliche Anzahl von Antworten erhalten wird, hat er zwei Optionen, wie es weitergeht: \n<ul>\n<li>Einige der Acceptor haben Werte gesendet, f\u00fcr die sie bereits abgestimmt haben. In diesem Fall w\u00e4hlt der Leader den Wert mit der h\u00f6chsten Nummer aus der Abstimmung. Nennen wir diesen Wert x, und er sendet allen Knoten die Nachricht: \u201eAccept (n, x)\u201c, wobei der erste Wert die Abstimmungsnummer aus seinem eigenen Propose-Schritt ist und der zweite Wert derjenige ist, f\u00fcr den alle zusammenkamen, also der Wert, f\u00fcr den wir tats\u00e4chlich abstimmen.<\/li>\n<li>Wenn keiner der Acceptor-Knoten irgendwelche Werte gesendet hat, sondern lediglich versprochen haben, in dieser Runde zu stimmen, kann der F\u00fchrer ihnen vorschlagen, f\u00fcr seinen Wert zu stimmen, den Wert, wegen dem er \u00fcberhaupt F\u00fchrer geworden ist. Nennen wir ihn y. Er sendet an alle Knoten eine Nachricht mit dem Inhalt: \u201eAccept (n, y)\u201c, \u00e4hnlich wie beim vorherigen Ergebnis.<\/li>\n<\/ul>\n<\/li>\n<li><b>Phase 2b: Akzeptiert<\/b>Die Acceptor-Knoten, die die Nachricht \u201eAccept(...)\u201c vom F\u00fchrer erhalten, stimmen nur dann zu und senden eine Best\u00e4tigung an alle Knoten, dass sie mit dem neuen Wert einverstanden sind, wenn sie zuvor nicht versprochen haben, an den Abstimmungen eines (anderen) F\u00fchrers in der Runde teilzunehmen. <b>n' &gt; n<\/b>teilzunehmen, andernfalls ignorieren sie die Anfrage zur Best\u00e4tigung.\n<p>Wenn die meisten Knoten auf den Leader geantwortet haben und alle neuen Wert best\u00e4tigen, wird der neue Wert als akzeptiert angesehen. Hurra! Wenn jedoch die Mehrheit nicht erreicht wird oder es Knoten gibt, die sich weigern, den neuen Wert anzunehmen, beginnt alles von neuem.<\/li>\n<\/ol>\n<p>\nSo funktioniert der Paxos-Algorithmus. Jeder dieser Schritte hat viele Feinheiten, wir haben verschiedene Arten von Ausf\u00e4llen, Probleme mit mehreren Leaders und vieles mehr kaum angesprochen, aber das Ziel dieses Artikels ist es, den Leser auf einer hohen Ebene mit der Welt der verteilten Berechnungen vertraut zu machen.<\/p>\n<p>Es sollte auch beachtet werden, dass Paxos nicht einzigartig ist, es gibt auch andere Algorithmen, wie zum Beispiel <noindex><a rel=\"nofollow\" href=\"https:\/\/raft.github.io\/\">Raft<\/a><\/noindex>, aber das ist ein Thema f\u00fcr einen anderen Artikel.<\/p>\n<h2>Links zu Materialien f\u00fcr weiterf\u00fchrende Studien<\/h2>\n<p>\nAnf\u00e4ngerstufe:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/s\/story\/lets-take-a-crack-at-understanding-distributed-consensus-dad23d0dc95\">How Does Distributed Consensus Works?<\/a><\/noindex>, Preethi Kasireddy, Blogartikel auf Medium<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@nevverlander\/paxos-made-simple-for-real-aa221be7d91b\">Paxos made simple. For real<\/a><\/noindex>, Adi Kancherla, Blogartikel auf Medium<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ittaiab.github.io\/\">Dezentralisierte Gedanken<\/a><\/noindex>, Ittai Abraham, Blog<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ittaiab.github.io\/2019-06-01-2019-5-31-models\/\">Synchronit\u00e4t, Asynchronit\u00e4t und partielle Synchronit\u00e4t<\/a><\/noindex>, Ittai Abraham, Blogartikel<\/li>\n<\/ul>\n<p>\nLeslie Lamport-Stufe:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/groups.csail.mit.edu\/tds\/papers\/Lynch\/jacm85.pdf\">Impossibility of Distributed Consensus with One Faulty Process (FLP Unm\u00f6glichkeit)<\/a><\/noindex>, Fischer, Lynch und Paterson, Forschungsarbeit, 1985<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/lamport.azurewebsites.net\/pubs\/lamport-paxos.pdf\">Das Teilzeitparlament<\/a><\/noindex>, Leslie Lamport, Forschungsarbeit, 1998<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/lamport.azurewebsites.net\/pubs\/paxos-simple.pdf\">Paxos made simple<\/a><\/noindex>, Leslie Lamport, Forschungsarbeit, 2001<\/li>\n<\/ul>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/463469\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c. \u0412 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0437\u0430\u043f\u0435\u0440\u0442\u044b 5 \u043a\u043e\u0442\u043e\u0432, \u0438 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0439\u0442\u0438 \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c \u0445\u043e\u0437\u044f\u0438\u043d\u0430 \u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0432\u0435\u0434\u044c \u0434\u0432\u0435\u0440\u044c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043f\u044f\u0442\u0435\u0440\u043e\u043c \u043d\u0430\u0432\u0430\u043b\u0438\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u043d\u0435\u0451. \u0415\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0432 \u2013 \u043a\u043e\u0442 \u0428\u0440\u0451\u0434\u0438\u043d\u0433\u0435\u0440\u0430, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u0442\u044b \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u041a\u0430\u043a \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c?\u00bb \u0412 \u044d\u0442\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28009,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37335","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u0442\u0430\u043a, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c. \u0412 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0437\u0430\u043f\u0435\u0440\u0442\u044b 5 \u043a\u043e\u0442\u043e\u0432, \u0438 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0439\u0442\u0438 \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c \u0445\u043e\u0437\u044f\u0438\u043d\u0430 \u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0432\u0435\u0434\u044c \u0434\u0432\u0435\u0440\u044c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043f\u044f\u0442\u0435\u0440\u043e\u043c \u043d\u0430\u0432\u0430\u043b\u0438\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u043d\u0435\u0451. \u0415\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0432 \u2013 \u043a\u043e\u0442 \u0428\u0440\u0451\u0434\u0438\u043d\u0433\u0435\u0440\u0430, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u0442\u044b \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u041a\u0430\u043a \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c?\u00bb \u0412 \u044d\u0442\u043e\u0439\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kot-shryodingera-bez-korobki-problema-konsensusa-v-raspredelyonnyh-sistemah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043e\u0442 \u0428\u0440\u0451\u0434\u0438\u043d\u0433\u0435\u0440\u0430 \u0431\u0435\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438: \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u0442\u0430\u043a, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c. \u0412 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0437\u0430\u043f\u0435\u0440\u0442\u044b 5 \u043a\u043e\u0442\u043e\u0432, \u0438 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0439\u0442\u0438 \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c \u0445\u043e\u0437\u044f\u0438\u043d\u0430 \u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0432\u0435\u0434\u044c \u0434\u0432\u0435\u0440\u044c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043f\u044f\u0442\u0435\u0440\u043e\u043c \u043d\u0430\u0432\u0430\u043b\u0438\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u043d\u0435\u0451. \u0415\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0432 \u2013 \u043a\u043e\u0442 \u0428\u0440\u0451\u0434\u0438\u043d\u0433\u0435\u0440\u0430, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u0442\u044b \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u041a\u0430\u043a \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c?\u00bb \u0412 \u044d\u0442\u043e\u0439\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kot-shryodingera-bez-korobki-problema-konsensusa-v-raspredelyonnyh-sistemah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:17:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Schr\u00f6dinger Katze ohne Box: Das Konsensproblem in verteilten Systemen | ProHoster","description":"Stellen wir uns Folgendes vor: In einem Raum sind f\u00fcnf Katzen eingesperrt, und um ihren Besitzer zu wecken, m\u00fcssen sie sich gemeinsam dar\u00fcber einig werden, denn die T\u00fcr k\u00f6nnen sie nur zu f\u00fcnft aufdr\u00fccken. Falls eine der Katzen die Schr\u00f6dinger-Katze ist und die anderen nicht von ihrer Entscheidung wissen, stellt sich die Frage: \u201eWie k\u00f6nnen sie das schaffen?\u201c In diesem","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kot-shryodingera-bez-korobki-problema-konsensusa-v-raspredelyonnyh-sistemah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043e\u0442 \u0428\u0440\u0451\u0434\u0438\u043d\u0433\u0435\u0440\u0430 \u0431\u0435\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438: \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 | ProHoster","og:description":"\u0418\u0442\u0430\u043a, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c. \u0412 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0437\u0430\u043f\u0435\u0440\u0442\u044b 5 \u043a\u043e\u0442\u043e\u0432, \u0438 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0439\u0442\u0438 \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c \u0445\u043e\u0437\u044f\u0438\u043d\u0430 \u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0432\u0435\u0434\u044c \u0434\u0432\u0435\u0440\u044c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043f\u044f\u0442\u0435\u0440\u043e\u043c \u043d\u0430\u0432\u0430\u043b\u0438\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u043d\u0435\u0451. \u0415\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0432 \u2013 \u043a\u043e\u0442 \u0428\u0440\u0451\u0434\u0438\u043d\u0433\u0435\u0440\u0430, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u0442\u044b \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u041a\u0430\u043a \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c?\u00bb \u0412 \u044d\u0442\u043e\u0439","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kot-shryodingera-bez-korobki-problema-konsensusa-v-raspredelyonnyh-sistemah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:17:01+00:00","article:modified_time":"2019-10-31T19:17:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37335","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 17:20:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:28:27","updated":"2026-01-23 17:20:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=37335"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37335\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/28009"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=37335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=37335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=37335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}