Heim  >  Artikel  >  10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

Java后端技术全栈
Java后端技术全栈nach vorne
2023-08-23 15:03:02700Durchsuche


Dieser Artikel ist eine technische Zusammenfassung des Erlernens einer groß angelegten verteilten Website-Architektur. Eine kurze Beschreibung der Architektur einer leistungsstarken, hochverfügbaren, skalierbaren und erweiterbaren verteilten Website sowie eine Architekturreferenz werden gegeben. Ein Teil des Artikels besteht aus Lesenotizen und ein Teil aus einer Zusammenfassung persönlicher Erfahrungen, die einen guten Referenzwert für groß angelegte verteilte Website-Architekturen haben.

„Groß angelegte verteilte Website-Architekturtechnologie“

Riesige Datenmengen. Der Dienst ist hochverfügbar. Die Sicherheitsumgebung ist schlecht und anfällig für Netzwerkangriffe. Mehrere Funktionen, schnellere Entwicklung, häufige Veröffentlichungen. Entwickeln Sie sich schrittweise von klein zu groß. Benutzer- zentriertKostenloser Service, kostenpflichtige Erfahrung

2. Große Website-Architekturziele

  • Hohe Leistung: Bieten Sie ein schnelles Zugriffserlebnis.
  • Hohe Verfügbarkeit: Der Website-Service ist immer normal erreichbar.
  • Skalierbar: Rechenleistung durch Hardware erhöhen/verringern, erhöhen/verringern.
  • Sicherheit: Bietet sicheren Website-Zugriff und Datenverschlüsselung, sichere Speicherung und andere Strategien.
  • Erweiterbarkeit: Neue Funktionen/Module bequem hinzufügen/entfernen.
  • Agilität: auf Anfrage, schnelle Reaktion;
3. Großes Website-Architekturmodell

  • Schichtung: Kann im Allgemeinen in Anwendungsschicht und Serviceschicht unterteilt werden. Daten Schicht, Verwaltungsschicht und Analyseschicht;
  • Segmentierung: im Allgemeinen nach Geschäfts-/Modul-/Funktionsmerkmalen unterteilt, beispielsweise ist die Anwendungsschicht in Homepage und Benutzercenter unterteilt.
  • Verteilt: Stellen Sie Anwendungen separat bereit (z. B. auf mehreren physischen Maschinen) und arbeiten Sie über Remote-Aufrufe zusammen.
  • Cluster: Eine Anwendung/ein Modul/eine Funktion wird in mehreren Kopien (z. B. mehreren physischen Maschinen) bereitgestellt, um externen Zugriff durch Lastausgleich bereitzustellen.
  • Caching: Platzieren Sie Daten möglichst nah an der Anwendung oder dem Benutzer, um den Zugriff zu beschleunigen.
  • Asynchron: Asynchronisieren Sie synchrone Vorgänge. Der Client sendet eine Anfrage, ohne auf die Antwort des Servers zu warten. Nachdem der Server die Verarbeitung abgeschlossen hat, informiert er den Anforderer über Benachrichtigungen oder Abfragen. Bezieht sich im Allgemeinen auf: Anforderung-Antwort-Benachrichtigungsmodus.
  • Redundanz: Erhöhen Sie Replikate, um Verfügbarkeit, Sicherheit und Leistung zu verbessern.
  • Sicherheit: Wirksame Lösungen für bekannte Probleme haben und Erkennungs- und Abwehrmechanismen für unbekannte/potenzielle Probleme einrichten.
  • Automatisierung: Verwenden Sie Maschinen, um sich wiederholende Aufgaben zu erledigen, die kein menschliches Eingreifen durch Werkzeuge erfordern.
  • Agilität: Akzeptieren Sie aktiv veränderte Anforderungen und reagieren Sie schnell auf Geschäftsentwicklungsbedürfnisse.

4. Hochleistungsarchitektur

ist benutzerzentriert und bietet ein schnelles Webzugriffserlebnis. Die Hauptparameter sind kurze Reaktionszeit, große Fähigkeit zur gleichzeitigen Verarbeitung, hoher Durchsatz und stabile Leistungsparameter.

Kann in Front-End-Optimierung, Anwendungsschichtoptimierung, Codeschichtoptimierung und Speicherschichtoptimierung unterteilt werden.

  • Front-End-Optimierung: der Teil vor der Website-Geschäftslogik;
  • Browser-Optimierung: Reduzieren Sie die Anzahl der HTTP-Anfragen, verwenden Sie den Browser-Cache, aktivieren Sie die Komprimierung, CSS-JS-Position, JS asynchron, reduzieren Sie die Cookie-Übertragung; Beschleunigung, Reverse-Proxy;
  • Optimierung der Anwendungsebene: der Server, der das Website-Geschäft abwickelt. Verwenden Sie Cache, asynchron, Cluster
  • Codeoptimierung: angemessene Architektur, Multithreading, Wiederverwendung von Ressourcen (Objektpool, Thread-Pool usw.), gute Datenstruktur, JVM-Optimierung, Singleton, Cache usw.;
  • Speicheroptimierung: Cache, Solid-State-Laufwerk, Glasfaserübertragung, optimiertes Lesen und Schreiben, Festplattenredundanz, verteilter Speicher (HDFS), NoSQL usw.

5. Hochverfügbare Architektur

Große Websites sollten jederzeit zugänglich sein und normale externe Dienste bereitstellen. Aufgrund der Komplexität, Verteilung, günstigen Server, Open-Source-Datenbanken, Betriebssysteme und anderer Merkmale großer Websites ist es schwierig, eine hohe Verfügbarkeit sicherzustellen, was bedeutet, dass Ausfälle von Websites unvermeidlich sind.

Wie die Benutzerfreundlichkeit verbessert werden kann, ist ein Problem, das dringend gelöst werden muss. Zunächst müssen wir dies auf architektonischer Ebene berücksichtigen und bei der Planung die Verfügbarkeit berücksichtigen. In der Branche werden im Allgemeinen mehrere Neunen zur Darstellung von Verfügbarkeitsindikatoren verwendet, beispielsweise vier Neunen (99,99), und die zulässige Nichtverfügbarkeitszeit in einem Jahr beträgt 53 Minuten.

Zur Lösung von Hochverfügbarkeitsproblemen kommen im Allgemeinen unterschiedliche Strategien auf verschiedenen Ebenen zum Einsatz.

  • Anwendungsschicht: Im Allgemeinen zustandslos konzipiert, hat sie keinen Einfluss darauf, welcher Server für die Verarbeitung der einzelnen Anforderungen verwendet wird. Im Allgemeinen wird die Lastausgleichstechnologie (die das Problem der Sitzungssynchronisierung lösen muss) verwendet, um eine hohe Verfügbarkeit zu erreichen.
  • Dienstschicht: Lastausgleich, hierarchische Verwaltung, schneller Ausfall (Timeout-Einstellung), asynchrone Aufrufe, Dienstverschlechterung, idempotentes Design usw.
  • Datenschicht: Redundante Sicherung (kaltes, heißes Backup [synchron, asynchron], warmes Backup), Failover (Bestätigung, Übertragung, Wiederherstellung). Die berühmte theoretische Grundlage für eine hohe Datenverfügbarkeit ist die CAP-Theorie (Persistenz, Verfügbarkeit, Datenkonsistenz [starke Konsistenz, Benutzerkonsistenz, letztendliche Konsistenz]). Aufgrund des ursprünglichen Architekturdesigns können die Verarbeitungskapazitäten des Systems durch Hinzufügen/Reduzieren von Hardware (Servern) erhöht oder verringert werden.

Anwendungsebene: Teilen Sie die Anwendung vertikal oder horizontal auf. Anschließend erfolgt ein Lastausgleich für eine einzelne Funktion (DNS, HTTP [Reverse-Proxy], IP, Verbindungsschicht). Dienstschicht: ähnlich der Anwendungsschicht;

    Datenschicht: Unterdatenbank, Untertabelle, NoSQL usw.; häufig verwendeter Algorithmus Hash, konsistenter Hash.
  • 7. Skalierbare Architektur
  • kann problemlos Funktionsmodule hinzufügen/entfernen und bietet eine gute Skalierbarkeit auf Code-/Modulebene.

Modularisierung und Komponentisierung: hohe Kohäsion, geringe Kopplung, verbesserte Wiederverwendbarkeit und Skalierbarkeit. Stabile Schnittstelle: Definieren Sie eine stabile Schnittstelle. Während die Schnittstelle unverändert bleibt, kann sich die interne Struktur „nach Belieben“ ändern.

    Entwurfsmuster: Wenden Sie objektorientierte Ideen und Prinzipien an und verwenden Sie Entwurfsmuster, um auf Codeebene zu entwerfen.
  • Nachrichtenwarteschlange: Ein modulares System, das über Nachrichtenwarteschlangen interagiert, um Abhängigkeiten zwischen Modulen zu entkoppeln.
  • Verteilte Dienste: Öffentliche Module sind serviceorientiert, um die Nutzung durch andere Systeme zu ermöglichen und so die Wiederverwendbarkeit und Skalierbarkeit zu verbessern.
  • 8. Sicherheitsarchitektur
  • Wirksame Lösungen für bekannte Probleme haben und Erkennungs- und Abwehrmechanismen für unbekannte/potenzielle Probleme einrichten. Bei Sicherheitsproblemen müssen wir zunächst das Sicherheitsbewusstsein verbessern und einen wirksamen Sicherheitsmechanismus einrichten, um sicherzustellen, dass Serverkennwörter nicht durchgesickert sind, Kennwörter monatlich aktualisiert werden und nicht innerhalb von drei Wochen wiederholt werden können Sicherheitsscans usw. Den Aufbau des Sicherheitssystems institutionalisiert stärken. Gleichzeitig muss allen sicherheitsrelevanten Aspekten Beachtung geschenkt werden. Sicherheitsprobleme können nicht ignoriert werden, einschließlich Infrastruktursicherheit, Sicherheit von Anwendungssystemen, Datenvertraulichkeit und -sicherheit usw.
    • Infrastruktursicherheit: Hardwarebeschaffung, Betriebssystem- und Netzwerkumgebungssicherheit. Nutzen Sie im Allgemeinen formelle Kanäle, um hochwertige Produkte zu kaufen, ein sicheres Betriebssystem auszuwählen, Schwachstellen rechtzeitig zu beheben und Antivirensoftware und Firewalls zu installieren. Schützen Sie sich vor Viren und Hintertüren. Legen Sie Firewall-Richtlinien fest, richten Sie DDOS-Abwehrsysteme ein, verwenden Sie Angriffserkennungssysteme und führen Sie eine Subnetzisolierung durch.
    • Sicherheit des Anwendungssystems: Verwenden Sie während der Programmentwicklung die richtigen Methoden, um bekannte häufige Probleme auf Codeebene zu lösen. Verhindern Sie Cross-Site-Scripting-Angriffe (XSS), Injektionsangriffe, Cross-Site Request Forgery (CSRF), Fehlermeldungen, HTML-Kommentare, Datei-Uploads, Path Traversal usw. Sie können auch eine Webanwendungs-Firewall (z. B. ModSecurity) verwenden, um Sicherheitslückenscans und andere Maßnahmen zur Stärkung der Sicherheit auf Anwendungsebene durchzuführen.
    • Datenvertraulichkeit und -sicherheit: Speichersicherheit (Speicherung in zuverlässigen Geräten, Echtzeit-, geplante Sicherung), Aufbewahrungssicherheit (verschlüsselte Aufbewahrung wichtiger Informationen, Auswahl geeigneter Mitarbeiter für komplexe Aufbewahrung und Erkennung usw.), Übertragungssicherheit (Verhinderung von Datendiebstahl und Datenmanipulation);

    Häufig verwendete Verschlüsselungs- und Entschlüsselungsalgorithmen (Single-Hash-Verschlüsselung [MD5, SHA], symmetrische Verschlüsselung [DES, 3DES, RC]), asymmetrische Verschlüsselung [RSA] usw.

    9. Agilität

    Das architektonische Design sowie das Betriebs- und Wartungsmanagement der Website müssen sich an Änderungen anpassen und eine hohe Skalierbarkeit und Skalierbarkeit bieten. Bewältigen Sie problemlos die schnelle Geschäftsentwicklung, den plötzlichen Anstieg des Zugriffs mit hohem Datenverkehr und andere Anforderungen.

    Zusätzlich zu den oben vorgestellten architektonischen Elementen ist es auch notwendig, die Ideen des agilen Managements und der agilen Entwicklung einzuführen. Vereinheitlichen Sie Geschäft, Produkte, Technologie, Betrieb und Wartung, passen Sie sich den Anforderungen an und reagieren Sie schnell.

    10. Beispiele für groß angelegte Architektur

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    Das Obige verwendet eine siebenschichtige logische Architektur, die erste Schicht ist die Kundenschicht, die zweite Schicht ist die Front-End-Optimierungsschicht und die dritte Die Schicht ist die Anwendungsschicht, die vierte Schicht ist die Serviceschicht und die fünfte Schicht ist die Datenspeicherschicht, die sechste Schicht ist die Big-Data-Speicherschicht und die siebte Schicht ist die Big-Data-Verarbeitungsschicht.

    • Kundenebene: Unterstützt PC-Browser und mobile APP. Der Unterschied besteht darin, dass auf die mobile APP direkt über IP und Reverse-Proxy-Server zugegriffen werden kann.
    • Front-End-Schicht: Verwendung von DNS-Lastausgleich, lokaler CDN-Beschleunigung und Reverse-Proxy-Diensten;
    • Anwendungsschicht: Website-Anwendungscluster, vertikal nach Unternehmen aufgeteilt, z. B. Produktanwendungen, Mitgliederzentren usw.;
    • Dienstschicht: Bietet öffentliche Dienste wie Benutzerdienste, Bestelldienste, Zahlungsdienste usw.;
    • Datenschicht: unterstützt relationale Datenbankcluster (unterstützt die Lese-/Schreibtrennung), NOSQL-Cluster und ein verteiltes Dateisystem Cluster; und verteilter Cache;
    • Big Data Storage Layer: Unterstützt die Protokolldatenerfassung in der Anwendungsschicht und der Serviceschicht, strukturierte und halbstrukturierte Datenerfassung in relationalen Datenbanken und NOSQL-Datenbanken; offline durch Mapreduce-Datenanalyse oder Storm-Echtzeit-Datenanalyse, und die verarbeiteten Daten werden in einer relationalen Datenbank gespeichert. (Bei der tatsächlichen Verwendung werden Offline-Daten und Echtzeitdaten entsprechend den Geschäftsanforderungen klassifiziert und verarbeitet und in verschiedenen Datenbanken zur Verwendung durch die Anwendungsschicht oder Serviceschicht gespeichert.)
    Die Entwicklung der Systemarchitektur großer E-Commerce-Websites

    Die Systemarchitektur einer ausgereiften großen Website (wie Taobao, Tmall, Tencent usw.) ist nicht entworfen Mit vollständig hoher Leistung von Anfang an, hoher Verfügbarkeit, hoher Skalierbarkeit und anderen Merkmalen hat es sich mit der Zunahme der Benutzerzahl und der Erweiterung der Geschäftsfunktionen schrittweise weiterentwickelt Auch die Designideen haben große Veränderungen erfahren. Sogar das technische Personal ist von wenigen Leuten zu einer Abteilung oder sogar einer Produktlinie gewachsen. Die ausgereifte Systemarchitektur wird also mit der Geschäftsausweitung schrittweise verbessert, und es wird nicht über Nacht erreicht, dass Systeme mit unterschiedlichen Geschäftsmerkmalen ihren eigenen Schwerpunkt haben, wie z. B. Taobao, das die Suche, Bestellung und Verarbeitung von lösen muss Riesige Produktinformationen. Tencent muss beispielsweise die Nachrichtenübermittlung für Hunderte Millionen Benutzer bewältigen.

    Sie alle haben ihre eigenen Geschäftsmerkmale und auch die Systemarchitektur ist unterschiedlich. Trotzdem können wir auch gemeinsame Technologien aus diesen unterschiedlichen Website-Hintergründen finden. Diese Technologien und Methoden werden häufig in der Architektur großer Website-Systeme verwendet. Lassen Sie uns diese Technologien und Methoden verstehen, indem wir den Entwicklungsprozess großer Website-Systeme vorstellen. bedeutet.

    Die anfängliche Website-Architektur

    Die anfängliche Architektur, Anwendungen, Datenbanken und Dateien werden alle auf einem Server bereitgestellt, wie im Bild gezeigt:
    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    2. Trennung von Anwendungen, Daten und Dateien

    Mit der Ausweitung des Geschäfts kann ein Server die Leistungsanforderungen nicht mehr erfüllen, sodass Anwendungen, Datenbanken und Dateien auf separaten Servern bereitgestellt werden Konfigurieren Sie je nach Zweck des Servers unterschiedliche Hardware, um die besten Leistungsergebnisse zu erzielen.

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    3. Verwenden Sie Caching, um die Leistung der Website zu verbessern. In den meisten Website-Systemen wird gleichzeitig die Leistung optimiert Das Caching ist hauptsächlich auf das Vorhandensein heißer Daten zurückzuführen (das heißt, 80 % der Zugriffsanfragen landen bei 20 % der Daten), sodass wir heiße Daten zwischenspeichern können, um den Zugriff auf diese Daten zu reduzieren. Weg zur Verbesserung der Benutzererfahrung.

    Übliche Methoden zur Cache-Implementierung sind lokaler Cache und verteilter Cache. Natürlich gibt es auch CDNs, Reverse-Proxys usw., auf die später noch eingegangen wird. Der lokale Cache speichert, wie der Name schon sagt, Daten lokal auf dem Anwendungsserver. Er kann im Speicher oder in Dateien gespeichert werden. Der lokale Cache zeichnet sich durch hohe Geschwindigkeit aus, aber die Menge der zwischengespeicherten Daten ist aufgrund des begrenzten lokalen Speicherplatzes auch begrenzt. Das Merkmal des verteilten Caches besteht darin, dass er große Datenmengen zwischenspeichern kann und sehr einfach zu erweitern ist. Er wird häufig in Portal-Websites verwendet und ist nicht so schnell wie lokale Caches.
    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    4. Verwenden Sie Cluster, um die Leistung des Anwendungsservers zu verbessern. Als Eingang zur Website verarbeitet der Anwendungsserver häufig eine große Anzahl von Anforderungen. Ein Lastausgleichsserver wird vor dem Anwendungsserver bereitgestellt, um Benutzeranfragen zu planen und die Anfragen gemäß der Verteilungsrichtlinie an mehrere Anwendungsserverknoten zu verteilen.

    Zur häufig verwendeten Hardware für die Lastausgleichstechnologie gehört F5, das relativ teuer ist, und zu der Software gehören LVS, Nginx und HAProxy. LVS ist ein vierschichtiger Lastausgleich, der den internen Server basierend auf der Zieladresse und dem Port auswählt, und HAProxy ist ein siebenschichtiger Lastausgleich, der den internen Server basierend auf dem Nachrichteninhalt auswählen kann ist besser als Nginx und HAProxy, und die Leistung ist höher. Nginx und HAProxy sind besser konfigurierbar und können für die dynamische und statische Trennung verwendet werden (wählen Sie einen statischen Ressourcenserver oder einen Anwendungsserver basierend auf den Eigenschaften der Anforderungsnachricht).

    5. Datenbank-Lese-Schreib-Trennung und Datenbank- und Tabellen-Sharding

    Mit der Zunahme der Benutzerzahl ist die Datenbank zum größten Engpass geworden, um die Datenbankleistung zu verbessern und Tabellen-Sharding. Wie der Name schon sagt, besteht die Trennung darin, die Datenbank in eine Lesedatenbank und eine Schreibdatenbank zu unterteilen und die Datensynchronisierung über die primären und sekundären Funktionen zu erreichen. Datenbank-Sharding und Tabellen-Sharding werden in horizontales Sharding und vertikales Sharding unterteilt. Beim horizontalen Sharding wird eine sehr große Tabelle in einer Datenbank, beispielsweise eine Benutzertabelle, aufgeteilt. Die vertikale Segmentierung basiert auf verschiedenen Unternehmen. Beispielsweise werden Tabellen, die sich auf das Benutzergeschäft und das Produktgeschäft beziehen, in verschiedenen Datenbanken abgelegt.

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    6. Verwenden Sie CDN und Reverse-Proxy, um die Website-Leistung zu verbessern.

    Wenn unsere Server im Computerraum in Chengdu bereitgestellt werden, ist der Zugriff für Benutzer in Sichuan schneller, für Benutzer in Peking jedoch Der Zugriff Dies liegt daran, dass Sichuan und Peking zu unterschiedlichen entwickelten Regionen von China Telecom bzw. China Unicom gehören. Pekinger Benutzer müssen einen längeren Weg über den Internet-Router zurücklegen, um auf den Server in Chengdu zuzugreifen. Daher ist die Datenübertragungszeit relativ lang. In dieser Situation wird CDN häufig zur Lösung des Problems verwendet, um den Dateninhalt im Computerraum des Betreibers zwischenzuspeichern. Wenn Benutzer auf die Daten zugreifen, erhalten sie die Daten zunächst vom nächstgelegenen Betreiber, wodurch der Netzwerkzugriffspfad erheblich verkürzt wird. Zu den professionelleren CDN-Betreibern gehören Lanxun und Wangsu.

    Der Reverse-Proxy wird im Computerraum der Website bereitgestellt. Wenn die Benutzeranfrage eintrifft, greift er zunächst auf den Reverse-Proxy-Server zu. Wenn keine zwischengespeicherten Daten vorhanden sind Greifen Sie weiterhin auf den Anwendungsserver zu, um die Daten abzurufen. Zu den Reverse-Proxys gehören Squid und Nginx.

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    7. Verteiltes Dateisystem verwenden

    Die Anzahl der Benutzer steigt von Tag zu Tag, das Geschäftsvolumen wird immer größer und es werden immer mehr Dateien generiert Den Bedarf nicht mehr decken. Zu diesem Zeitpunkt ist die Unterstützung eines verteilten Dateisystems erforderlich. Zu den häufig verwendeten verteilten Dateisystemen gehören GFS, HDFS und TFS.

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    8. Verwenden Sie NoSQL und Suchmaschinen

    Für die Abfrage und Analyse großer Datenmengen verwenden wir NoSQL-Datenbanken und Suchmaschinen, um eine bessere Leistung zu erzielen. Nicht alle Daten müssen in relationalen Daten platziert werden. Zu den häufig verwendeten NoSQL-Systemen gehören MongoDB, HBase und Redis, und zu den Suchmaschinen gehören Lucene, Solr und Elasticsearch.

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    9. Teilen Sie den Anwendungsserver in Unternehmen auf.

    Da das Geschäft weiter wächst, müssen wir die Anwendung in Unternehmen aufteilen Nachrichten, Webseiten, Bilder und andere Dienste. Jede Geschäftsanwendung ist für einen relativ unabhängigen Geschäftsbetrieb verantwortlich. Unternehmen kommunizieren über Nachrichten oder teilen Datenbanken.

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    10. Erstellen Sie verteilte Dienste

    Zu diesem Zeitpunkt haben wir festgestellt, dass jede Geschäftsanwendung einige grundlegende Geschäftsdienste nutzt, z. B. Benutzerdienste, Bestelldienste, Zahlungsdienste und Sicherheitsdienste unterstützen Grundelemente jeder Geschäftsanwendung. Wir extrahieren diese Dienste und verwenden das Distributed Service Framework, um verteilte Dienste zu erstellen. Alis Dubbo ist eine gute Wahl. Ein Bild, das die E-Commerce-Architektur erklärt

    1. E-Commerce Der Grund dafür Fall10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    Derzeit gibt es mehrere Hauptkategorien verteilter groß angelegter Websites:
    • Große Portale wie NetEase, Sina usw.;
    • SNS-Websites wie Xiaonei, Kaixin.com usw.;
    • E-Commerce-Websites wie Alibaba, JD.com, Gome Online, Autohome usw.

    Große Portale sind im Allgemeinen Nachrichteninformationen, die mithilfe von CDN, Statisierung usw. optimiert werden können. Kaixin.com und andere Websites sind interaktiver und führen möglicherweise mehr NoSQL und verteiltes Caching ein und verwenden leistungsstarke Kommunikations-Frameworks. usw. E-Commerce-Websites weisen die Merkmale der beiden oben genannten Kategorien auf. Produktdetails können beispielsweise CDN verwenden und sind statisch. Personen mit hoher Interaktivität müssen NoSQL und andere Technologien verwenden. Daher nutzen wir E-Commerce-Websites als Fallbeispiel für die Analyse. 2. Anforderungen der E-Commerce-Website

    Benutzer können beim Kauf online mit dem Kundenservice kommunizieren.

    Nach Erhalt der Ware können Benutzer die Waren bewerten und bewerten.

    • Derzeit gibt es ein ausgereiftes Kauf-, Verkaufs- und Inventarsystem verbunden mit der Website;
    • Ich hoffe, die Geschäftsentwicklung in 3 bis 5 Jahren zu unterstützen.
    • Es wird erwartet, dass die Anzahl der Benutzer in 3 bis 5 Jahren 10 Millionen erreichen wird , Double 12, 8. März Männertag und andere Aktivitäten;
    • Weitere Funktionen finden Sie auf Websites wie JD.com oder Gome Online.
    • Kunden sind Kunden. Sie werden Ihnen nicht sagen, was sie wollen, sie werden Ihnen nur sagen, was sie wollen. Oft müssen wir die Bedürfnisse der Kunden anleiten und erforschen. Glücklicherweise gibt es eine übersichtliche Referenz-Website. Daher besteht der nächste Schritt darin, viele Analysen durchzuführen, die Branche zu kombinieren und auf Websites zu verweisen, um Kunden Lösungen anzubieten.
      Anforderungsfunktionsmatrix
      Der traditionelle Ansatz des Anforderungsmanagements verwendet Anwendungsfalldiagramme oder Moduldiagramme (Anforderungslisten), um Anforderungen zu beschreiben. Dabei wird häufig eine sehr wichtige Anforderung (nicht funktionale Anforderung) übersehen. Daher wird empfohlen, die Anforderungsfunktionsmatrix zur Beschreibung von Anforderungen zu verwenden. Die Nachfragematrix dieser E-Commerce-Website lautet wie folgt:
    • 3. Primäre Website-Architektur
    Allgemeine Website, der anfängliche Ansatz besteht aus drei Servern, einem zum Bereitstellen der Anwendung und einem zum Bereitstellen der Anwendung Wenn Sie die Datenbank bereitstellen, stellen Sie das NFS-Dateisystem bereit.

    Das ist ein relativ traditioneller Ansatz. Ich habe in den letzten Jahren eine Website mit mehr als 100.000 Mitgliedern, einem vertikalen Bekleidungsdesign-Portal und zahlreichen Bildern gesehen. Ein Server wird zum Bereitstellen von Anwendungen, Datenbanken und Bildspeichern verwendet. Es gab viele Leistungsprobleme. Wie unten gezeigt:

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    Allerdings hat die aktuelle Mainstream-Website-Architektur weltbewegende Veränderungen erfahren. Im Allgemeinen wird für das Hochverfügbarkeitsdesign ein Cluster-Ansatz verwendet. Zumindest sieht es so aus:

    10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

    • Verwenden Sie Cluster zu redundanten Anwendungsservern, um eine hohe Verfügbarkeit zu erreichen; (Lastausgleichsgeräte können zusammen mit der Anwendung bereitgestellt werden)
    • Datenbank verwenden Master-Backup-Modus zur Erzielung von Datensicherung und hoher Verfügbarkeit;

    4. Schätzungsschritte:

    Anzahl der registrierten Benutzer – Tägliches durchschnittliches UV-Volumen – Tägliches PV-Volumen der Parallelität;

    • Spitzenschätzung: 2- bis 3-faches der normalen Menge;
    • Berechnen Sie die Systemkapazität basierend auf dem Ausmaß der Parallelität (Parallelität, Anzahl der Transaktionen) und der Speicherkapazität.
    • Je nach Kundenbedarf: Die Anzahl der Benutzer wird in 3 bis 5 Jahren 10 Millionen registrierte Benutzer erreichen, und die Anzahl der gleichzeitigen Benutzer pro Sekunde kann geschätzt werden:
      • Der tägliche UV beträgt 2 Millionen (28 Prinzipien);
      • 30 Klicks pro Tag;
      • PV-Volumen: 200*30=60 Millionen;
      • Konzentrierte Besuche: 24 0,2=4,8 Stunden , es wird 60 Millionen 0,8=48 Millionen (28 Prinzipien);
      • Parallelität pro Minute: 4,8*60=288 Minuten, 4800/288=167.000 Besuche pro Minute (ungefähr gleich);
      • Parallelität pro Sekunde: 167.000/60 = 2780 (ungefähr gleich);
      • Unter der Annahme, dass die Spitzenzeit dreimal so hoch ist wie der Normalwert, kann die Anzahl der Parallelitäten pro Sekunde 8340 erreichen.
      • 1 Millisekunde = 1,3 Besuche

      Bedauern Sie, dass Sie Mathematik nicht gut gelernt haben? ! (Ich weiß nicht, ob die obige Berechnung falsch ist, haha~~) Serverschätzung: (Nehmen Sie den Tomcat-Server als Beispiel) Laut einem Webserver werden 300 gleichzeitige Berechnungen pro Sekunde unterstützt. Normalerweise werden 10 Server benötigt (ungefähr gleich); [Tomcat-Standardkonfiguration ist 150], in Spitzenzeiten werden 30 Server benötigt: 70/90-Prinzip; Die System-CPU wird im Allgemeinen auf etwa 70 % gehalten und erreicht in Spitzenzeiten 90 %. Sie verschwendet keine Ressourcen und ist relativ stabil. Speicher und E/A sind ähnlich. Die oben genannten Schätzungen dienen nur als Referenz, da Serverkonfiguration, Komplexität der Geschäftslogik usw. Auswirkungen haben. Hierbei werden CPU, Festplatte, Netzwerk etc. nicht mehr ausgewertet. 5. Analyse der Website-Architektur Der obigen Schätzung zufolge gibt es mehrere Probleme:

      • Eine große Anzahl von Servern muss bereitgestellt werden. In Spitzenzeiten können 30 Webserver bereitgestellt werden. Darüber hinaus werden diese dreißig Server nur bei Flash-Sales und Veranstaltungen genutzt, was eine Menge Verschwendung darstellt.
      • Alle Anwendungen werden auf demselben Server bereitgestellt, und die Kopplung zwischen Anwendungen ist schwerwiegend. Vertikales und horizontales Schneiden sind erforderlich.
      • Es gibt redundante Codes in einer großen Anzahl von Anwendungen.
      • Die Synchronisierung von Serversitzungen verbraucht viel Speicher und Netzwerkbandbreite.
      • Daten müssen häufig auf die Datenbank zugreifen, und der Datenbankzugriffsdruck ist enorm.

      Große Websites müssen im Allgemeinen die folgende Architekturoptimierung durchführen (Optimierung muss beim Entwurf der Architektur berücksichtigt werden. Sie wird normalerweise auf der Architektur-/Codeebene gelöst. Bei der Optimierung handelt es sich hauptsächlich um die Anpassung einfacher Parameter, z. B JVM-Tuning; wenn es sich bei der Optimierung um eine große Anzahl von Codeänderungen handelt, handelt es sich nicht um eine Optimierung, sondern um eine Umgestaltung):

      • Geschäftsaufteilung
      • Anwendungsclusterbereitstellung (verteilte Bereitstellung, Clusterbereitstellung und Lastausgleich)
      • Mehrstufiger Cache
      • Einzelanmeldung (verteilte Sitzung)
      • Datenbankcluster ( Lesen und Schreibtrennung, Unterdatenbank und Untertabelle .1 Geschäftsaufteilung
      • Vertikale Segmentierung basierend auf Geschäftsattributen, unterteilt in Produkt-Subsystem, Einkaufs-Subsystem, Zahlungs-Subsystem, Bewertungs-Subsystem, Kundendienst-Subsystem, Schnittstellen-Subsystem (Verbindung mit externen Systemen wie Einkauf, Verkauf, Inventar, SMS usw.). Basierend auf der Ebenendefinition von Geschäftssubsystemen können diese in Kernsysteme und Nicht-Kernsysteme unterteilt werden. Kernsystem: Produkt-Subsystem, Einkaufs-Subsystem, Zahlungs-Subsystem; Nicht-Kernsystem: Bewertungs-Subsystem, Kundenservice-Subsystem, Schnittstellen-Subsystem.
      • Die Rolle der Geschäftsaufteilung: Das Upgrade auf Subsysteme kann von spezialisierten Teams und Abteilungen durchgeführt werden, wobei professionelle Mitarbeiter professionelle Aufgaben zur Lösung von Kopplungs- und Skalierbarkeitsproblemen zwischen Modulen übernehmen, um zu vermeiden, dass eine zentrale Bereitstellung zu einem Problem führt Die Anwendung hängt und alle Anwendungen sind nicht verfügbar.
      • Die Rolle der Level-Definition: Wird verwendet, um wichtige Anwendungen bei Verkehrsspitzen zu schützen und eine ordnungsgemäße Verschlechterung zu erreichen.

      Architekturdiagramm nach der Aufteilung:

      Referenzbereitstellungsplan 2

      • Wie oben gezeigt, wird jede Anwendung separat bereitgestellt und das Kernsystem und das Nicht-Kernsystem werden bereitgestellt in Kombination

        6.2 Anwendungscluster-Bereitstellung (verteilt, geclustert, Lastausgleich)

        • Verteilte Bereitstellung: Die Anwendungen werden nach der Geschäftsaufteilung separat bereitgestellt und die Anwendungen kommunizieren remote über RPC direkt;
        • Cluster-Bereitstellung: Hoch Verfügbarkeitsanforderungen für E-Commerce-Websites müssen mindestens zwei Server für die Clusterbereitstellung bereitstellen.
        • Lastausgleich ist für Hochverfügbarkeitssysteme erforderlich -in Der Lastausgleich erreicht eine hohe Verfügbarkeit, und die relationale Datenbank erreicht eine hohe Verfügbarkeit durch aktive Methoden und Sicherungsmethoden.

        Architekturdiagramm nach der Clusterbereitstellung:

        10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

        6.3 Mehrstufiger Cache

        Cache kann im Allgemeinen in zwei Typen unterteilt werden: lokaler Cache und verteilter Cache entsprechend dem Speicherort. In diesem Fall wird die Cache-Methode der zweiten Ebene zum Entwerfen des Caches verwendet. Der Cache der ersten Ebene ist ein lokaler Cache und der Cache der zweiten Ebene ist ein verteilter Cache. (Es gibt auch Seiten-Caching, Fragment-Caching usw., bei denen es sich um feinkörnigere Unterteilungen handelt.) Der Cache der ersten Ebene, das Cache-Datenwörterbuch und häufig verwendete Hotspot-Daten sowie andere grundsätzlich unveränderliche/sich regelmäßig ändernde Informationen, der Cache der zweiten Ebene speichert den gesamten benötigten Cache. Wenn der Cache der ersten Ebene abläuft oder nicht verfügbar ist, wird auf die Daten im Cache der zweiten Ebene zugegriffen. Wenn kein Second-Level-Cache vorhanden ist, wird auf die Datenbank zugegriffen. Das Cache-Verhältnis beträgt im Allgemeinen 1:4, und Sie können die Verwendung von Cache in Betracht ziehen. (Theoretisch ist 1:2 ausreichend).

        10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

        Die folgenden Cache-Ablaufstrategien können je nach Geschäftsmerkmalen verwendet werden:

        • Cache-automatischer Ablauf;
        • Cache-ausgelöster Ablauf;

        6 .4 Single Sign-On (verteilt). Sitzung)

        Das System ist in mehrere Subsysteme unterteilt. Nach der unabhängigen Bereitstellung treten zwangsläufig Probleme bei der Sitzungsverwaltung auf. Im Allgemeinen können Sitzungssynchronisierung, Cookies und verteilte Sitzungsmethoden verwendet werden. E-Commerce-Websites werden im Allgemeinen mithilfe verteilter Sitzungen implementiert. Darüber hinaus kann auf Basis der verteilten Sitzung ein vollständiges Single-Sign-On- oder Account-Management-System aufgebaut werden.

        10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

        Prozessbeschreibung

        • Wenn sich der Benutzer zum ersten Mal anmeldet, schreiben Sie die Sitzungsinformationen (Benutzer-ID und Benutzerinformationen), z. B. die Benutzer-ID als Schlüssel, in die verteilte Sitzung.
        • Wenn sich der Benutzer erneut anmeldet , Rufen Sie die verteilte Sitzung ab. Wenn nicht, gehen Sie zur Anmeldeseite.
        • wird im Allgemeinen mithilfe der Cache-Middleware implementiert, sodass diese über eine Persistenzfunktion verfügt, die das Laden erleichtert Sitzungsinformationen aus dem persistenten Speicher, nachdem die verteilte Sitzung ausgefallen ist.
        • Beim Speichern einer Sitzung können Sie die Sitzungsaufbewahrungszeit festlegen, z. B. 15 Minuten, die nach Ablauf automatisch abläuft Mit der Cache-Middleware kann die implementierte verteilte Sitzung eine Sitzungssitzung gut simulieren.

        6.5 Datenbankcluster (Lese-/Schreibtrennung, Unterdatenbank und Untertabelle)

        Große Websites müssen riesige Datenmengen speichern, um eine hohe Datenspeicherung, hohe Verfügbarkeit und hohe Leistung zu erreichen, und zwar redundant Systemdesign wird allgemein übernommen. Im Allgemeinen gibt es zwei Möglichkeiten, Lesen und Schreiben sowie Unterdatenbank und Tabelle zu trennen. Lese- und Schreibtrennung: Um das Szenario zu lösen, in dem das Leseverhältnis viel größer als das Schreibverhältnis ist, können im Allgemeinen ein primäres und ein Standby-Gerät, ein primäres und mehrere Standby-Geräte oder mehrere primäre und mehrere Standby-Geräte verwendet werden. Dieser Fall basiert auf der Geschäftsaufteilung, kombiniert mit Datenbank-Sharding, Tabellen-Sharding und Lese-Schreib-Trennung. Wie unten gezeigt:

        10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

        Nach der Geschäftsaufteilung: Jedes Subsystem erfordert eine separate Bibliothek.
        • Wenn die separate Bibliothek zu groß ist, kann sie entsprechend den Geschäftsmerkmalen erneut in Bibliotheken unterteilt werden, z als Produktklassifizierungsbibliothek, Produktbibliothek;
        • Wenn die Tabelle eine große Datenmenge enthält, kann die Tabelle im Allgemeinen nach ID, Zeit usw. unterteilt werden .; (Erweiterte Verwendung ist konsistenter Hash)
        • Separates Lesen und Schreiben auf Basis von Unterdatenbanken und Tabellen;
        • Verwandte Middleware kann sich auf Cobar (Alibaba, derzeit nicht mehr gepflegt) beziehen, TDDL (Alibaba) , Atlas (Qihoo 360) und MyCat. Probleme mit Sequenzen, JOIN und Transaktionen nach dem Sharding von Datenbanken und Tabellen werden in der Theme-Freigabe von Sharding-Datenbanken und -Tabellen eingeführt.
        • 6.6 Servitization

        Extrahieren Sie Funktionen/Module, die mehreren Subsystemen gemeinsam sind, und nutzen Sie sie als öffentliche Dienste. Beispielsweise kann das Mitgliedschaftssubsystem in diesem Fall als öffentlicher Dienst extrahiert werden.
        10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur

        6.7 Nachrichtenwarteschlange

        Nachrichtenwarteschlange kann die Kopplung zwischen Subsystemen/Modulen lösen und ein asynchrones, hochverfügbares Hochleistungssystem erreichen. Es handelt sich um die Standardkonfiguration verteilter Systeme. In diesem Fall wird die Nachrichtenwarteschlange hauptsächlich in Einkaufs- und Lieferlinks verwendet.

        • Nachdem der Benutzer eine Bestellung aufgegeben hat, wird diese in die Nachrichtenwarteschlange geschrieben und dann direkt an den Client zurückgegeben.
        • Inventar-Subsystem: liest die Informationen der Nachrichtenwarteschlange und schließt die Inventarreduzierung ab; liest die Nachrichtenwarteschlangeninformationen zur Verteilung;
        10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur
        Zu den derzeit am häufigsten verwendeten MQs gehören Active MQ, Rabbit MQ, Zero MQ, MS MQ usw., die je nach Spezifität ausgewählt werden müssen Geschäftsszenarien. Es wird empfohlen, Rabbit MQ zu studieren.

        6.8 Andere Architekturen (Technologien)

        Zusätzlich zu den oben vorgestellten Geschäftsaufteilungen, Anwendungsclustern, mehrstufigem Caching, Single Sign-On, Datenbankclustern, Servitization und Nachrichtenwarteschlangen. Es gibt auch CDN, Reverse-Proxy, verteiltes Dateisystem, Big-Data-Verarbeitung und andere Systeme. Ich werde es hier nicht im Detail vorstellen. Sie können Du Niang/Google fragen, wenn Sie die Möglichkeit haben, es mit allen zu teilen. Zusammenfassung der Architektur Ich hoffe, dass einige der eingesetzten Technologien und Methoden Sie inspirieren werden.

Das obige ist der detaillierte Inhalt von10-Minuten-Schnelllösung |. Groß angelegte verteilte E-Commerce-Systemarchitektur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:Java后端技术全栈. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen