Designprobleme für die verteilte Service-Governance?
Ich habe C verwendet, um das [Registrierungscenter] des Mikrodienstes zu implementieren, und eine hohe Verfügbarkeit für dieses Registrierungscenter implementiert. Mein Dienstnetzwerk kommuniziert über TCP. Wenn der Dienst online geht, wird er im [Registrierungscenter] registriert. Registration Center] wird diese Serveradresse an [Service Consumer] senden. Auf diese Weise enthält der [Service Consumer] alle [Microservice Maps]. Mein Lastausgleich erfolgt im [Service Consumer], um es ganz klar auszudrücken: Der [Service Consumer] muss im Speicher liegen, also ist er sehr Für Python ist es wichtig, dass es einfacher ist, aber für PHP ist es gleichbedeutend mit einem Todesurteil. So transformieren Sie PHP, damit traditionelles FPM diese Architektur unterstützen kann. Es scheint, dass Dubbo auf ähnliche Weise erstellt wird. Wenn das Frontend also in PHP erstellt wird, wäre das dann nicht ein bisschen nervig?
Antwortinhalt:
Es gibt zwei Methoden des Lastausgleichs:Client-Lastausgleich, typischerweise Finagle und Dubbo. Der Vorteil besteht darin, dass es einfach zu implementieren ist, der Dienst direkt verbunden ist und eine gute Leistung aufweist. Der Nachteil besteht darin, dass Sie bei der Verwendung mehrerer Sprachen für jede Sprache einen Client implementieren müssen.
Serverseitiger Lastausgleich, typische Lastausgleicher sind Nginx und HAProxy. Normalerweise wird dem Dienst ein Reverse-Proxy vorangestellt. Der Client kommuniziert mit dem Server über einen Reverse-Proxy, und die spezifische Lastausgleichslogik wird vom Lastausgleicher implementiert. Auch der Load Balancer selbst kann bei der Registry registriert werden. Der Vorteil besteht darin, dass der Client sehr einfach ist und mehrere Sprachen unterstützt. Der Nachteil ist, dass es zu einem leichten Leistungsverlust kommt.
Die konkrete Wahl hängt vom Unternehmen und der Technologieauswahl des Unternehmens ab. In einem mehrsprachigen Szenario spart die serverseitige Lösung eine Menge Wartungskosten. Wenn es ein Team gibt, das den Client verwaltet, werde ich es natürlich nicht erwähnen. Was muss das Team schließlich tun?
Für reine Java-Szenarien wurden bereits Dubbo oder ähnliche Frameworks verwendet. Wenn das Framework bereits Unterstützung bietet, machen Sie sich keine Sorgen.
Zurück zum Hauptszenario: Wenn Sie die Diensterkennung im PHP-Dienst implementieren müssen, können Sie die Dienstregistrierung zwischenspeichern, z. B. im Memcache, und sie von Zeit zu Zeit erneut abrufen.
und höher Die einfachste (und wahrscheinlich zuverlässigste) Lösung ist, einen Agenten auf dem PHP-Server auszuführen, um Ihr Registrierungscenter zu überwachen. Wenn PHP von FPM aufgerufen wird, lesen Sie diese Konfiguration .
Im Allgemeinen verfügen fast alle Frameworks über Konfigurationsdateien. Sie können diese Datei einfach direkt ändern. Durch die Änderung entstehen keine Kosten (da Sie auch die Konfigurationsdatei lesen müssen). Diese Entwurfsmethode hat nun gewisse Vorteile, das heißt, einige Funktionen, die zum Service-Bus gehören, wurden vollständig auf den Service-Consumer-Knoten verlagert. Auf diese Weise verfügt der Bus selbst über leichtere Funktionen und verwaltet nur die Service-Registrierung und die Verteilung der Registrierung Information. Die Ausfallzeit des Registrierungscenters hat grundsätzlich keinen Einfluss auf den Serviceverbrauch und -aufruf.
Angesichts des gerade erwähnten Problems gibt es zwei Lösungen: Die eine besteht darin, die Fähigkeiten des Service-Agenten zurück zum Bus zu verbessern, einschließlich Routing und Lastausgleich. Wenn Sie dies nicht möchten, können Sie auch die Einrichtung eines separaten Servers in Betracht ziehen, um die Dienstverbrauchs- und Routing-Balancing-Logik auf diesem Server zu implementieren. Dieser Server kann als Back-End-Proxy betrachtet werden, der der PHP-Anwendung entspricht. Ich denke, dass der Einsatz des Client-Lastausgleichs in Microservices ein wichtiger Trend ist. Erstens bietet er Leistungsvorteile. Zweitens ist die Zuverlässigkeit höher. Der Client selbst muss Leistungsschalter und Dienste implementieren. Für Logik wie Downgrade wäre es eine gute Idee, eine einfache Lastausgleichslogik zu implementieren. Ich bin mit PHP nicht sehr vertraut. Ist es möglich, die Dienstkonfiguration in eine bestimmte service_config.php-Datei zu schreiben und diese service_config.php in andere Dateien einzubinden? Enthält den Zeitstempel der zuvor erkannten Datei. Wenn eine bestimmte Zeit (z. B. 1 Minute) überschritten wird, wird die Konfigurationsschreibdatei erneut vom Registrierungscenter abgerufen. Zwei Lösungen
1. Swoole
Swoole: PHPs asynchrone, parallele, leistungsstarke Netzwerkkommunikations-Engine
Sie können Swoole verwenden, um einen permanenten internen Test-PHP-Server zu schreiben
2. Cache
Verwenden Sie APCu (PHP: APCu - Handbuch) oder Redis, um die Serveradressliste zwischenzuspeichern
Sehen Sie sich die spezifischen Leistungsanforderungen und Konsistenzanforderungen der Dienstliste an. Die Konsistenzanforderungen sind relativ hoch, der Cache kann kürzer sein, und wenn Sie sich Sorgen über den Netzwerk-Overhead beim Lesen und Schreiben des Redis-Caches machen, können Sie einen lokalen Cache wie APCu verwenden swoole

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



PHP verwendet MySQLI- und PDO-Erweiterungen, um in Datenbankvorgängen und serverseitiger Logikverarbeitung zu interagieren und die serverseitige Logik durch Funktionen wie Sitzungsverwaltung zu verarbeiten. 1) Verwenden Sie MySQLI oder PDO, um eine Verbindung zur Datenbank herzustellen und SQL -Abfragen auszuführen. 2) Behandeln Sie HTTP -Anforderungen und Benutzerstatus über Sitzungsverwaltung und andere Funktionen. 3) Verwenden Sie Transaktionen, um die Atomizität von Datenbankvorgängen sicherzustellen. 4) Verhindern Sie die SQL -Injektion, verwenden Sie Ausnahmebehandlung und Schließen von Verbindungen zum Debuggen. 5) Optimieren Sie die Leistung durch Indexierung und Cache, schreiben Sie hochlesbarer Code und führen Sie die Fehlerbehandlung durch.

PHP wird verwendet, um dynamische Websites zu erstellen. Zu den Kernfunktionen gehören: 1. Dynamische Inhalte generieren und Webseiten in Echtzeit generieren, indem Sie eine Verbindung mit der Datenbank herstellen; 2. Verarbeiten Sie Benutzerinteraktions- und Formulareinreichungen, überprüfen Sie Eingaben und reagieren Sie auf Operationen. 3. Verwalten Sie Sitzungen und Benutzerauthentifizierung, um eine personalisierte Erfahrung zu bieten. 4. Optimieren Sie die Leistung und befolgen Sie die Best Practices, um die Effizienz und Sicherheit der Website zu verbessern.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

PHP hat das Netzwerk in den letzten Jahrzehnten geprägt und wird weiterhin eine wichtige Rolle bei der Webentwicklung spielen. 1) PHP stammt aus dem Jahr 1994 und ist aufgrund seiner Benutzerfreundlichkeit und der nahtlosen Integration in MySQL die erste Wahl für Entwickler. 2) Zu den Kernfunktionen gehört das Generieren dynamischer Inhalte und die Integration in die Datenbank, sodass die Website in Echtzeit aktualisiert und auf personalisierte Weise angezeigt wird. 3) Die breite Anwendung und das Ökosystem von PHP hat seine langfristigen Auswirkungen angetrieben, steht jedoch auch mit Versionsaktualisierungen und Sicherheitsherausforderungen gegenüber. 4) Leistungsverbesserungen in den letzten Jahren, wie die Veröffentlichung von PHP7, ermöglichen es ihm, mit modernen Sprachen zu konkurrieren. 5) In Zukunft muss PHP sich mit neuen Herausforderungen wie Containerisierung und Microservices befassen, aber seine Flexibilität und die aktive Community machen es anpassungsfähig.

PHP ist eine serverseitige Skriptsprache, die für dynamische Webentwicklung und serverseitige Anwendungen verwendet wird. 1.PHP ist eine interpretierte Sprache, die keine Zusammenstellung erfordert und für die schnelle Entwicklung geeignet ist. 2. PHP -Code ist in HTML eingebettet, wodurch es einfach ist, Webseiten zu entwickeln. 3. PHP verarbeitet die serverseitige Logik, generiert die HTML-Ausgabe und unterstützt Benutzerinteraktion und Datenverarbeitung. 4. PHP kann mit der Datenbank interagieren, die Einreichung von Prozessformularen und serverseitige Aufgaben ausführen.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.
