Hohe Parallelität (Hohe Parallelität) bezieht sich normalerweise darauf, durch Design sicherzustellen, dass das System viele Anforderungen gleichzeitig parallel verarbeiten kann.
Im Allgemeinen besteht der effektive Weg zur Lösung des Problems hoher WEB-Parallelität in der Verwendung einer linear skalierbaren Mehrschicht verteilte Architektur , Die Struktur meines Produktionsprojekts ist so, ich möchte sie hier vorstellen.
Webserver (Nginx): (Empfohlenes Lernen: PHP-Video-Tutorial)
Diese Ebene kann in Kombination mit Intelligence DNS einfach verteilt und bereitgestellt werden Durch die Lösung können Single Points of Failure leicht verhindert und der regionale Zugriff beschleunigt werden. In Kombination mit LVS lässt sich ein Lastausgleich leicht erreichen.
Diese Schicht ist hauptsächlich für die Verarbeitung statischer Anfragen und die Weiterleitung von PHP-Anfragen an den PHP-Verarbeitungsknoten der zweiten Schicht verantwortlich. Dies kann für die statische Ressourcenadresse (http://misc.xxxx.com) gelten Separat bereitgestellt oder kommerzielle Cloud-Speicherdienste direkt nutzen (Qiniu ist gut in China und Amazon S3 im Ausland)
PHP-Verarbeitungsknoten:
Ein Knoten ist eigentlich ein System Das überwacht einen bestimmten Port. Prozess- und Webserveranforderungen werden über den Load Balancer verteilt (ich verwende den Load Balancer von AWS), was eine sehr einfache Verteilung und einen Lastausgleich ermöglicht.
Ich verwende immer noch php-fpm, das mit PHP geliefert wird. Tatsächlich ist die Leistung von hhvm von Facebook sehr leistungsstark, aber es kann den Unit-Test meines Projekts nicht zu 100 % bestehen hhvm reift
Cache:
Die Funktion dieser Schicht besteht hauptsächlich darin, Datenbank-E/A zu reduzieren und den Zugriff auf heiße Daten zu beschleunigen Daher werde ich nicht auf Details eingehen. Die eine besteht darin, eine Cache-Verarbeitung auf der globalen Ebene des Programms hinzuzufügen, die effektive Trefferquote ist jedoch nicht vorhanden Einige Projekte sind möglicherweise nicht dafür geeignet. Das Hinzufügen eines Caches zum Datenzugriffspunkt ist hoch , und es gibt fast keine ungültigen Caches. Dies ist, was ich verwende.
Datenbank:
Mein aktueller Projektdatenumfang ist nicht groß und ich verwende vorerst nur eine einzige Datenbank, aber die Programmlogik ist für die lineare Umsetzung bereit Erweiterung der Datenbank.
Tatsächlich ist die Erweiterung der Datenbankschicht ein Klischee. Die übliche Methode besteht darin, die Grundlage für den frühen Code zu legen B. Atlas von 360, Cobar von Alibaba Baba, TDDL von Taobao, Middleware kann ohne umfangreiche Codeänderungen erweitert werden, die spezifischen Nutzungsszenarien sind jedoch noch begrenzt und bestimmte Projekte müssen einzeln untersucht werden.
Andere:
Je nach Projekt kann die Architektur auch Warteschlangen selektiv verwenden. Derzeit verwende ich Beanstalkd, und Redis ist auch eine gute Wahl. Die häufigsten Verwendungsumgebungen für Warteschlangen sind das Senden von E-Mails und das Pushen von Nachrichten vor Ort. In einigen Szenarien kann es jedoch auch als Puffer für die Kerndatenbank verwendet werden. Es ist auch eine gute Wahl für den Umgang mit großer Parallelität oder plötzlichem Datenverkehr 🎜>
Das obige ist der detaillierte Inhalt vonWas bedeutet eine PHP-Website mit hoher Parallelität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!