In einem verteilten System laufen Komponenten in getrennten Prozessen oder auf verschiedenen Rechnern. Diese Komponenten können Anwendungsdienste, Datenbankreplikate oder Hintergrund-Worker sein. Da das System in so viele Teile aufgeteilt ist, muss häufig eine Komponente mit einer anderen kommunizieren, um etwas zu erledigen, und dabei möglicherweise auf deren Antwort warten.
Sie können sich Koordination als genau diese Kommunikation zwischen Komponenten vorstellen. Zum Beispiel könnte ein Dienst darauf warten, dass ein anderer Dienst eine Anfrage genehmigt. Eine Datenbank wartet möglicherweise auf die Bestätigung ihrer Replikate. Ein Worker wartet möglicherweise auf eine Sperre. Jede dieser Wartezeiten fügt eine Abhängigkeit hinzu, und genau dort geraten verteilte Systeme in Schwierigkeiten.
Dieser Artikel untersucht, warum Koordination für verteilte Systeme eine Herausforderung darstellt. Er behandelt, warum Koordination schwierig wird, wie sie mit der Skalierung eines Systems zunimmt und wie sie reduziert werden kann. Entwickler, die die Stellen minimieren, an denen Komponenten aufeinander warten müssen, können Systeme bauen, die widerstandsfähiger, besser skalierbar und einfacher zu betreiben sind.
Die zentrale Idee lautet, dass Unabhängigkeit in der Regel der Koordination vorzuziehen ist. Wenn eine Komponente ohne das Warten auf andere vorankommen kann, toleriert das System Ausfälle, Latenzspitzen und Last in der Regel souveräner. Die Strategien für den Umgang mit Koordination, wenn sie sich nicht vermeiden lässt, sind Thema der folgenden Abschnitte.
Quelle: ByteByteGo · Zusammengefasst von HeadlinesBriefing