Heim  >  Artikel  >  Backend-Entwicklung  >  Skalierbarkeitsdesign der Website-Architektur

Skalierbarkeitsdesign der Website-Architektur

高洛峰
高洛峰Original
2016-11-03 14:59:381027Durchsuche

In den Anfängen der Website-Entwicklung waren wir es gewohnt, den gesamten Code in ein Projekt zu schreiben.

Frontend, Backend, Cache, Datenbank, statische Ressourcen ... usw.

Physische Trennung von Website-Systemen

Langsam wird das System immer größer und muss offensichtlich einem hohen gleichzeitigen Zugriff durch eine große Anzahl von Benutzern standhalten und riesige Datenmengen speichern.

Viele Benutzeranfragen können nicht auf einem Server erledigt werden.

Viele zwischengespeicherte Daten und Datenbankdaten können nicht auf einem Server abgeschlossen werden.

An diesem Punkt wird die Skalierbarkeitsarchitektur der Website besonders wichtig.

Wie unten gezeigt.

Skalierbarkeitsdesign der Website-Architektur

Prinzip

Wir stellen ein Ganzes aus mehreren Servern zusammen, um gemeinsam Dienste bereitzustellen, indem wir dem Cluster kontinuierlich Server hinzufügen. Zugriffsdruck und wachsender Datenspeicherbedarf.

Das Hauptkriterium zur Messung der Skalierbarkeit einer Architektur:

Wie einfach es ist, dem Cluster neue Server hinzuzufügen.

Kann ein neuer Server beim Hinzufügen den gleichen Dienst wie der ursprüngliche Server bereitstellen?

Gibt es eine Grenze für die Gesamtzahl der Server, die im Cluster untergebracht werden können?

Anwendungsserver-Cluster

Solange keine Daten auf dem Server gespeichert sind, sind alle Server gleich und Server können über Lastausgleichsgeräte zum Cluster hinzugefügt werden.

Relationaler Datenbankcluster (MYSQL)

Die Cluster-Skalierbarkeitslösung der relationalen Datenbank muss außerhalb der Datenbank implementiert werden. Server mit mehreren bereitgestellten Daten werden durch Routing-Partitionierung und andere Mittel zu einem Cluster zusammengefasst. .

Zum Beispiel: MySQL usw.

Nicht-relationaler Datenbankcluster (NOSQL)

Nicht-relationale Datenbanken sind von Natur aus für große Datenbanken vorbereitet und unterstützen daher die Skalierbarkeit sehr gut.

Zum Beispiel: Redis, Memcache usw.

Cache-Server-Cluster

Das Hinzufügen eines neuen Servers kann dazu führen, dass das Cache-Routing ungültig wird, sodass auf die meisten zwischengespeicherten Daten im Cluster nicht mehr zugegriffen werden kann.

Vor der Bereitstellung muss der Cache-Routing-Algorithmus verbessert werden, um die Zugänglichkeit der zwischengespeicherten Daten sicherzustellen.

Statischer Ressourcenservercluster

Ressourcen wie CSS, JS, IMG usw. werden im Servercluster bereitgestellt, um den Datenverkehr zu reduzieren und die Seitenrenderinggeschwindigkeit zu erhöhen.

Vertikale Trennung der Website

Trennung und Bereitstellung verschiedener Teile des Geschäftsverarbeitungsprozesses, um Systemskalierbarkeit zu erreichen.

Wie unten gezeigt.

Skalierbarkeitsdesign der Website-Architektur

Horizontale Trennung der Website

Getrennte Bereitstellung verschiedener Geschäftsmodule, um Skalierbarkeit des Systems zu erreichen.

Wie unten gezeigt.

Skalierbarkeitsdesign der Website-Architektur

Eine einzelne Funktion skaliert über die Clustergröße.

Durch die Trennung und Bereitstellung verschiedener Funktionen kann ein gewisser Grad an Skalierbarkeit erreicht werden, aber mit der allmählichen Zunahme der Website-Besuche kann selbst die unabhängige Bereitstellung eines einzelnen Servers mit der neuesten Granularität nicht den Anforderungen der Unternehmensgröße gerecht werden.

Daher muss ein Servercluster verwendet werden, d. h. derselbe Dienst wird auf mehreren Servern bereitgestellt, um einen Cluster für allgemeine externe Dienste zu bilden.

Zum Beispiel: Suchfunktion.

Wenn ein Server 1.000 Anforderungsdienste pro Sekunde bereitstellen kann und sich die Website in Spitzenzeiten befindet, beträgt die Anzahl der Suchbesuche pro Sekunde 10.000.

Anschließend müssen Sie 10 Server bereitstellen, um einen Cluster zu bilden.

Ähnlich wird diese Situation auch bei Cache-Servern auftreten.

Tatsächlich müssen Sie bei der Berechnung der Clustergröße eines Dienstes dessen Auswirkungen auf Verfügbarkeit, Leistung und die Auswirkungen zugehöriger Dienstcluster berücksichtigen.

Zusammenfassung

Cluster-Skalierbarkeit kann in Anwendungsserver-Cluster-Skalierbarkeit und Datenserver-Cluster-Skalierbarkeit unterteilt werden.

Aufgrund der unterschiedlichen Verwaltung des Datenstatus ist auch die technische Umsetzung dieser beiden Cluster sehr unterschiedlich.

Jeder kann eine eingehende Recherche auf der Grundlage jedes spezifischen Architekturentwurfs durchführen.

Der Artikel ist dem Buch „Technical Architecture of Large Websites“ entlehnt.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn