


So maximieren Sie die Parallelitätsfähigkeit des PHP-Servers innerhalb begrenzter Ressourcen
Angenommen, die Bewerbungs-App verbraucht 5 W RMB für Einkäufe bei Lieferanten. Am Tag der Registrierung strömt eine große Anzahl von Kandidaten herein und die Anzahl der gleichzeitigen Anfragen steigt auf über 30 W, was dazu führt, dass das System ausfällt und ablehnt Service, und Kandidaten können sich nicht registrieren. Kann 5W RMB 30W+ unterstützen?
Aber für uns könnten wir das Problem genauso gut aus einem anderen Blickwinkel betrachten: „Wie kann man die Parallelitätsfähigkeit des Servers innerhalb begrenzter Ressourcen maximieren?“ Angenommen, Sie sind ein technischer Leiter. Wie würden Sie ein Projekt mit einem hohen Maß an Parallelität entwerfen und strukturieren?
Zunächst können wir die allgemeine Idee dieses Projekts zusammenfassen. Aus der obigen Beschreibung ist nicht schwer zu erkennen, dass der Engpass dieses Projekts eher im „gleichzeitigen Schreiben“ als im „Lesen“ liegt Was die Ressourcenzuteilung betrifft, können wir uns dem „Schreiben“ zuwenden. Hier schreibe ich alle Daten in Redis. Darüber hinaus müssen wir unser Bestes geben, um MySQL-Lesevorgänge auf Redis zu migrieren. Die von MySQL geleistete Arbeit ist eher auf einige herkömmliche nicht gleichzeitige Lese- und Schreibvorgänge ausgerichtet.
Server
Wenn eine Benutzeranfrage eingeht, lädt der Load Balancer sie auf jeden Server
Dies sind Stresstestdaten von Symfony mit 1 CPU, 4 GB und PHP 7-Konfiguration.
Die Daten im obigen Bild stammen von der offiziellen Swoole-Website. Nachdem wir die Ausführung unserer eigentlichen Geschäftslogik hinzugefügt haben, können wir feststellen, dass 3 Server mit niedrigerer Konfiguration das Problem lösen können. Für die Lösung des obigen Problems sind 16 Einheiten erforderlich.
Datenbank
Tatsächlich werden viele Leute verstehen, dass die Engpässe vieler aktueller Internetprojekte eher im Datenbank-E/A-Bereich liegen Besonders großer Unterschied zwischen den verschiedenen Sprachen. Einschließlich der viel kritisierten PHP-FPM-Startmethode können Sie diese auch durch Swoole und andere Methoden ersetzen. Daher konzentrieren wir uns in diesem Projekt mehr auf die Datenbank und können versuchen, Redis zur Lösung zu verwenden. Natürlich müssen wir im spezifischen Code auch eine bestimmte Anzahl von Datenverbindungspools vorbereiten. Darüber hinaus wird auch davon ausgegangen, dass die Schreibgeschwindigkeit von MongoDB bei gleicher Konfiguration zwar viel schneller ist als die von MySQL, im Vergleich zu Redis jedoch immer noch offensichtliche Mängel aufweist.
Registrieren und Anmelden
Registrierung und Anmelden sollten eigentlich in zwei Teile unterteilt werden, die jeweils dem „Schreiben“ und dem „Lesen“ entsprechen. Im Falle einer hohen Anzahl gleichzeitiger Lese- und Schreibvorgänge wird die direkte Verwendung von MySQL erwartungsgemäß explodieren. Daher können wir Benutzerdaten während des Erstellungsprozesses des gesamten Projekts in Redis zwischenspeichern. „Schreib“-Problem: Wenn die Anzahl der Benutzer unklar ist und die Parallelität groß ist, bevorzuge ich es, Benutzerdaten nicht direkt in der Datenbank zu speichern. Wir können einen Schalter oder Schwellenwert entwerfen, um die Lagerhaltungsmethode des Benutzers festzulegen. Wenn die Parallelität groß ist, können Benutzer die Lagerhaltung asynchron über MQ durchführen, aber in normalen Zeiten können Benutzer die Lagerhaltung normal durchführen.
Formular absenden
Da es sich bei diesem Projekt nicht um einen gewöhnlichen Flash-Sale handelt und eine sofortige Benachrichtigung erforderlich ist, reduziert das Design unseres Projekts die Schwierigkeit erheblich. Die Funktion des Absendens des Formulars ähnelt der Registrierung. Wir können die Daten vollständig asynchron in die Datenbank laden und sie dann im Hintergrund überprüfen.
Zusammenfassung
Ob andere CDNs und MySQL Master-Slave benötigen, wird nicht im Detail beschrieben, es hängt von der tatsächlichen Situation ab. Wenn Sie PHP-FPM verwenden, kostet die Lösung dieses Projektproblems etwa 4.500 Yuan/Monat. Was ich erklären möchte ist das, wenn wir mit großen gleichzeitigen Projekten konfrontiert sind, insbesondere wenn die Geschäftslogik relativ komplex ist, können wir das Problem besser lösen, indem wir residenten Speicher verwenden, und das hat nichts mit der Sprache zu tun. Abschließend ist zu beachten, dass es sich bei dem oben Gesagten nur um eine theoretische Phase handelt und die tatsächlichen Daten weiterer Tests bedürfen. Das Material des Artikels stammt aus dem Internet. Wenn es fehlerhafte Formulierungen gibt, weisen Sie bitte darauf hin.
Das obige ist der detaillierte Inhalt vonSo maximieren Sie die Parallelitätsfähigkeit des PHP-Servers innerhalb begrenzter Ressourcen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...
