Inhaltsverzeichnis
Antwortinhalt:
Heim Backend-Entwicklung PHP-Tutorial Designprobleme für die verteilte Service-Governance?

Designprobleme für die verteilte Service-Governance?

Oct 17, 2016 am 09:13 AM
dubbo fpm java php python

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
Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1657
14
PHP-Tutorial
1257
29
C#-Tutorial
1231
24
PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP und Python: Ein tiefes Eintauchen in ihre Geschichte PHP und Python: Ein tiefes Eintauchen in ihre Geschichte Apr 18, 2025 am 12:25 AM

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

Auswirkungen von PHP: Webentwicklung und darüber hinaus Auswirkungen von PHP: Webentwicklung und darüber hinaus Apr 18, 2025 am 12:10 AM

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

Die fortgesetzte Verwendung von PHP: Gründe für seine Ausdauer Die fortgesetzte Verwendung von PHP: Gründe für seine Ausdauer Apr 19, 2025 am 12:23 AM

Was noch beliebt ist, ist die Benutzerfreundlichkeit, die Flexibilität und ein starkes Ökosystem. 1) Benutzerfreundliche und einfache Syntax machen es zur ersten Wahl für Anfänger. 2) eng integriert in die Webentwicklung, eine hervorragende Interaktion mit HTTP -Anforderungen und Datenbank. 3) Das riesige Ökosystem bietet eine Fülle von Werkzeugen und Bibliotheken. 4) Active Community und Open Source Nature passen sie an neue Bedürfnisse und Technologietrends an.

Golang gegen Python: Leistung und Skalierbarkeit Golang gegen Python: Leistung und Skalierbarkeit Apr 19, 2025 am 12:18 AM

Golang ist in Bezug auf Leistung und Skalierbarkeit besser als Python. 1) Golangs Kompilierungseigenschaften und effizientes Parallelitätsmodell machen es in hohen Parallelitätsszenarien gut ab. 2) Python wird als interpretierte Sprache langsam ausgeführt, kann aber die Leistung durch Tools wie Cython optimieren.

Python vs. C: Lernkurven und Benutzerfreundlichkeit Python vs. C: Lernkurven und Benutzerfreundlichkeit Apr 19, 2025 am 12:20 AM

Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Python vs. C: Erforschung von Leistung und Effizienz erforschen Python vs. C: Erforschung von Leistung und Effizienz erforschen Apr 18, 2025 am 12:20 AM

Python ist in der Entwicklungseffizienz besser als C, aber C ist in der Ausführungsleistung höher. 1. Pythons prägnante Syntax und reiche Bibliotheken verbessern die Entwicklungseffizienz. 2. Die Kompilierungsmerkmale von Compilation und die Hardwarekontrolle verbessern die Ausführungsleistung. Bei einer Auswahl müssen Sie die Entwicklungsgeschwindigkeit und die Ausführungseffizienz basierend auf den Projektanforderungen abwägen.

See all articles