Heim > Artikel > Backend-Entwicklung > Eine kurze Diskussion über die Architektur großer Websysteme
Dynamische Anwendungen beziehen sich auf Netzwerkanwendungssoftware, die in serverseitigen Sprachen wie C/C, PHP, Java, Perl, .net usw. entwickelt wurde, z. B. Foren, Online-Fotoalben, Dating, BLOG usw. Häufige Anwendungen. Dynamische Anwendungssysteme sind normalerweise untrennbar mit Datenbanksystemen, Cache-Systemen, verteilten Speichersystemen usw. verbunden.
Die groß angelegte dynamische Anwendungssystemplattform zielt hauptsächlich auf die zugrunde liegende Systemarchitektur ab, die für Websites mit großem Datenverkehr und hoher Parallelität eingerichtet wurde. Der Betrieb großer Websites erfordert die Unterstützung einer zuverlässigen, sicheren, skalierbaren und einfach zu wartenden Anwendungssystemplattform, um den reibungslosen Betrieb von Website-Anwendungen sicherzustellen.
Große dynamische Anwendungssysteme können in mehrere Subsysteme unterteilt werden:
1) Web-Frontend-System
2) Lastausgleichssystem
3 ) Datenbankclustersystem
4) Caching-System
5) Verteiltes Speichersystem
6) Verteiltes Serververwaltungssystem
7) Codeverteilungssystem
Web-FrontendSystem
Strukturdiagramm:
Um einen Server zu erreichen Teilen für verschiedene Anwendungen. Um einzelne Fehlerquellen, eine zentrale Verwaltung und eine einheitliche Konfiguration zu vermeiden, werden die Server nicht nach Anwendungen aufgeteilt, sondern alle Server werden einheitlich genutzt. Jeder Server kann Dienste für mehrere Anwendungen bereitstellen Die Leistung bestimmter Anwendungen wird erhöht. Durch das Hinzufügen von Serverknoten wird die Leistung des gesamten Serverclusters verbessert, und auch andere Anwendungen profitieren davon. Das Web-Frontend-System basiert auf virtuellen Host-Plattformen wie Apache/Lighttpd/Eginx usw. und bietet eine Betriebsumgebung für das PHP-Programm . Der Server ist für Entwickler transparent und erfordert keinen Eingriff der Entwickler in die Serververwaltung
Lastausgleichssystem
Lastausgleichssysteme werden in zwei Typen unterteilt: Hardware und Software. Der Hardware-Lastausgleich ist hocheffizient, aber teuer, z. B. F5 usw. Software-Lastausgleichssysteme sind kostengünstiger oder kostenlos und weniger effizient als Hardware-Lastausgleichssysteme, reichen jedoch für Websites mit durchschnittlichem oder etwas höherem Datenverkehr aus, wie z. B. LVS und Nginx. Die meisten Websites verwenden eine Kombination aus Hardware- und Software-Lastausgleichssystemen.
Datenbank-Cluster-System
Strukturdiagramm:
Da das Web-Frontend eine Lastausgleichs-Clusterstruktur übernimmt, ist die Effektivität und Erweiterung erhöht Daher muss die Datenbank auch hochzuverlässig sein, um die hohe Zuverlässigkeit des gesamten Dienstsystems zu gewährleisten.
Wir können die in der Abbildung oben gezeigte Lösung übernehmen:
1) Verwenden Sie die MySQL-Datenbank, wenn man bedenkt, dass die Datenbank von Webanwendungen über Folgendes verfügt Mehr Lese- und weniger Schreibfunktionen: Wir optimieren hauptsächlich die Lesedatenbank, stellen dedizierte Lesedatenbanken und Schreibdatenbanken bereit und implementieren Lesevorgänge und Schreibvorgänge in der Anwendung, um jeweils auf verschiedene Datenbanken zuzugreifen.
2) Verwenden Sie den MySQL-Replikationsmechanismus, um die Datenbank der Master-Datenbank (Schreibdatenbank) schnell in die Slave-Datenbank (Lesedatenbank) zu kopieren. Eine Master-Datenbank entspricht mehreren Slave-Datenbanken, und Daten aus der Master-Datenbank werden in Echtzeit mit den Slave-Datenbanken synchronisiert. Knödelmaschine www.yjlmj.com Organisiert und veröffentlicht
3) Es gibt mehrere Schreibdatenbanken, von denen jede von mehreren Anwendungen verwendet werden kann, wodurch das Leistungsengpassproblem und das Single-Point-of-Failure-Problem der Schreibdatenbank gelöst werden können .
4) Es gibt mehrere Lesedatenbanken, und der Lastausgleich wird durch Lastausgleichsgeräte erreicht, wodurch eine hohe Leistung, hohe Zuverlässigkeit und hohe Skalierbarkeit der Lesedatenbank erreicht werden.
5) Trennung von Datenbankserver und Anwendungsserver.
6) Verwenden Sie BigIP für den Lastausgleich aus der Datenbank.
Caching-System
Caching ist in Datei-Cache, Speicher-Cache und Datenbank-Cache unterteilt. Die am häufigsten verwendete und effizienteste Methode in großen Webanwendungen ist das Speicher-Caching. Das am häufigsten verwendete Speicher-Caching-Tool ist Memcached. Durch die Verwendung des richtigen Caching-Systems können die folgenden Ziele erreicht werden:
1. Durch die Verwendung des Caching-Systems kann die Zugriffseffizienz verbessert, der Serverdurchsatz erhöht und die Benutzererfahrung verbessert werden.
2. Reduzieren Sie den Zugriffsdruck auf die Datenbank und den Save-Set-Server.
3. Es gibt mehrere Memcached-Server, um Single Points of Failure zu vermeiden, hohe Zuverlässigkeit und Skalierbarkeit zu bieten und die Leistung zu verbessern.
Verteiltes Speichersystem
Strukturdiagramm:
Websystemplattform Der Speicher Anforderungen weisen die folgenden zwei Merkmale auf:
1) Die Speicherkapazität ist groß und erreicht oft eine Größenordnung, die ein einzelner Server nicht bieten kann, z. B. Fotoalben, Videos und andere Anwendungen. Daher sind professionelle Großspeichersysteme erforderlich.
2) Jeder Knoten im Lastausgleichscluster kann auf jedes Datenobjekt zugreifen, und die Datenverarbeitung jedes Knotens kann auch von anderen Knoten gemeinsam genutzt werden, sodass die von diesen Knoten zu verarbeitenden Daten logisch sind Seien Sie ein Ganzes, keine unabhängigen Datenressourcen.
Daher ist ein leistungsstarkes verteiltes Speichersystem ein sehr wichtiger Bestandteil für umfangreiche Website-Anwendungen. (Eine kurze Einführung in ein verteiltes Speichersystem muss hier hinzugefügt werden.)
Verteiltes Serververwaltungssystem
Strukturdiagramm:
Da der Website-Zugriffsverkehr kontinuierlich zunimmt, werden die meisten Netzwerkdienste extern in Form von Lastausgleichsclustern bereitgestellt. Mit der Erweiterung der Clustergröße kann das ursprüngliche Serververwaltungsmodell, das auf einer einzelnen Maschine basiert, unsere Anforderungen nicht mehr erfüllen Die Anforderungen müssen darin bestehen, Server zentral, gruppiert, stapelweise und automatisiert verwalten zu können und geplante Aufgaben stapelweise ausführen zu können.
Es gibt einige hervorragende Softwareprogramme für verteilte Serververwaltungssysteme, eine der idealeren ist Cfengine. Es kann Server gruppieren und verschiedene Gruppen können Systemkonfigurationsdateien, geplante Aufgaben und andere Konfigurationen anpassen. Es basiert auf der C/S-Struktur. Alle Serverkonfigurations- und Verwaltungsskriptprogramme werden auf dem Cfengine-Server gespeichert, und der verwaltete Server führt das Cfengine-Clientprogramm regelmäßig über eine SSL-verschlüsselte Verbindung aus die neuesten Konfigurationsdateien und Verwaltungsbefehle, Skripte , Patch-Installation und andere Aufgaben.
Mit Cfengine, einem zentralen Serververwaltungstool, können wir die Verwaltung großer Servercluster effizient implementieren. Der verwaltete Server und der Cfengine-Server können an jedem Ort verteilt werden, sofern das Netzwerk schnell und einfach verbunden werden kann automatisierte Verwaltung.
Code-Release-System
Strukturdiagramm:
Mit der kontinuierlichen Zunahme des Website-Zugriffsverkehrs stehen die meisten von uns bereitgestellten Netzwerkdienste unter Last Wenn sich die Clustergröße erweitert, benötigen wir auch eine Programmcode-Version, um der Batch-Verteilung und Aktualisierung von Programmcode in einer Clusterumgebung gerecht zu werden System.
Dieses Veröffentlichungssystem kann uns helfen, die folgenden Ziele zu erreichen:
1) Der Server in der Produktionsumgebung stellt Dienste in Form eines virtuellen Hosts bereit und erfordert keine Eingriffe der Entwickler in die Wartung Durch die Bereitstellung eines Veröffentlichungssystems kann die Implementierung das Programm auf dem Zielserver verteilen, ohne sich beim Server anzumelden.
2) Wir müssen das Management der vier Entwicklungsphasen interne Entwicklung, internes Testen, Testen der Produktionsumgebung und Freigabe der Produktionsumgebung realisieren. Das Release-System kann in jeder Phase in die Codefreigabe eingreifen.
3) Wir müssen Quellcodeverwaltung und Versionskontrolle implementieren, und SVN kann diese Anforderung erfüllen.
Hier können Sie das häufig verwendete Tool Rsync verwenden, um durch die Entwicklung entsprechender Skripttools eine Codesynchronisationsverteilung zwischen Serverclustern zu erreichen.
Das Obige hat eine kurze Diskussion über die Architektur großer Websysteme eingeführt, einschließlich verschiedener Aspekte. Ich hoffe, dass sie für Freunde, die sich für PHP-Tutorials interessieren, hilfreich sein wird.