Heim >Datenbank >MySQL-Tutorial >Kernfallanalyse der technischen Architektur großer MySQL-Websites
7. On-Demand: Skalierbare Architektur der Website
Erweiterbarkeit (Erweiterbarkeit): Bezieht sich auf die Fähigkeit, Systemfunktionen mit minimalen Auswirkungen auf das bestehende System kontinuierlich zu erweitern oder zu verbessern. Es handelt sich um das Öffnungs- und Schließprinzip auf der Ebene des Systemarchitekturentwurfs. Der Architekturentwurf berücksichtigt zukünftige Funktionserweiterungen. Wenn dem System neue Funktionen hinzugefügt werden, müssen die Struktur und der Code des vorhandenen Systems nicht geändert werden.
Skalierbarkeit: bezieht sich auf die Fähigkeit des Systems, seine eigenen Rechen- und Verarbeitungskapazitäten zu verbessern (reduzieren), indem es den Umfang seiner eigenen Ressourcen vergrößert (verringert).
A. Erstellen Sie eine skalierbare Website-Architektur
1 Der größte Wert eines Software-Architekten liegt nicht darin, wie viele fortschrittliche Technologien er beherrscht, sondern in der Fähigkeit, ein großes System in N Teile mit geringer Kopplung zu unterteilen. Zu den Untermodulen zählen horizontale Business-Module und vertikale Basis-Technologie-Module.
2. Der Kerngedanke ist die Modularisierung. Auf dieser Grundlage wird die Kopplung zwischen Modulen reduziert und die Wiederverwendbarkeit von Modulen verbessert.
B. Verwenden Sie verteilte Nachrichtenwarteschlangen, um die Systemkopplung zu reduzieren
1. Ereignisgesteuerte Architektur: Durch Übertragung von Ereignisnachrichten zwischen Modulen mit geringer Kopplung, um Module zu verwalten. Es ist lose gekoppelt und verwendet Ereignisnachrichten Kommunikation zur Vervollständigung der Zusammenarbeit zwischen Modulen. Üblicherweise werden verteilte Nachrichtenwarteschlangen verwendet.
Die Nachrichtenwarteschlange funktioniert nach dem Publish-Subscribe-Modell. Der Absender der Nachricht veröffentlicht die Nachricht und ein oder mehrere Nachrichtenempfänger abonnieren die Nachricht.
2. Verteilte Nachrichtenwarteschlange
Die Warteschlange ist eine First-In-First-Out-Struktur. Anwendungen können die verteilte Nachrichtenwarteschlange über die Remote-Zugriffsschnittstelle verwenden, um so einen verteilten asynchronen Aufruf zu erreichen .
Die Nachrichtenerstelleranwendung sendet die Nachricht über die RAS-Schnittstelle an den Nachrichtenwarteschlangenserver. Der Nachrichtenwarteschlangenserver schreibt die Nachricht in die lokale Speicherwarteschlange und gibt sofort eine erfolgreiche Antwort an den Nachrichtenersteller zurück. Der Nachrichtenwarteschlangenserver sucht anhand der Nachrichtenabonnementliste nach der Nachrichtenkonsumentenanwendung, die die Nachricht abonniert hat, und sendet die Nachrichten in der Nachrichtenwarteschlange über die Remote-Kommunikationsschnittstelle gemäß dem First-In-First-Out-Prinzip an das Nachrichtenkonsumentenprogramm (FIFO)-Prinzip.
Verteilte Nachrichtenwarteschlangen können sehr komplex sein, zum Beispiel kann sie ESB (Enterprise Service Bus) unterstützen, SOA (Service Oriented Architecture) unterstützen oder ganz einfach MySQL-Datensätze verwenden: Das Nachrichtenerzeugerprogramm verarbeitet Nachrichten als Datensätze Nach dem Schreiben in die Datenbank fragt das Nachrichtenkonsumentenprogramm die Datenbank ab und sortiert die Datensätze nach dem Schreibzeitstempel, wodurch eine de facto verteilte Nachrichtenwarteschlange implementiert wird.
1. Verteilte Dienste zerlegen die Systemkopplung über Schnittstellen, und verschiedene Subsysteme führen Dienstaufrufe über die Schnittstellenbeschreibung von Desert Rose durch. 2. Probleme bei der Kompilierung und Bereitstellung; Erschöpfung der Datenbankverbindungen; Lösung
Vertikale Aufteilung: Aufteilung in Mehrere kleine Anwendungen
Nachteile: aufgeblähter Registrierungs- und Erkennungsmechanismus; relativ hoher Overhead für HTTP-Remotekommunikation;
E. Verwenden Sie eine offene Plattform, um ein Website-Ökosystem aufzubauen.
8. Uneinnehmbar: Website-Sicherheitsarchitektur
A. XSS-Angriff
XSS-Angriff, auch bekannt als Cross Site Script, bezieht sich auf eine Angriffsmethode, bei der Hacker Webseiten manipulieren, schädliche HTML-Skripte einschleusen und den Browser des Benutzers steuern, um schädliche Vorgänge auszuführen, wenn Benutzer Webseiten durchsuchen.
Eine Art von Angriff ist ein Reflexionstyp. Der Angreifer veranlasst den Benutzer, auf einen mit einem bösartigen Skript eingebetteten Link zu klicken, um den Zweck des Angriffs zu erreichen.
Die andere Art von Angriff ist ein persistenter XSS-Angriff. Der Hacker sendet einen Link, der ein bösartiges Skript enthält, in der Datenbank der angegriffenen Website. Wenn der Benutzer die Webseite durchsucht, wird das bösartige Skript in die normale Seite eingefügt, um den Zweck des Angriffs zu erreichen. Es wird häufig in Webanwendungen wie Foren und Blogs verwendet.
Vorbeugende Maßnahmen umfassen das Desinfizieren und Filtern gefährlicher Zeichen und das Verhindern des Zugriffs von Seiten-JS auf Cookies mit dem HttpOnly-Attribut.
2. Injektionsangriffe werden in SQL-Injection und OS-Injection unterteilt Injektion Erhalten Sie die Datenbankstruktur: Verwenden Sie Open-Source-Softwareprogramme, Fehlerecho, Blindinjektion: Desinfektion; Parameterbindung, Verwendung vorkompilierter Mittel, Bindungsparameter
3
Legen Sie den Entschlüsselungsalgorithmus in das Anwendungssystem und den Schlüssel in einen unabhängigen Server. Während der eigentlichen Speicherung wird der Schlüssel in mehrere Teile aufgeteilt und verschlüsselt und auf verschiedenen Speichermedien gespeichert, um die Sicherheit des Schlüssels zu berücksichtigen. und gleichzeitig die Leistung verbessern.
C. Informationsfilterung und Anti-Spam
1. Textabgleich: Lösen Sie das Problem der Filterung sensibler Wörter Ein kleiner Teil des Inhalts kann durch reguläre Ausdrücke ersetzt werdenManchmal ist es auch erforderlich, eine Rauschunterdrückungsverarbeitung durchzuführen. wie „Arab_rab“
3. Blacklist: Hash-Tabelle, Bloom-Filter
2. Risikokontrolle
Die Maschine identifiziert automatisch risikoreiche Transaktionen und Informationen und sendet sie zur manuellen Überprüfung an Risikokontrollprüfer Durch die ständige manuelle Entdeckung neuer Technologien und Methoden werden die Risikoarten schrittweise verbessert.
Regelmodul: Wenn bestimmte Indikatoren einer Transaktion bestimmte Bedingungen erfüllen, wird davon ausgegangen, dass ein hohes Betrugsrisiko besteht.
Statistisches Modell: Verwenden Sie Klassifizierungsalgorithmen oder komplexere Algorithmen für maschinelles Lernen, um intelligente Statistiken durchzuführen. Der Klassifizierungsalgorithmus wird auf der Grundlage der betrügerischen Transaktionsinformationen in historischen Transaktionen trainiert. Anschließend werden die gesammelten und verarbeiteten Transaktionsinformationen in den Klassifizierungsalgorithmus eingegeben, um die Transaktionsrisikobewertung zu erhalten.
9. Fallanalyse der Architekturentwicklung von Taobao
1 -Analyse des LeistungsarchitekturdesignsLAMP+ Open-Source-Produkte, GeoDNS, LVS, Squid, Lighttpd, PHP, Memcached, Lucene, MySQL
1 . Front-End-Leistungsoptimierung
Der Kern der Front-End-Architektur ist der Reverse-Proxy-Server-Squid-Cluster, dessen Last von LVS ausgeglichen und vor dem Reverse-Proxy über CDN zurückgegeben wird.
Wikipedia-CDN-Caching-Richtlinien: Inhaltsseiten enthalten keine dynamischen Informationen. Jede Inhaltsseite verfügt über eine eindeutige REST-Cache-Steuerinformation.
2 Leistungsoptimierung: Verwenden Sie APC, Imagemagick, Tex und ersetzen Sie die PHP-String-Suchfunktion starter(), um einen optimierteren Algorithmus zu verwenden 3 Der Inhalt der zwischengespeicherten Daten im lokalen Speicher des Anwendungsservers sollte in einem Format vorliegen, das vom Anwendungsserver direkt verwendet werden kann. Im Vergleich zu Datenbanken ist die dauerhafte Verbindung von Memcached sehr günstig bei Bedarf
MySQL
Verwenden Sie größeren Serverspeicher
11. Hochverfügbarkeitsarchitektur-Designanalyse des massiven verteilten Speichersystems Doris
Für ein Datenspeichersystem bedeutet Hochverfügbarkeit: Hochverfügbarkeitsdienste, hochzuverlässige Daten
A. Verteilung Hochverfügbarkeit Architektur des Speichersystems
1. Redundanz: Server-Hot-Backup, Mehrfachdatenspeicherung
2. Gesamtsystemaufteilung:
Anwendungsserver: Der Client des Speichersystems initiiert Datenoperationsanforderungen an das System
Datenspeicherserver: Der Kern des Speichersystems, der Daten speichert und auf Datenoperationsanforderungen vom Anwendungsserver reagiert
Management-Center-Server: ein kleiner Servercluster, der aus zwei Maschinen besteht: primär aktiv, heiß Backup, Verantwortlich für Cluster-Management, Integritätserkennung von Datenspeicher-Clustern, Cluster-Adress-Konfigurationsinformationsdienste für Anwendungsserver usw.
B ?? Server
4. Permanente Fehlerbeseitigung: Ermöglichen Sie den Ersatz dauerhaft ausgefallener Server12. Fallanalyse des Online-Shopping-Flash-Sale-Systems
A. Technische Herausforderungen von Flash-Sale-Aktivitäten:
Auswirkungen auf die bestehendes Website-Geschäft, hohe gleichzeitige Anwendungen, Datenbanklast, plötzlicher Anstieg der Netzwerk- und Serverbandbreite, direkte Bestellung
Unabhängige Bereitstellung des Flash-Sale-Systems
Statisierung von Flash-Sale-Produktseiten
A. Auch das Schreiben von Protokollen kann zu Fehlern führen
Die Protokollausgabekonfiguration der Anwendung und die Protokollausgabe von Drittanbieterkomponenten müssen separat konfiguriert werden
Überprüfen Sie die Protokollkonfigurationsdatei, lassen Sie uns mit den Protokollen spielen. Warnen Sie zumindest. Es müssen zu viele Fehlerprotokolle deaktiviert werden, die möglicherweise von einigen Drittanbieterkomponenten ausgegeben werden. B. Fehler, die durch hohe gleichzeitige Zugriffe auf die Datenbank verursacht werden.
D. Verursachte Cache-Fehler
Kleine Dateien und große Dateien sollten nicht gemeinsam genutzt werden. Fehler, die durch Missbrauch der Produktionsumgebung verursacht werden Seien Sie besonders vorsichtig, wenn Sie auf die Produktionsumgebung zugreifen. Bitte lassen Sie die Datenbank von einem dedizierten DBA verwalten wurde eingereicht; verstärken Sie die Codeüberprüfung, lassen Sie vor der Einreichung eine Codeüberprüfung durchführen und teilen Sie die Verantwortung für durch den Code verursachte Fehler.
1. Es sind Dinge, die Menschen ausmachen, nicht Menschen, die Dinge ausmachen
2. Der Entwurf sollte visuell sein: Welchen Wert kann das Produkt für Benutzer schaffen, welche Marktziele kann es erreichen und wie wird das Produkt letztendlich aussehen? 3. Der Entwurf sollte einfach sein: Erklären Sie in einem Satz: Was wir sind tun
4. Architekten müssen sich auf den Zielentwurf konzentrieren und auf alle vom Entwurf abweichenden Entwürfe und Entscheidungen achten. Notwendige Änderungen müssen von allen besprochen werden und die Zustimmung aller einholen .
D. Beteiligen Sie sich gemeinsam an der Architektur1 Lassen Sie nicht zu, dass der Architekt allein den Rahmen und die Architekturdokumente verwaltet.
E Architektur und technische Lösungen Im Wesentlichen darauf achten, diese Lösungen verstehen und akzeptieren. Architekten sollten nicht zu sensibel sein und ihre Meinungen offen äußern und nach Gemeinsamkeiten suchen, sich aber Differenzen vorbehalten2 Argumente über technische Details sollten sofort überprüft werden, anstatt weiter zu diskutieren3 Wenn nicht alle über die Architektur diskutieren, zeigt sich das dass die Architektur in das Projekt integriert wurde, das System und die Entwickler erfolgreich sind, und je früher Architekten vergessen werden, desto erfolgreicher ist die Architektur. sondern auch, um Menschen und letztlich uns selbst zu erreichen
2. Ein Projekt muss nicht nur Mehrwert für Kunden schaffen und Gewinne für das Unternehmen erwirtschaften, sondern es den Projektmitgliedern auch ermöglichen, zu wachsen3 Der Architekt sollte während des Projektprozesses nicht versuchen, irgendetwas zu kontrollieren, sondern einen flexiblen Plan haben. Während der Entwurf voranschreitet, wird sich das Team um sich selbst kümmern Lösen Sie reale Probleme, aber oft wissen die Leute nicht, was das eigentliche Problem ist.Während des Softwareentwicklungsprozesses treten auch viele Probleme auf. Es ist notwendig, die Interessen aller Parteien zu koordinieren, um die größtmögliche Unterstützung zu erhalten Entwicklungsressourcen. Viele Dinge müssen gelöst werden. Nur so kann der ursprüngliche Entwurf des Softwaredesigns verwirklicht werden.
A. Entdecken Sie Probleme und finden Sie Durchbrüche
Wenn Erwartungen nicht erfüllt werden können, werden die Menschen das Gefühl haben, dass etwas nicht stimmt, weil das Problem in der Lücke zwischen Erfahrung und Erwartungen liegt. Es gibt zwei Möglichkeiten, Probleme zu beseitigen: das Erlebnis verbessern oder die Erwartungen senken. Nur Ihre Erwartungen zu senken, wird das Problem nicht lösen. Im Gegenteil, Sie müssen sich der Differenz zwischen Erwartungen und tatsächlicher Erfahrung stellen, damit Sie das Problem erkennen und einen Durchbruch finden können.2. Das erste, was neue Mitarbeiter tun müssen, ist, sich in das Team zu integrieren.
3. Das letzte, was neue Mitarbeiter tun müssen, ist, ihre Fähigkeiten unter Beweis zu stellen.B. Stellen Sie Fragen und suchen Sie Unterstützung
2. Tipps zum Stellen von Fragen:
Stellen Sie Ihrem Chef geschlossene Fragen (geben Sie den AB-Plan vor und lassen Sie Ihren Chef entscheiden, welches besser ist) , geben Untergebenen offene Fragen stellen
Auf Probleme hinweisen, anstatt Menschen zu kritisieren
Stellen Sie Fragen auf angenehme Weise
16. Sprechende Website-Architekten
A. Teilen Sie Architekten nach ihren Rollen auf
Design-Architekten, Feuerwehrarchitekten und Evangelisten Typ-Architekt, Geek-Typ-Architekt
B Architekten werden nach Effekt unterteilt
Architekten, die sich nur auf Funktionen konzentrieren, Architekten, die sich auf Nicht-Funktionen konzentrieren, Architekten, die sich auf Teamorganisation und -management konzentrieren, Architekten, die sich auf Produktabläufe konzentrieren, Architekten, die sich auf die Zukunft des Produkts konzentrieren
Anhang A: Überblick über groß angelegte Website-Technologien
A. Front-End-Architektur
Browseroptimierungstechnologie, CDN, statische und dynamische Trennung, unabhängige Bereitstellung statischer Ressourcen, Image-Service, Reflection-Proxy , DNS
B. Anwendungsschichtarchitektur
Entwicklungsframework, Seitenrendering, Lastausgleich, Sitzungsverwaltung, dynamische Seitenstatik, Geschäftsaufteilung, virtualisierter Server
Verteilte Nachrichtenübermittlung, verteilte Dienste, verteilter Cache, verteilte Konfiguration
D Ebenenarchitektur
Verteilte Dateien, relationale Datenbanken, NoSQL-Datenbanken, Datensynchronisation
E. Backend-Architektur
Suchmaschinen, Data Warehouses, Empfehlungssysteme
F. Datenerfassung (Protokoll) und Überwachung
Browser Datenerfassung, Servergeschäftserfassung, Serverleistungsdatenerfassung, Systemüberwachung, Systemalarm
Sicherheitsarchitektur
Web-Angriffe, Datenschutz
H Rechenzentrums-Computerraumarchitektur
Computerraum, Schrank, Server
Das obige ist der detaillierte Inhalt vonKernfallanalyse der technischen Architektur großer MySQL-Websites. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!