Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was sind die Grundprinzipien der technischen Architektur großer MySQL-Websites?

PHPz
Freigeben: 2023-05-27 13:54:23
nach vorne
1006 Leute haben es durchsucht

1. Entwicklung der großen Website-Architektur

Hohe Parallelität, großer Datenverkehr, große Datenmengen; Umgebung; schnelle Änderungen der Anforderungen; fortschreitende Entwicklung

B. Anfangsstadium: ein Server, LNMP

2 Dienste: Anwendungsserver (CPU); Datenbankserver (schneller Festplattenabruf und Datencache); begrenzt durch Anwendungsserverspeicher, begrenztes Datenvolumen) , Remote-verteilter Cache (verwenden Sie einen Cluster, um einen Server mit großem Speicher als dedizierten Cache-Server bereitzustellen)

4 ​​Anwendungsserver-Cluster: geplant durch Lastausgleich

5 Schreibtrennung

6. Verwenden Sie Reverse-Proxy und CDN-Beschleunigung: CDN (bereitgestellt im nächsten Netzwerkcomputerraum), Reverse-Proxy (bereitgestellt im zentralen Computerraum)

7. Verwenden Sie verteilte Dateisysteme und verteilte Datenbanksysteme

8. Nutzen Sie NoSQL und Suchmaschinen

10. Verteilte Dienste

C. Der Kernwert der groß angelegten Website-Architektur ist um flexibel auf die Bedürfnisse der Website zu reagieren

2. Die Hauptantriebskraft für die Entwicklung groß angelegter Website-Technologien ist die Missverständnisse im Website-Architekturdesign

1 Unternehmen 2. Technologie um der Technologie willen Muster

Jedes Muster stellt ein wiederkehrendes Problem und den Kern der Lösung des Problems dar. Auf diese Weise können Sie die Lösung immer wieder verwenden, ohne doppelte Arbeit leisten zu müssen. Der Schlüssel zu einem Muster ist die Wiederholbarkeit des Musters.

A. Website-Architekturmuster

1. Schichtung: Es ist das häufigste Architekturmuster in Unternehmensanwendungssystemen, das das System in mehrere Teile in der horizontalen Dimension unterteilt, und jeder Teil ist für einige verantwortlich relativ einzelne Verantwortlichkeiten und bilden dann durch die Abhängigkeiten und Aufrufe der oberen Schicht zur unteren Schicht ein vollständiges System.

Unterteilen Sie das Website-Softwaresystem in Anwendungsschicht (Ansichtsschicht, Geschäftslogikschicht), Serviceschicht (Datenschnittstellenschicht, Logikverarbeitungsschicht) und Datenschicht.

kann eine große Software besser integrieren. Das System ist In verschiedene Teile unterteilt, um die Arbeitsteilung, die kooperative Entwicklung und die Wartung zu erleichtern. Solange die aufrufende Schnittstelle unverändert bleibt, kann jede Schicht die Entwicklung unabhängig von bestimmten Problemen vertiefen, ohne dass andere erforderlich sind Ebenen, um entsprechende Anpassungen vorzunehmen.

2. Teilen

Vertikal schneiden. Trennen Sie verschiedene Funktionen und Dienste und packen Sie sie in modulare Einheiten mit hoher Kohäsion und geringer Kopplung. Die Granularität der Segmentierung kann bei großen Websites sehr gering sein.

3. Verteilt

  • bedeutet, dass verschiedene Module auf verschiedenen Servern bereitgestellt werden und über Remote-Aufrufe zusammenarbeiten. Dies bedeutet, dass mehr Computer verwendet werden können, um dieselbe Funktion auszuführen.

  • Probleme: Das Netzwerk kann einen schwerwiegenden Einfluss auf die Leistung haben; die Wahrscheinlichkeit, dass mehrere Server ausfallen, ist außerdem sehr schwierig, die Datenkonsistenz in einer verteilten Umgebung aufrechtzuerhalten, was die Verarbeitung und Wartung der Website erschwert setzt auf komplexe Entwicklung; verteilte Anwendungen und Dienste; verteilte Daten und Speicher; verteilte Dateien;

  • 4. Cluster


  • Mehrere Server stellen dieselbe Anwendung bereit, um einen Cluster zu bilden, und stellen gemeinsam externe Dienste über Lastausgleichsgeräte bereit.

  • 5. Caching


  • Caching bedeutet, einige Daten an dem Ort zu speichern, der der Berechnung am nächsten liegt, um die Verarbeitung zu beschleunigen.

  • CDN, Reverse-Proxy, lokaler Cache, verteilter Cache.


  • Zwei Voraussetzungen für die Verwendung des Caches: Erstens sind die Datenzugriffs-Hotspots unausgeglichen; zweitens sind die Daten innerhalb eines bestimmten Zeitraums gültig , ein Geschäftsvorgang ist in mehrere Phasen unterteilt, und jede Phase wird asynchron ausgeführt, um die Zusammenarbeit durch den Austausch von Daten zu ermöglichen.


  • Ein einzelner Server kann eine asynchrone Ausführung durch Multi-Threaded-Shared-Memory-Warteschlangen erreichen; in einem verteilten System können mehrere Servercluster eine asynchrone Ausführung durch verteilte Nachrichtenwarteschlangen erreichen.


Im typischen Produzenten-Konsumenten-Modell gibt es keine direkte Anrufbeziehung zwischen Produzenten und Verbrauchern. Die Merkmale dieses Modells bestehen darin, dass es die Verfügbarkeit des Systems verbessern, die Reaktionsgeschwindigkeit der Website beschleunigen kann Eliminieren Sie die Parallelität.

  • Der Einsatz asynchroner Methoden zur Geschäftsabwicklung kann sich auf die Benutzererfahrung und Geschäftsprozesse auswirken und erfordert Unterstützung beim Produktdesign.

  • 7. Redundanz

    • Wenn Sie sicherstellen möchten, dass die Website weiterhin ohne Datenverlust bereitgestellt werden kann, wenn der Server ausfällt, benötigen Sie ein gewisses Maß an Serverredundanz und Datenredundanzsicherung.

    • Kleine Websites benötigen außerdem mindestens zwei Server, um einen Cluster aufzubauen. Zusätzlich zur regelmäßigen Sicherung und Speicherung, um eine Kaltsicherung zu erreichen, muss die Datenbank auch eine Master-Slave-Freigabe, eine Echtzeitsynchronisierung und eine Hot-Sicherung durchführen.

    • Große Unternehmen können das gesamte Rechenzentrum sichern und es mit lokalen Disaster Recovery Centern synchronisieren.

    8. Automatisierung

    • konzentriert sich hauptsächlich auf den Release-Betrieb und die Wartung.

    • Automatisierung des Release-Prozesses: automatisierte Codeverwaltung, automatisierte Tests, automatisierte Sicherheitserkennung, automatisierte Bereitstellung.

    • Automatisierte Überwachung: automatisierte Alarme, automatisiertes Failover, automatisierte Fehlerwiederherstellung, automatisierte Verschlechterung und automatisierte Ressourcenzuweisung.

    9. Sicherheit

    B. Anwendung von Architekturmustern in Sina Weibo

    3. Kernarchitekturelemente großer Websites

    Architektur: die höchste Planungsebene, eine Entscheidung, die schwer zu ändern ist .

    Softwarearchitektur: Eine abstrakte Beschreibung der Gesamtstruktur und der Komponenten von Software, die als Leitfaden für den Entwurf aller Aspekte großer Softwaresysteme dient.

    A. Leistung

    • Browserseite: Browser-Cache, Seitenkomprimierung, angemessenes Layout, Reduzierung der Cookie-Übertragung, CDN usw.

    • Anwendungsserverseite: lokaler Server-Cache, verteilter Cache, asynchroner Betrieb mit Nachrichtenwarteschlangen, Clustern usw.

    • Code: Multithreading, verbesserte Speicherverwaltung usw.

    • Datenbank: Indizierung, Caching, SQL-Optimierung, NoSQL-Technologie

    B. Verfügbarkeit

    • Das wichtigste Mittel zum Betreiben von Umgebungen wie Servern, Datenbanken und Dateispeichern ist Redundanz.

    • Durch Vorabverifizierung, automatisierte Tests, automatisierte Freigabe, Graustufenfreigabe und andere Mittel

    C. Skalierbarkeit bezieht sich auf das kontinuierliche Hinzufügen von Servern zum Cluster. Mittel zur Linderung der zunehmende Druck des gleichzeitigen Benutzerzugriffs und die wachsende Nachfrage nach Datenspeicherung. Ob das Hinzufügen eines neuen Servers dieselben Dienste wie der ursprüngliche Server bereitstellen kann.

    • Anwendungsserver: Server können durch geeignete Lastausgleichsgeräte kontinuierlich zum Cluster hinzugefügt werden.

    • Cache-Server: Das Hinzufügen neuer Server kann dazu führen, dass die Cache-Route ungültig wird. Es ist ein Routing-Algorithmus erforderlich.

    • Relationale Datenbank: durch Routing-Partitionierung und andere Mittel.


    • D. Messkriterien: Wenn die Website Geschäftsprodukte hinzufügt, ob sie transparent sein kann und keine Auswirkungen auf bestehende Produkte hat;

    bedeutet: Ereignisgesteuerte Architektur (Nachrichtenwarteschlange), verteilte Dienste (gemeinsame Nutzung von Geschäften und verfügbaren Diensten, Aufruf über verteiltes Dienst-Framework)


    • E. Sicherheit

    • 4. Sofortige Reaktion: Hohe Leistung der Website Leistungsarchitektur

    A. Website-Leistungstest

    1. Website-Leistung aus verschiedenen Perspektiven

    aus Benutzerperspektive: Seiten-HTML-Stil optimieren, browserseitige Parallelität und asynchrone Funktionen nutzen, Browser-Caching-Strategien anpassen, und verwenden Sie CDN-Dienste, reflektierende Proxys usw.

    Website-Leistung aus der Sicht eines Entwicklers: Verwendung von Cache zur Beschleunigung des Datenlesens, Verwendung von Clustern zur Verbesserung des Durchsatzes, Verwendung asynchroner Nachrichten zur Beschleunigung von Anforderungsantworten und Erzielung von Peak-Shedding sowie Verwendung von Codeoptimierungsmethoden zur Verbesserung der Programmleistung.

    • Website-Leistung aus Sicht des Betriebs- und Wartungspersonals: Aufbau und Optimierung von Backbone-Netzwerken, Verwendung kostengünstiger maßgeschneiderter Server, Einsatz von Virtualisierungstechnologie zur Optimierung der Ressourcennutzung usw.

    • 2. Leistungstestindikatoren

    • Antwortzeit: Die Testmethode besteht darin, die Anforderung zu wiederholen und die Summe der gesamten Testzeiten von 10.000 Malen durch 10.000 zu dividieren.


    Anzahl gleichzeitiger Benutzer: Die Anzahl der Anfragen, die das System gleichzeitig bearbeiten kann (Anzahl der Website-Systembenutzer >> Anzahl der Website-Online-Benutzer >> Anzahl gleichzeitiger Website-Benutzer), die Das Testprogramm wird getestet, indem gleichzeitige Benutzer durch Multithreading simuliert werden. Die gleichzeitigen Verarbeitungsfähigkeiten des Systems.

    • Durchsatz: Die Anzahl der vom System pro Zeiteinheit verarbeiteten Anfragen (TPS, HPS, QPS usw.)

    • Leistungsindikatoren: Einige Daten-Joysticks, die die Leistung des Servers oder Betriebssystems beschreiben. Eine umgeschriebene Version dieses Satzes lautet: Dies umfasst die Systemlast, die Anzahl der Objekte und Threads, die Speichernutzung, die CPU-Auslastung sowie Festplatten- und Netzwerk-E/A.

    • 3. Leistungstestmethoden: Leistungstests, Lasttests, Stresstests, Stabilitätstests

      Leistungstests werden durchgeführt, um das System kontinuierlich zu belasten, um Systemleistungsindikatoren, maximale Belastbarkeit und maximale Drucktoleranz zu erhalten. Die sogenannte Erhöhung des Zugriffsdrucks bedeutet, die Anzahl gleichzeitiger Anfragen für das Testprogramm kontinuierlich zu erhöhen.

      5. Strategie zur Leistungsoptimierung

      • Leistungsanalyse: Überprüfen Sie die Protokolle jedes Links zur Anforderungsverarbeitung, analysieren Sie, welcher Link eine unangemessene Antwortzeit hat und übertreffen Sie dann die Überwachungsdaten.

      B. Optimierung der Web-Frontend-Leistung

      1. Browser-Zugriffsoptimierung: HTTP-Anfragen reduzieren (CSS/JS/Bilder zusammenführen), Browser-Cache verwenden (Cache-Control und Expires im HTTP-Header), aktivieren Komprimierung (Gzip), CSS wird oben auf der Seite platziert, JS wird unten auf der Seite platziert, wodurch die CND-Beschleunigung reduziert wird

      3. Beschleunigen Sie Webanfragen durch die Konfiguration der Cache-Funktion. (Es kann auch echte Server schützen und Lastausgleichsfunktionen implementieren)

      C. Leistungsoptimierung des Anwendungsservers

      1. Verteilter Cache

        Das erste Gesetz der Website-Leistungsoptimierung: Priorisieren Sie die Verwendung von Cache, um die Leistung zu optimieren

      • Wird hauptsächlich zum Speichern von Daten verwendet, die ein hohes Lese-/Schreibverhältnis aufweisen und sich selten ändern. Wenn der Cache nicht erreicht werden kann, wird die Datenbank gelesen und die Daten werden erneut in den Cache geschrieben.

      • 2. Angemessene Verwendung des Caches: Daten nicht häufig ändern, Zugriff ohne Hotspots, Dateninkonsistenz und fehlerhaftes Lesen, Cache-Verfügbarkeit (Cache-Hot-Backup), Cache-Vorwärmung (einige Caches beim Programmstart vorladen), Cache Penetration

      3. Verteilte Cache-Architektur: verteilte Caches, die synchron aktualisiert werden müssen (JBoss-Cache), verteilte Caches, die nicht miteinander kommunizieren (Memcached)

      4 die Website-Stabilität und -Leistung), hat einen guten Peak-Shaving-Effekt und speichert Transaktionsnachrichten, die durch hohe Parallelität generiert werden, in kurzer Zeit in der Nachrichtenwarteschlange. 5. Verwenden Sie Cluster Anzahl der CPU-Kerne. Achten Sie auf die Thread-Sicherheit: Entwerfen Sie Objekte als zustandslose Objekte und verwenden Sie Sperren, wenn Sie gleichzeitig auf Ressourcen zugreifen

      Datenstruktur;

      Garbage Collection


      • D. Die Datenbank verwendet hauptsächlich einen zweistufigen Index B+, und die Baumebene umfasst bis zu drei Ebenen. Es können fünf Festplattenzugriffe erforderlich sein, um einen Datensatz zu aktualisieren.

      • 2. Viele NoSQL-Produkte verwenden LSM-Bäume, die als Zusammenführungsbaum N-Ordnung betrachtet werden können.
      • 3. RAID (Redundant Array of Inexpensive Disks), RAID0, RAID1, RAID10, RAID5, RAID6, werden häufig in herkömmlichen relationalen Datenbanken und Dateisystemen verwendet.

        4.HDFS (Hadoop Distributed File System) arbeitet mit MapReduce für die Verarbeitung großer Datenmengen zusammen. 5. Kinderleicht: Hochverfügbare Architektur der Website Zeitpunkt der Fehlererkennung (Meldung)

      • Indikator für die jährliche Verfügbarkeit der Website = (1-Website-Nichtverfügbarkeitszeit/Gesamtjahreszeit)*100 %

      • 2 9s sind grundsätzlich verfügbar, 88 Stunden; 3 9s Es ist hoch verfügbar, 9 Stunden; 4 9s ist eine hohe Verfügbarkeit mit automatischer Wiederherstellungsfunktion, 53 Minuten sind eine extrem hohe Verfügbarkeit, weniger als 5 Minuten sind 99,99, 4 9s und sind etwa 53 Minuten lang nicht verfügbar. 2. Bewertung der Benutzerfreundlichkeit der Website

      B. Hochverfügbare Website-Architektur

      Das wichtigste Mittel ist redundantes Backup und Failover von Daten und Diensten. Die Anwendungsschicht und die Serviceschicht nutzen den Cluster-Lastausgleich, um eine hohe Verfügbarkeit zu erreichen, und die Datenschicht nutzt die datensynchrone Replikation, um eine redundante Sicherung zu erreichen.

      C. Hochverfügbare Anwendungen

      1. Failover von zustandslosen Diensten durch Lastausgleich: Auch wenn der Anwendungszugriff sehr gering ist, stellen Sie mindestens zwei Server bereit, um einen kleinen Cluster mit Lastausgleich aufzubauen. 2. Sitzungsverwaltung des Anwendungsserver-Clusters hat Auswirkungen auf die Hochverfügbarkeit.

      Verwenden Sie Cookies zum Aufzeichnen von Sitzungen: Größenbeschränkung, jede Anforderungsantwort muss übertragen werden. Wenn Sie Cookies deaktivieren, können Sie nicht auf

      Sitzungsserver zugreifen: Verwenden Sie verteilten Cache, Datenbank, usw., hohe Verfügbarkeit, hohe Skalierbarkeit und hohe Leistung. Gut

      • D. Hierarchische Verwaltung: Server sind hierarchisch in Betrieb und Wartung Auch die Reaktionsgeschwindigkeit bei Betrieb und Wartung ist extrem schnell.

        2. Zeitüberschreitungseinstellung: Legen Sie die Zeitüberschreitung für Dienstaufrufe in der Anwendung fest. Sobald die Zeitüberschreitung abläuft, löst das Kommunikationsframework eine Ausnahme aus. Basierend auf der Dienstplanungsrichtlinie kann die Anwendung die Anforderung erneut versuchen oder an andere Server übertragen bieten den gleichen Service.

        Die Anwendung schließt den Aufruf des Dienstes über asynchrone Methoden wie Nachrichtenwarteschlangen ab, um zu vermeiden, dass die gesamte Anwendungsanforderung fehlschlägt, wenn ein Dienst ausfällt.

        4. Dienstverschlechterung: Denial of Service, Ablehnen von Anrufen von Anwendungen mit niedriger Priorität oder zufälliges Ablehnen einiger Anforderungsaufrufe, Herunterfahren einiger unwichtiger Dienste oder Herunterfahren einiger unwichtiger Funktionen innerhalb des Dienstes.

        5. Idempotentes Design: In der Serviceschicht wird garantiert, dass wiederholte Aufrufe des Dienstes zu denselben Ergebnissen führen wie einmal aufgerufene, d. h. der Dienst ist idempotent.

        E. Hochverfügbare Daten

        1.CAP-Prinzip

        • Hochverfügbare Daten: Datenpersistenz (permanente Speicherung, Sicherungskopien gehen nicht verloren), Datenzugänglichkeit (schneller Wechsel zwischen verschiedenen Geräten), Datenkonsistenz (Bei mehreren Kopien ist die Konsistenz der Kopierdaten garantiert)

        • CAP-Prinzip: Ein Speichersystem, das Datendienste bereitstellt, kann Datenkonsistenz (Konsistenz), Datenverfügbarkeit (Verfügbarkeit) und Partitionstoleranz nicht erfüllen gleichzeitig (Partitionstoleranz, das System ist über Netzwerkpartitionen skalierbar).

        • Normalerweise erhöhen große Websites die Verfügbarkeit (A) und Skalierbarkeit (P) des verteilten Systems und opfern dabei bis zu einem gewissen Grad die Konsistenz (C). Im Allgemeinen treten Dateninkonsistenzen auf, wenn das System viele gleichzeitige Schreibvorgänge aufweist oder der Clusterstatus instabil ist. Das Anwendungssystem muss die Dateninkonsistenz des verteilten Datenverarbeitungssystems verstehen und bis zu einem gewissen Grad eine Kompensation und Fehlerkorrektur vornehmen falsche Anwendungssystemdaten.

        • Datenkonsistenz kann unterteilt werden in: starke Datenkonsistenz (alle Vorgänge sind konsistent), Datenbenutzerkonsistenz (Kopien können inkonsistent sein, aber wenn Benutzer darauf zugreifen, werden korrekte Daten durch Fehlerkorrekturüberprüfung ermittelt und an den Benutzer zurückgegeben). , die Daten sind letztendlich konsistent (Kopien und Benutzerzugriff können inkonsistent sein, aber das System erreicht die Konsistenz nach einer Zeit der Selbstwiederherstellung und -korrektur)

        2. Datensicherung

        • Asynchrone Hot-Sicherung: mehrere Kopien von data Der Schreibvorgang wird asynchron abgeschlossen. Wenn die Anwendung eine erfolgreiche Antwort vom Datendienstsystem für den Schreibvorgang erhält, wird nur eine Kopie erfolgreich geschrieben und das Speichersystem schreibt andere Kopien asynchron (was fehlschlagen kann)

        • Synchronous Hot Standby: Multiple Der Schreibvorgang der Datenkopien wird synchron abgeschlossen. Das heißt, wenn die Anwendung die Schreiberfolgsantwort vom Datendienstsystem empfängt, war der Schreibvorgang mehrerer Datenkopien erfolgreich.

        3. Fehlerübertragung: Heartbeat-Erkennung, Anwendungszugriffsfehler: Nachdem bestätigt wurde, dass ein Server ausgefallen ist, leiten Sie den Lese- und Schreibzugriff auf andere Server um

          Datenwiederherstellung: Kopieren Sie Daten von einem fehlerfreien Server und stellen Sie die Anzahl der Datenkopien auf den festgelegten Wert wieder her.

        • F. Software-Qualitätssicherung für Websites mit hoher Verfügbarkeit

        • 2 Testen: Das Tool Selenium
        • führt eine Vorabverifizierung auf dem Vorabversionsserver durch. Wir werden es zunächst auf dem Vorabversionscomputer zur Verwendung durch Entwicklungsingenieure und Testingenieure freigeben. Es benötigt die gleiche Konfiguration, Umgebung, dasselbe Rechenzentrum usw. wie die Produktionsumgebung

          4
        • 6. Graustufenfreigabe: Teilen Sie den Clusterserver in mehrere Teile auf, geben Sie jeden Tag nur einen Teil des Servers frei und achten Sie darauf, dass der Betrieb stabil und fehlerfrei ist. Wenn während des Zeitraums Probleme festgestellt werden, müssen Sie nur ein Rollback durchführen Teil des freigegebenen Servers. Wird auch häufig für Benutzertests (AB-Tests) verwendet.

        • G. Überwachung des Website-Betriebs

        1. Erfassung von Überwachungsdaten

        Sammeln Sie Benutzerverhaltensprotokolle, einschließlich Betriebssystem- und Browserversion, IP-Adresse, Seitenzugriffspfad, Seitenverweildauer und andere Informationen. Einschließlich serverseitiger Protokollerfassung und clientseitiger Browser-Protokollerfassung.

        Erfassung der Serverleistung: wie Systemlast, Speichernutzung, Festplatten-IO, Netzwerk-IO usw., Tools Ganglia usw.

        Ausführen von Datenberichten: wie Puffertrefferrate, durchschnittliche Antwortverzögerungszeit , Anzahl der pro Minute versendeten E-Mails, die Gesamtzahl der zu bearbeitenden Aufgaben usw. 2. Überwachung und Verwaltung Fehlerübertragung

        Automatisches, ordnungsgemäßes Downgrade: Beurteilen Sie die Anwendungslast anhand von Überwachungsparametern, deinstallieren Sie Anwendungsserver mit geringer Auslastung entsprechend und installieren Sie Anwendungen mit hoher Auslastung neu, um die gesamte Anwendungslast auszugleichen.

        • 6. Unendlich: Die Skalierbarkeitsarchitektur der Website

        • Die sogenannte Skalierbarkeit der Website bedeutet, dass die Website einfach durch Änderung der Anzahl der eingesetzten Server erweitert oder verkleinert werden kann, ohne die Software zu ändern und Hardware-Design der Website.
        • A. Skalierbarkeitsdesign der Website-Architektur

          1. Physische Trennung verschiedener Funktionen zur Erzielung von Skalierbarkeit: vertikale Trennung (Trennung nach Schichtung), Trennung und Bereitstellung verschiedener Teile des Geschäftsverarbeitungsprozesses zur Erzielung horizontaler Trennung nach der Geschäftssegmentierung), trennen und implementieren Sie verschiedene Geschäftsmodule, um die Skalierbarkeit des Systems zu erreichen.

          2. Eine einzelne Funktion kann durch Cluster-Skalierung skaliert werden.

          2. Lastausgleich:

          HTTP-Umleitungslastausgleich: Berechnen Sie eine echte Webserveradresse basierend auf der HTTP-Anfrage des Benutzers, schreiben Sie die Serveradresse in die HTTP-Umleitungsantwort und geben Sie sie an den Browser des Benutzers zurück. Diese Lösung hat ihre Vorteile, die Nachteile bestehen jedoch darin, dass zwei Anfragen erforderlich sind, die Verarbeitungsleistung des Weiterleitungsservers selbst möglicherweise begrenzt ist und die 302-Weiterleitung möglicherweise auch Auswirkungen auf die Suchmaschinenoptimierung hat.

          • DNS-Domänennamenauflösungs-Lastausgleich: Konfigurieren Sie mehrere A-Einträge auf dem DNS-Server, um auf verschiedene IPs zu verweisen. Der Vorteil besteht darin, dass die Lastausgleichsarbeit auf den DNS übertragen wird. Viele unterstützen auch die geografische Standortrückgabe an den nächstgelegenen Server . Der Nachteil besteht darin, dass der A-Eintrag möglicherweise zwischengespeichert wird und die Kontrolle beim Domain Name Service Provider liegt.


          • Reflektierender Proxy-Lastausgleich: Die vom Browser angeforderte Adresse ist der Reverse-Proxy-Server. Nachdem der Reverse-Proxy-Server die Anfrage erhalten hat, berechnet er die Adresse eines echten physischen Servers basierend auf dem Lastausgleichsalgorithmus und leitet die Anfrage weiter an Der reale Server gibt die Antwort nach Abschluss der Verarbeitung an den Reverse-Proxy-Server zurück, und der Reverse-Proxy-Server gibt die Antwort an den Benutzer zurück. Wird auch als Lastausgleich auf Anwendungsebene (HTTP-Ebene) bezeichnet. Die Bereitstellung ist einfach, aber die Leistung des Reverse-Proxys kann zu einem Engpass werden.


          • IP-Lastausgleich: Nachdem das Benutzeranforderungsdatenpaket den Lastausgleichsserver erreicht hat, erhält der Lastausgleichsserver das Netzwerkdatenpaket im Kernelprozess des Betriebssystems, berechnet einen echten Webserver basierend auf dem Lastausgleichsalgorithmus und Anschließend wird die Ziel-IP-Adresse der Daten an einen echten Server gesendet und muss nicht vom Benutzerprozess verarbeitet werden. Nachdem der reale Server die Verarbeitung abgeschlossen hat, kehrt das Antwortpaket zum Lastausgleichsserver zurück, und der Lastausgleichsserver ändert die Quelladresse des Pakets in seine eigene IP-Adresse und sendet es an den Browser des Benutzers.


          • Lastausgleich der Datenverbindungsschicht: Dreiecksübertragungsmodus, die IP-Adresse des Lastausgleichsservers wird während des Datenverteilungsprozesses nicht geändert, nur die Ziel-Mac-Adresse wird geändert und die virtuelle IP-Adresse aller Server ist konsistent mit der IP-Adresse des Lastausgleichsservers. Die Quelladresse und die Zieladresse des Datenpakets werden nicht geändert. Da die IP konsistent ist, kann das Antwortdatenpaket direkt an den Browser des Benutzers zurückgegeben werden. Wird auch Direct Routing (DR) genannt. Stellt das Produkt LVS (Linux Virtual Server) dar.


          • 3. Lastausgleichsalgorithmus:


          • Round Robin (RR): Alle Anfragen werden an jeden Anwendungsserver verteilt

          • Weighted Round Robin (WRR): Entsprechend der Leistung der Serverhardware, Die Verteilung erfolgt entsprechend der konfigurierten Gewichtung auf der Grundlage von Abfragen.


          • Zufällig: Anforderungen werden jedem Anwendungsserver zufällig zugewiesen.


          • Least Connections: Aufzeichnungsserver. Die Anzahl der verarbeiteten Verbindungen und neue Anforderungen werden verteilt zum Server mit den wenigsten Verbindungen


          • Quell-Hashing: Hash-Berechnung basierend auf der IP-Adresse der Anforderungsquelle


          • C. Verteiltes Skalierbarkeitsdesign des Cache-Clusters

          • 1 Cache-Cluster

          Geben Sie das Routing-Algorithmus-Modul über KEY ein, und der Routing-Algorithmus berechnet einen Memcached-Server zum Lesen und Schreiben. 2. Skalierbarkeitsherausforderungen des verteilten Memcached-Cache-Clusters

          Ein einfacher Routing-Algorithmus besteht darin, die Rest-Hash-Methode zu verwenden: Teilen Sie den Hash-Wert der Cache-Daten KEY durch die Anzahl der Server und ermitteln Sie die Servernummer, die dem Rest entspricht. Lässt sich nicht gut skalieren.

          3. Der

          konsistente Hash-Algorithmus des verteilten Caches

          Erstellen Sie zunächst einen ganzzahligen Ring mit einer Länge von 2 hoch 32 (konsistenter Hash-Ring) und platzieren Sie den Cache-Serverknoten entsprechend dem Hash-Wert in diesem Hash des Knotennamens. Berechnen Sie dann den Hash-Wert basierend auf dem KEY-Wert der Daten, die zwischengespeichert werden müssen, und suchen Sie dann im Uhrzeigersinn im Hash-Ring nach dem Cache-Serverknoten, der dem Hash-Wert des KEY am nächsten liegt, um die Hash-Zuordnungssuche von KEY zu abzuschließen Server.

          D. Skalierbarkeitsdesign eines Datenspeicher-Serverclusters

          1. Skalierbarkeitsdesign eines relationalen Datenbankclusters

          Datenreplikation (Master-Slave), Tabellen- und Datenbankpartitionierung, Daten-Sharding (Cobar) 2.NoSQL-Datenbankskalierbarkeit design

          NoSQL verzichtet auf das normalisierte Datenmodell basierend auf relationaler Algebra und Structured Query Language (SQL) und garantiert keine Transaktionskonsistenz (ACID). Verbesserte Hochverfügbarkeit und Skalierbarkeit. (Apache HBase)

    Das obige ist der detaillierte Inhalt vonWas sind die Grundprinzipien der technischen Architektur großer MySQL-Websites?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    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
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!