Fortgeschrittene Kenntnisse im Systemarchitekturdesign · Theorie und Praxis des Big-Data-Architekturdesigns

Inhaltsverzeichnis der Serienartikel

Fortgeschrittene Kenntnisse im Systemarchitekturdesign · Softwarearchitekturkonzepte, Architekturstile, ABSD, Architekturwiederverwendung, DSSA (1) [Systemarchitekt] Fortgeschrittene
Kenntnisse im Systemarchitekturdesign · Systemqualitätsattribute und Architekturbewertung (2) [Systemarchitekt]
Fortgeschrittene Kenntnisse in Systemarchitekturdesign · Softwarezuverlässigkeitsanalyse und -design (3) [Systemarchitekturdesigner]

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

Fügen Sie hier eine Bildbeschreibung ein

1. Probleme mit herkömmlichen Datenverarbeitungssystemen

1.1 Datenüberlastungsproblem herkömmlicher Datenbanken

Beim Entwurf der Datensystemarchitektur herkömmlicher Anwendungen greift die Anwendung direkt auf das Datenbanksystem zu. Wenn die Anzahl der Benutzerbesuche zunimmt, kann die Datenbank die zunehmende Last an Benutzeranforderungen nicht unterstützen, was dazu führt, dass der Datenbankserver nicht rechtzeitig auf Benutzeranforderungen reagieren kann und es zu Zeitüberschreitungsfehlern kommt.

Übliche Lösungen für dieses Problem sind wie folgt :
(1) asynchrone Verarbeitungswarteschlange hinzufügen
(2) horizontale Partitionierung der Datenbank einrichten
(3) Datenbank-Sharding oder Re-Sharding einrichten
(4) Lese-/Schreib-Trennungstechnologie einführen
(5) Sub-Sharding einführen Datenbank- und Untertabellentechnologie

1.2 Merkmale von Big Data

Big Data weist die Merkmale eines großen Volumens und eines starken Fehlers auf. Die Struktur ist nicht monoton Arten und viele andere Gründe. Neue Methoden müssen übernommen werden. Neue Technologien werden durch Computerarchitektur und intelligente Algorithmen repräsentiert; die Anwendung von Big Data konzentriert sich auf die Erforschung der Korrelation zwischen Daten und nicht auf den traditionellen logischen Kausalzusammenhang, also auf den Zweck und Wert von Big Data besteht darin, neues Wissen zu entdecken, Erkenntnisse zu gewinnen und wissenschaftliche Entscheidungen zu treffen.

Die moderne Big-Data-Verarbeitungstechnologie wird hauptsächlich in die folgenden Kategorien unterteilt :

(1) Basierend auf dem verteilten Dateisystem Hadoop.
(2) Verwenden Sie die Datenverarbeitungstechnologie Map/Reduce oder Spark.
(3) Verwenden Sie die Kafaka-Datenübertragungsnachrichtenwarteschlange und das Avro-Binärformat.

1.3 Nutzungsprozess von Big Data

Der Nutzungsprozess von Big Data ist in vier Prozesse unterteilt : Sammlung, Bereinigung, Statistik und Mining .

2. Analyse der Big-Data-Verarbeitungssystemarchitektur

2.1 Herausforderungen für Big-Data-Verarbeitungssysteme

Die größten Herausforderungen für Big-Data-Verarbeitungssysteme sind :
(1) Wie man Informationstechnologie und andere Mittel nutzt, um unstrukturierte und halbstrukturierte Daten zu verarbeiten.
(2) Wie man die Komplexität von Big Data, die Charakterisierungsmethode der Unsicherheitscharakterisierung und die Systemmodellierung von Big Data untersucht.
(3) Die Auswirkungen der Beziehung zwischen Datenheterogenität und Entscheidungsheterogenität auf die Entdeckung von Big-Data-Wissen und die Entscheidungsfindung im Management.

2.2 Eigenschaften von Big-Data-Verarbeitungssystemen

Zu den Attributen und Eigenschaften, die ein Big-Data-Verarbeitungssystem haben sollte, gehören :
Robustheit und Fehlertoleranz, geringe Latenz, horizontale Skalierbarkeit (Skalierung durch Verbesserung der Maschinenleistung), universelle, skalierbare Ad-hoc-Abfrage (Benutzer fragen entsprechend ihren eigenen Anforderungen ab), Minimaler Wartungsaufwand und debuggbar.

3. Typische Big-Data-Architektur

2.1 Lambda-Architektur

Die Lambda-Architektur ist ein fehlertolerantes und skalierbares verteiltes System zur gleichzeitigen Verarbeitung von Offline- und Echtzeitdaten.

Wie in der Abbildung gezeigt, Lambda-Architektur:
Fügen Sie hier eine Bildbeschreibung ein

Die Lambda-Architektur ist in die folgenden drei Schichten unterteilt:
(1) Batch-Schicht : speichert Datensätze. Die Kernfunktion dieser Schicht besteht darin, den Hauptdatensatz zu speichern. Die Batch-Schicht berechnet die Abfragefunktion für den Datensatz vor und erstellt die Abfrage entsprechende Ansicht. Batch Layer kann Offline-Daten sehr gut verarbeiten, es gibt jedoch viele Szenendaten, die kontinuierlich in Echtzeit generiert werden und eine Abfrageverarbeitung in Echtzeit erfordern. Für diese Situation ist Speed ​​​​Layer besser geeignet.

(2) Beschleunigungsschicht (Geschwindigkeitsschicht) : Die Batch-Schicht verarbeitet den gesamten Datensatz. Die Kernfunktion dieser Schicht besteht darin, inkrementelle Echtzeitdaten zu verarbeiten, während die Geschwindigkeitsschicht den neuesten inkrementellen Datenstrom verarbeitet. Aus Gründen der Effizienz aktualisiert die Geschwindigkeitsschicht die Echtzeitansicht nach dem Empfang neuer Daten kontinuierlich, während die Batch-Schicht die Batch-Ansicht direkt basierend auf dem gesamten Offline-Datensatz erhält.

(3) Serving Layer : Die Kernfunktion dieser Schicht besteht darin, auf Benutzeranfragen zu reagieren. Die Serving Layer wird verwendet, um die Ergebnisdatensätze in der Batch-Ansicht und der Echtzeitansicht zum endgültigen Datensatz zusammenzuführen.

Vor- und Nachteile der Lambda-Architektur:

Vorteile
(1) Gute Fehlertoleranz. Die Lambda-Architektur bietet eine benutzerfreundlichere Fehlertoleranz für Big-Data-Systeme. Sobald ein Fehler auftritt,
können wir den Algorithmus reparieren oder die Ansicht von Grund auf neu berechnen.
(2) Hohe Abfrageflexibilität. Die Stapelverarbeitungsschicht ermöglicht Ad-hoc-Abfragen für beliebige Daten.
(3) Leicht zu erweitern und zu verkleinern. Alle Stapelverarbeitungs-, Beschleunigungs- und Serviceschichten sind problemlos erweiterbar. Da es sich bei beiden um vollständig verteilte
Systeme handelt, können wir problemlos durch das Hinzufügen neuer Maschinen skalieren.
(4) Leicht zu erweitern. Das Hinzufügen einer Ansicht ist so einfach wie das Hinzufügen einiger neuer Funktionen zum Hauptdatensatz.

Nachteile
(1) Codierungsaufwand durch vollständige Szenenabdeckung.
(2) Es ist von Vorteil, für bestimmte Szenarien offline erneut zu trainieren.

2.2 Kappa-Architektur

Die Kappa-Architektur ist auf Basis der Lamada-Architektur optimiert, löscht die Batch-Layer-Architektur und ersetzt den Datenkanal durch eine Nachrichtenwarteschlange.
Fügen Sie hier eine Bildbeschreibung ein

Aus Sicht der Nutzungsszenarien gibt es zwei Hauptunterschiede zwischen der Kappa-Architektur und Lambda:

(1) Kappa ist keine alternative Architektur zu Lambda, sondern eine vereinfachte Version davon. Kappa hat die Unterstützung der Stapelverarbeitung aufgegeben und ist besser auf die Analyseanforderungen des Unternehmens selbst für inkrementelle Datenschreibszenarien, wie z. B. verschiedene Zeitreihendaten, vorbereitet Szenarien, natürliche Existenzzeit Das Konzept des Fenster-Streaming-Computing erfüllt direkt die Anforderungen an Echtzeit-Computing und historische Kompensationsaufgaben.

(2) Lambda unterstützt die Stapelverarbeitung direkt und eignet sich daher besser für die Analyse historischer Daten und Abfrageszenarien. Beispielsweise müssen Datenanalysten eine explorative Analyse historischer Daten gemäß einer beliebigen Kombination von Bedingungen durchführen und bestimmte Echtzeitanforderungen haben Ich hoffe, so schnell wie möglich eine Analyse zu erhalten. Dadurch kann die Stapelverarbeitung diese Anforderungen direkter und effizienter erfüllen.

Der Vorteil der Kappa-Architektur besteht darin, dass sie Echtzeit- und Offline-Code vereinheitlicht, die Wartung erleichtert, das Problem der Datenkaliber vereinheitlicht und das Problem der Zusammenführung von Offline-Daten in der Lambda-Architektur vermeidet. Beim Abfragen historischer Daten ist nur eine Wiedergabe erforderlich die gespeicherten historischen Daten. .

Auch die Mängel von Kappa liegen auf der Hand:

(1) Die von der Nachrichten-Middleware zwischengespeicherte Datenmenge und die Traceback-Daten weisen Leistungsengpässe auf. Normalerweise benötigt der Algorithmus Daten der letzten 180 Tage. Wenn eine Nachrichten-Middleware vorhanden ist, wird der Druck zweifellos groß sein. Gleichzeitig verbraucht das Zurückgehen und Überarbeiten von Daten von 180 Tagen gleichzeitig viele Echtzeit-Rechenressourcen.

(2) Wenn bei der Echtzeitdatenverarbeitung eine große Anzahl unterschiedlicher Echtzeitströme zur Korrelation angetroffen wird, hängt dies stark von den Fähigkeiten des Echtzeitcomputersystems ab, was aufgrund der Datenflusssequenz zu Datenverlust führen kann Probleme.

(3) Als Kappa das Offline-Datenverarbeitungsmodul aufgab, verzichtete es auch auf die stabilere und zuverlässigere Funktion des Offline-Computings. Obwohl Lambda die Stabilität des Offline-Computings gewährleistet, sind die Wartungskosten dualer Systeme hoch und die beiden Codesätze bringen Schwierigkeiten bei späterem Betrieb und Wartung mit sich. Derzeit gibt es einige Lösungen für die oben genannten Probleme des Kappa-Frameworks. Für das Problem der Datenleistung im Cache der Nachrichtenwarteschlange schlägt das Kappa+-Framework die Verwendung von HDFS zum Speichern von Zwischendaten vor. Als Reaktion auf das Problem der unzureichenden Anzeigeebenenfunktionen des Kappa-Frameworks haben einige Leute auch eine Lösung für das Hybridanalysesystem vorgeschlagen.

2.3 Vergleich zwischen Lambda-Architektur und Kappa-Architektur

Vergleich zwischen Lambda-Architektur und Kappa-Architektur

Inhalte vergleichen Lambda-Architektur Kappa-Architektur
Komplexität sowie Entwicklungs- und Wartungskosten Es müssen zwei Systeme (Motoren) gewartet werden, was komplex ist und hohe Entwicklungs- und Wartungskosten erfordert. Es muss nur ein System (Motor) gewartet werden, bei geringer Komplexität und geringen Entwicklungs- und Wartungskosten.
Rechenaufwand Stapelverarbeitung und Echtzeitberechnungen müssen ständig ausgeführt werden, was einen hohen Rechenaufwand erfordert. Vollständige Berechnungen werden bei Bedarf durchgeführt und der Berechnungsaufwand ist relativ gering.
Echtzeit Befriedigen Sie in Echtzeit Befriedigen Sie in Echtzeit
Funktionen zur Verarbeitung historischer Daten Vollständige Stapelverarbeitung, großer Durchsatz und starke Funktionen zur Verarbeitung historischer Daten Vollständige Streaming-Verarbeitung, relativ geringer Durchsatz und relativ schwache Funktionen zur Verarbeitung historischer Daten

Designauswahl der Lambda-Architektur und der Kappa-Architektur

Basierend auf der vergleichenden Analyse der beiden Architekturen wurden Geschäftsanforderungen, technische Anforderungen, Systemkomplexität, Entwicklungs- und Wartungskosten sowie historische Datenverarbeitungsfunktionen bei der Auswahl berücksichtigt. Obwohl es einen gewissen Unterschied im Rechenaufwand gibt, ist der Unterschied nicht sehr groß und wird daher nicht als Faktor betrachtet.

(1) Geschäftsanforderungen und technische Anforderungen
Benutzer müssen die Architektur entsprechend ihren eigenen Geschäftsanforderungen auswählen. Wenn das Unternehmen zwingend von Schlüsseltechnologien wie Hadoop, Spark und Strom abhängig ist, ist es möglicherweise angemessener, die Lambda-Architektur zu wählen ; Wenn Sie bei der Verarbeitung von Daten Streaming-Computing bevorzugen und auf die Flink-Computing-Engine angewiesen sind, ist die Wahl der Kappa-Architektur möglicherweise sinnvoller.

(2) Komplexität
Wenn die Parameter des Algorithmusmodells im Projekt häufig geändert werden müssen und die Lambda-Architektur wiederholt zwei Codesätze ändern muss, ist dies offensichtlich nicht so einfach und bequem wie die Kappa-Architektur. Wenn das Algorithmusmodell gleichzeitig Stapelverarbeitung und Streaming-Computing unterstützt oder Sie einen Code für die Datenverarbeitung verwenden möchten, können Sie gleichzeitig die Kappa-Architektur wählen. In einigen komplexen Fällen können die Ergebnisse der Echtzeitverarbeitung und der Offline-Verarbeitung nicht vereinheitlicht werden. Beispielsweise müssen einige Vorhersagemodelle für maschinelles Lernen das Trainingsmodell zunächst durch Offline-Stapelverarbeitung abrufen und es dann an die Echtzeit-Streaming-Verarbeitung senden Überprüfung und Test. In diesem Fall können die Stapelverarbeitungsschicht und die Stream-Verarbeitungsschicht nicht kombiniert werden, daher sollte die Lambda-Architektur ausgewählt werden.

(3) Entwicklungs- und Wartungskosten:
Die Lambda-Architektur erfordert ein gewisses Maß an Entwicklungs- und Wartungskosten, einschließlich der Entwicklung, Bereitstellung, Prüfung und Wartung zweier Systeme. Sie eignet sich für Entwickler mit ausreichenden wirtschaftlichen, technischen und personellen Ressourcen. Die Kappa-Architektur muss nur ein System warten, was für Entwickler geeignet ist, die nicht zu viel Kosten in Entwicklung und Wartung investieren möchten.

(4) Funktionen zur Verarbeitung historischer Daten
In einigen Fällen werden Projekte häufig mit umfangreichen Datensätzen zur Analyse in Kontakt kommen, beispielsweise regionale Niederschlagsdaten der letzten zehn Jahre. Diese Art von Daten eignet sich für die Analyse von Batch-Verarbeitungssystemen und Lambda Architektur sollte ausgewählt werden. Wenn Sie stets kleinräumige Datensätze verwenden und das Stream-Processing-System vollständig nutzbar ist, sollten Sie sich für die Kappa-Architektur entscheiden.

4. Praxis der Big-Data-Architektur

4.1 Groß angelegtes Videonetzwerk

Wie in der Abbildung gezeigt, ist die Lambda-Architektur in einer bestimmten Netzwerkolympiade:
Fügen Sie hier eine Bildbeschreibung ein

4.2 Werbeplattform

Wie in der Abbildung gezeigt, ist die Lambda-Architektur in einer bestimmten Online-Werbeplattform:
Fügen Sie hier eine Bildbeschreibung ein

Wie in der Abbildung dargestellt, ist die Architektur eines bestimmten Wertpapier-Big-Data-Systems:
Fügen Sie hier eine Bildbeschreibung ein

4.3 Intelligentes Big-Data-Entscheidungssystem für den E-Commerce

Wie in der Abbildung dargestellt, ist die Architektur eines Big-Data-Systems zur intelligenten Entscheidungsfindung im E-Commerce:
Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/weixin_30197685/article/details/132514675
Empfohlen
Rangfolge