Inhaltsverzeichnis
Cluster
Load Balancing
Redundanz
Verteilt
MySQL-Master-Slave
Wie Laravel Dateninkonsistenzen löst
Was passiert, wenn unser Code mit mehreren Servern synchronisiert wird?
Heim PHP-Framework Laravel Verständnis für Lastausgleich, Verteilung und Clustering sowie die Synchronisierung mehrerer Servercodes

Verständnis für Lastausgleich, Verteilung und Clustering sowie die Synchronisierung mehrerer Servercodes

Jul 03, 2019 pm 02:42 PM
分布式 负载均衡

Verständnis für Lastausgleich, Verteilung und Clustering sowie die Synchronisierung mehrerer Servercodes

Die Konzepte dieser Begriffe werden im Folgenden erläutert

Cluster

Wenn unser Projekt auf einer Maschine läuft, wenn diese Maschine ausfällt. Wenn ja, oder Das Volumen der Benutzeranfragen ist relativ hoch und kann von einer Maschine nicht unterstützt werden. Unsere Website ist möglicherweise nicht zugänglich. Wie kann man es also lösen? Wir müssen mehrere Computer verwenden und dasselbe Programm bereitstellen, damit mehrere Computer gleichzeitig unsere Website ausführen können. Wie verteilen wir also Anfragen an alle unsere Maschinen? So entstand das Konzept des Lastausgleichs.

Load Balancing

Load Balancing bedeutet, dass basierend auf Reverse Proxy alle aktuellen Anfragen gemäß dem angegebenen Richtlinienalgorithmus auf verschiedene Server verteilt werden können. Häufig werden zum Erreichen des Lastausgleichs Nginx und LVS verwendet. Aber jetzt gibt es auch ein Problem, was soll ich tun, wenn es ein Problem mit dem Lastausgleichsserver gibt? Alle Konzepte der Redundanz tauchen auf.

Redundanz

Redundanz besteht eigentlich aus zwei oder mehr Servern, einem Master-Server und einem Slave-Server. Angenommen, es liegt ein Problem mit dem Lastausgleichsserver eines Master-Servers vor und der Slave-Server kann den Master-Server ersetzen, um den Lastausgleich fortzusetzen. Der Weg, dies zu erreichen, besteht darin, Keepalive zu verwenden, um den virtuellen Host zu besetzen.

Verteilt

Verteilt bedeutet eigentlich, ein großes Projekt aufzuteilen und unabhängig auszuführen.

Nehmen Sie das obige Beispiel. Nehmen wir an, unser Traffic ist besonders hoch. Wir können es mit demselben Mechanismus wie CDN verteilen. Ein identischer Cluster wird an drei Orten aufgebaut: Peking, Hangzhou und Shenzhen. Benutzer in der Nähe von Peking erhalten Zugriff auf den Cluster in Peking, und Benutzer in der Nähe von Shenzhen erhalten Zugriff auf den Cluster in Shenzhen. Auf diese Weise ist unser Online-Kampf in drei Bereiche unterteilt, die jeweils unabhängig voneinander sind.

Ein weiteres Beispiel ist unsere Redis-Distribution. Die Redis-Verteilung verteilt die Daten in Redis auf verschiedene Server. Jeder Server speichert unterschiedliche Inhalte, während der MySQL-Cluster auf jedem Server dieselben Daten speichert. Dies versteht auch die Konzepte der Verteilung und des Clusterings.

MySQL-Master-Slave

MySQL Der Master-Server schreibt das SQL-Operationsprotokoll in das bin.log-Protokoll. Der Slave-Server liest das Bin.log-Protokoll des Masters und führt dann die SQL-Anweisung aus .

Master und Slave haben die folgenden Probleme.

1. Der Master-Server kann schreiben und lesen, aber der Slave kann nur schreiben.

Die vom Slave gelesenen Daten wurden noch nicht geschrieben.

1. Wenn zwischengespeichert, aus dem Cache lesen.
2. Lesen vom Master erzwingen.
3. Mit dem pxc-Cluster ist jeder Knoten lesbar und beschreibbar, mit hoher Konsistenz beim Lesen und Schreiben.

Wie Laravel Dateninkonsistenzen löst

Sticky im MySQL-Konfigurationsblock config/database.php auf true setzen

sticky ist ein optionaler Wert, der zum sofortigen Lesen verwendet werden kann Rufen Sie die Datensätze ab, die während des aktuellen Anforderungszyklus in die Datenbank geschrieben wurden. Wenn die Sticky-Option aktiviert ist und während des aktuellen Anforderungszyklus ein „Schreib“-Vorgang ausgeführt wurde, verwenden alle „Lese“-Vorgänge die „Schreib“-Verbindung. Dadurch wird sichergestellt, dass im selben Anforderungszyklus geschriebene Daten sofort gelesen werden können, wodurch das Problem der Dateninkonsistenz durch Master-Slave-Verzögerung vermieden wird. Ob es jedoch aktiviert werden soll, hängt von den Anforderungen der Anwendung ab.

Was passiert, wenn unser Code mit mehreren Servern synchronisiert wird?

Laravel stellt uns das Erweiterungspaket laravel/envoy zur Verfügung, das eine Reihe prägnanter und leichter Syntax zum Definieren täglicher Aufgaben von Remote-Servern bereitstellt. Die Blade-Stil-Syntax kann zum Konfigurieren von Bereitstellungsaufgaben, zum Ausführen von Artisan-Befehlen usw. verwendet werden.

composer global require laravel/envoy
Nach dem Login kopieren

Envoy-Aufgaben sollten alle in Envoy.blade.php im Projektstammverzeichnis definiert werden. Schreiben Sie den Inhalt

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])

@task('deploy', ['on' => ['web-1', 'web-2']])
    cd site
    git pull origin {{ $branch }}
    composer update
    php artisan migrate
@endtask
Nach dem Login kopieren

Die Bedeutung des obigen Codes ist, dass wir, wenn envoy in der Befehlszeile „deploy“ ausführt, per SSH zu Web-1 und Web-2 wechseln und

    cd site
    git pull origin {{ $branch }}
    php artisan migrate
Nach dem Login kopieren

Natürlich ausführen. Diese Voraussetzung ist, dass wir SSH mit dem Remote-Server verbunden haben.

Weitere technische Artikel zu Laravel finden Sie in der Spalte Laravel-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonVerständnis für Lastausgleich, Verteilung und Clustering sowie die Synchronisierung mehrerer Servercodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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)

So optimieren Sie die TCP/IP-Leistung und Netzwerkleistung von Linux-Systemen So optimieren Sie die TCP/IP-Leistung und Netzwerkleistung von Linux-Systemen Nov 07, 2023 am 11:15 AM

Im Bereich moderner Computer ist das TCP/IP-Protokoll die Grundlage für die Netzwerkkommunikation. Als Open-Source-Betriebssystem ist Linux zum bevorzugten Betriebssystem geworden, das von vielen Unternehmen und Organisationen verwendet wird. Da Netzwerkanwendungen und -dienste jedoch immer wichtigere Geschäftskomponenten werden, müssen Administratoren häufig die Netzwerkleistung optimieren, um eine schnelle und zuverlässige Datenübertragung sicherzustellen. In diesem Artikel wird erläutert, wie Sie die Netzwerkübertragungsgeschwindigkeit von Linux-Systemen durch Optimierung der TCP/IP-Leistung und der Netzwerkleistung von Linux-Systemen verbessern können. In diesem Artikel wird a besprochen

Dynamische Fehlererkennung und Strategie zur Lastgewichtsanpassung in der Nginx-Lastausgleichslösung Dynamische Fehlererkennung und Strategie zur Lastgewichtsanpassung in der Nginx-Lastausgleichslösung Oct 15, 2023 pm 03:54 PM

Dynamische Fehlererkennungs- und Lastgewichtsanpassungsstrategien in der Nginx-Lastausgleichslösung erfordern spezifische Codebeispiele. Einführung In Netzwerkumgebungen mit hoher Parallelität ist der Lastausgleich eine gängige Lösung, die die Verfügbarkeit und Leistung der Website effektiv verbessern kann. Nginx ist ein Open-Source-Hochleistungs-Webserver, der leistungsstarke Lastausgleichsfunktionen bietet. In diesem Artikel werden zwei wichtige Funktionen des Nginx-Lastausgleichs, die dynamische Fehlererkennung und die Strategie zur Anpassung des Lastgewichts, vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Dynamische Fehlererkennung Dynamische Fehlererkennung

Hochverfügbarkeits- und Disaster-Recovery-Lösung für die Nginx-Lastausgleichslösung Hochverfügbarkeits- und Disaster-Recovery-Lösung für die Nginx-Lastausgleichslösung Oct 15, 2023 am 11:43 AM

Hochverfügbarkeits- und Notfallwiederherstellungslösung der Nginx-Lastausgleichslösung Mit der rasanten Entwicklung des Internets ist die hohe Verfügbarkeit von Webdiensten zu einer zentralen Anforderung geworden. Um eine hohe Verfügbarkeit und Katastrophentoleranz zu erreichen, war Nginx schon immer einer der am häufigsten verwendeten und zuverlässigsten Load Balancer. In diesem Artikel stellen wir die Hochverfügbarkeits- und Disaster-Recovery-Lösungen von Nginx vor und stellen spezifische Codebeispiele bereit. Eine hohe Verfügbarkeit von Nginx wird hauptsächlich durch den Einsatz mehrerer Server erreicht. Als Load Balancer kann Nginx den Datenverkehr auf mehrere Backend-Server verteilen

Anwendung der Lastausgleichsstrategie bei der Leistungsoptimierung des Java-Frameworks Anwendung der Lastausgleichsstrategie bei der Leistungsoptimierung des Java-Frameworks May 31, 2024 pm 08:02 PM

Lastausgleichsstrategien sind in Java-Frameworks für eine effiziente Verteilung von Anforderungen von entscheidender Bedeutung. Abhängig von der Parallelitätssituation weisen verschiedene Strategien unterschiedliche Leistungen auf: Abfragemethode: Stabile Leistung bei geringer Parallelität. Gewichtete Abfragemethode: Die Leistung ähnelt der Abfragemethode bei geringer Parallelität. Methode mit der geringsten Anzahl von Verbindungen: beste Leistung bei hoher Parallelität. Zufallsmethode: einfach, aber schlechte Leistung. Konsistentes Hashing: Serverlast ausgleichen. In Kombination mit praktischen Fällen erklärt dieser Artikel, wie Sie auf der Grundlage von Leistungsdaten geeignete Strategien auswählen, um die Anwendungsleistung deutlich zu verbessern.

So erreichen Sie mit Redis eine verteilte Datensynchronisierung So erreichen Sie mit Redis eine verteilte Datensynchronisierung Nov 07, 2023 pm 03:55 PM

So erreichen Sie mit Redis eine verteilte Datensynchronisierung Mit der Entwicklung der Internettechnologie und den immer komplexeren Anwendungsszenarien wird das Konzept verteilter Systeme immer weiter verbreitet. In verteilten Systemen ist die Datensynchronisation ein wichtiges Thema. Als leistungsstarke In-Memory-Datenbank kann Redis nicht nur zum Speichern von Daten, sondern auch zur verteilten Datensynchronisierung verwendet werden. Für die verteilte Datensynchronisierung gibt es im Allgemeinen zwei gängige Modi: den Publish/Subscribe-Modus (Publish/Subscribe) und den Master-Slave-Replikationsmodus (Master-Slave).

Wie Redis die verteilte Sitzungsverwaltung implementiert Wie Redis die verteilte Sitzungsverwaltung implementiert Nov 07, 2023 am 11:10 AM

Wie Redis die verteilte Sitzungsverwaltung implementiert, erfordert spezifische Codebeispiele. Angesichts der hohen Parallelität und des großen Datenvolumens werden herkömmliche Sitzungsverwaltungsmethoden zunehmend unzureichend. Als leistungsstarke Schlüsselwertdatenbank bietet Redis eine verteilte Sitzungsverwaltungslösung. In diesem Artikel wird die Verwendung von Redis zur Implementierung der verteilten Sitzungsverwaltung vorgestellt und spezifische Codebeispiele gegeben. 1. Einführung in Redis als verteilten Sitzungsspeicher. Die traditionelle Sitzungsverwaltungsmethode besteht darin, Sitzungsinformationen zu speichern

So erstellen Sie mit Workerman ein hochverfügbares Lastausgleichssystem So erstellen Sie mit Workerman ein hochverfügbares Lastausgleichssystem Nov 07, 2023 pm 01:16 PM

Für die Verwendung von Workerman zum Aufbau eines hochverfügbaren Lastausgleichssystems sind spezifische Codebeispiele erforderlich. Im Bereich der modernen Technologie müssen mit der rasanten Entwicklung des Internets immer mehr Websites und Anwendungen eine große Anzahl gleichzeitiger Anforderungen verarbeiten. Um eine hohe Verfügbarkeit und Leistung zu erreichen, ist das Lastausgleichssystem zu einer der wesentlichen Komponenten geworden. In diesem Artikel wird erläutert, wie Sie mit dem PHP-Open-Source-Framework Workerman ein Hochverfügbarkeits-Lastausgleichssystem erstellen und spezifische Codebeispiele bereitstellen. 1. Einführung in WorkermanWorke

Erfahrungsaustausch bei der Verwendung von MongoDB zur Implementierung der verteilten Aufgabenplanung und -ausführung Erfahrungsaustausch bei der Verwendung von MongoDB zur Implementierung der verteilten Aufgabenplanung und -ausführung Nov 02, 2023 am 09:39 AM

MongoDB ist eine Open-Source-NoSQL-Datenbank mit hoher Leistung, Skalierbarkeit und Flexibilität. In verteilten Systemen sind Aufgabenplanung und -ausführung ein zentrales Thema. Durch die Nutzung der Eigenschaften von MongoDB können verteilte Aufgabenplanungs- und -ausführungslösungen realisiert werden. 1. Anforderungsanalyse für die verteilte Aufgabenplanung In einem verteilten System ist die Aufgabenplanung der Prozess, bei dem Aufgaben verschiedenen Knoten zur Ausführung zugewiesen werden. Zu den allgemeinen Aufgabenplanungsanforderungen gehören: 1. Verteilung von Aufgabenanforderungen: Senden Sie Aufgabenanforderungen an verfügbare Ausführungsknoten.

See all articles