Einzelne Website auf mehreren Servern

Einzelne Website auf mehreren Servern

Bitte verzeihen Sie mir, wenn ich falsche Terminologie verwende. Ich habe versucht, nach meiner Frage zu suchen, bin mir aber nicht ganz sicher, wie ich sie so einfach formulieren soll, dass sie für eine Suche geeignet ist. Ich fanddieser BeitragUnddieser Beitragdie zwar relevant sind, aber nicht genau meine Fragen beantworten.

Wie wird der Anwendungscode selbst gespeichert und verwaltet (die Datenbank einmal außen vor gelassen) bei Websites, die eine große Anzahl von Servern benötigen? Der Einfachheit halber nehmen wir an, dass serverfault.com von 10 Servern betrieben wird. Haben alle 10 dieser Server genau denselben Code oder würden bestimmte Teile des Codes auf verschiedene Server aufgeteilt? Wenn sie alle genau denselben Code haben, welche Tools verwenden Administratoren, um sicherzustellen, dass die Server genau denselben Code enthalten? Ich kann mir vorstellen, dass schlimme Dinge passieren können, wenn ein Server zufällig anderen Code enthält.

Nun zur Datenbank ... Wenn Sie eine riesige Datenmenge in einem SQL-basierten Speichersystem haben, wie wird das verwaltet? Sind die Tabellen selbst auf mehrere Server verteilt oder wäre es im Allgemeinen so, dass die Tabelle „Benutzer“ diesen Server erhält, die Tabelle „Beiträge“ diesen Server erhält usw.? Wie geht ein so großer Gigant wie Facebook oder Twitter damit um?

Ich habe meinen ersten Server mit Apache unter Ubuntu auf einer AWS-Mikroinstanz eingerichtet. Gibt es kostenlose Tools, die ich ausprobieren kann, um dies zu tun? Ich habe Load Balancer auf AWS gefunden, aber die Beschreibungen beziehen sich eher darauf, wie man sie zum Laufen bringt, nicht darauf, wie die Daten selbst gespeichert und/oder abgerufen werden.

Danke

Antwort1

Dies nennt man Load Balancing. Ein Load Balancer leitet Anfragen an mehrere Server weiter, auf denen genau der gleiche Code geladen ist.

Was die Datenbank betrifft, geschieht dies normalerweise durch Datenbankreplikation auf mehrere Server und Aufteilung der Daten auf mehrere Datenbanken. (Beispiel: Die „Facebook-Dinge“ von Benutzer A werden auf DB-Server A gespeichert, die Daten von Benutzer B werden auf Server B gespeichert usw.)

Wenn Sie mehr wissen möchten, finden Sie hier eine Sammlung von Dingen zu Facebook und seiner Architektur: https://stackoverflow.com/questions/3533948/facebook-architecture

Also für Ihr Szenario:

  • Laden Sie den gleichen Code auf mehrere Server
  • Einrichten eines Load Balancers

verwandte Informationen