Verteilte Systeme: Definition, Merkmale und Grundprinzipien

Inhaltsverzeichnis:

Verteilte Systeme: Definition, Merkmale und Grundprinzipien
Verteilte Systeme: Definition, Merkmale und Grundprinzipien
Anonim

Ein verteiltes System in seiner einfachsten Definition ist eine Gruppe von Computern, die zusammenarbeiten und für den Endbenutzer als eins erscheinen. Maschinen haben einen gemeinsamen Zustand, laufen gleichzeitig und können unabhängig voneinander betrieben werden, ohne die Betriebszeit des gesamten Systems zu beeinträchtigen. Tatsächlich ist die Verw altung solcher Systeme ein komplexes Thema voller Fallstricke.

Systemübersicht

Verteilte Systeme
Verteilte Systeme

Das verteilte System ermöglicht die gemeinsame Nutzung von Ressourcen (einschließlich Software), die gleichzeitig mit dem Netzwerk verbunden sind.

Beispiele für die Systemverteilung:

  1. Traditioneller Stapel. Diese Datenbanken werden im Dateisystem einer Maschine gespeichert. Wann immer der Benutzer Informationen erh alten möchte, kommuniziert er direkt mit dieser Maschine. Um dieses Datenbanksystem zu verteilen, müssen Sie es auf mehreren PCs gleichzeitig ausführen.
  2. Verteilte Architektur.

Verteiltes Systemkönnen Sie horizontal und vertikal skalieren. Beispielsweise wäre die einzige Möglichkeit, mehr Datenverkehr zu bewältigen, ein Upgrade der Hardware, auf der die Datenbank ausgeführt wird. Dies wird als vertikale Skalierung bezeichnet. Die vertikale Skalierung ist bis zu einer bestimmten Grenze gut, danach kann selbst die beste Ausrüstung nicht mehr den erforderlichen Datenverkehr bereitstellen.

Horizontale Skalierung bedeutet das Hinzufügen weiterer Computer, nicht die Aufrüstung der Hardware auf einem. Die vertikale Skalierung erhöht die Leistung auf die neuesten Hardwarefunktionen in verteilten Systemen. Diese Möglichkeiten reichen für Technologieunternehmen mit mittlerer bis hoher Arbeitsbelastung nicht aus. Das Beste an der horizontalen Skalierung ist, dass es keine Größenbeschränkungen gibt. Wenn die Leistung nachlässt, wird einfach eine weitere Maschine hinzugefügt, was im Prinzip unbegrenzt möglich ist.

Auf Unternehmensebene umfasst ein verteiltes Steuerungssystem oft verschiedene Schritte. In Geschäftsprozessen an den effizientesten Stellen des Computernetzwerks des Unternehmens. Bei einer typischen Verteilung mit einem dreistufigen verteilten Systemmodell erfolgt die Datenverarbeitung beispielsweise auf einem PC am Standort des Benutzers, die Geschäftsverarbeitung auf einem entfernten Computer und der Datenbankzugriff und die Datenverarbeitung auf einem völlig anderen Computer die vielen Unternehmen einen zentralisierten Zugriff bietet. Typischerweise diese Art von verteiltem Rechnenverwendet das Client-Server-Interaktionsmodell.

Hauptaufgaben

Hauptaufgaben
Hauptaufgaben

Zu den Hauptaufgaben eines Leitsystems gehören:

  1. Transparenz - Erzielen Sie ein einziges Systemabbild, ohne Standort, Zugriff, Migration, Parallelität, Failover, Standortwechsel, Persistenz und Ressourcendetails für Benutzer zu verbergen.
  2. Offenheit - Vereinfacht Netzwerkeinrichtung und Änderungen.
  3. Zuverlässigkeit - Im Vergleich zu einem einzelnen Kontrollsystem sollte es zuverlässig und konsistent sein und eine hohe Wahrscheinlichkeit von Fehlern aufweisen.
  4. Leistung - Verteilte Modelle bieten im Vergleich zu anderen Modellen einen Leistungsschub.
  5. Skalierbar - Diese verteilten Steuerungssysteme müssen in Bezug auf Gebiet, Verw altung oder Größe skalierbar sein.

Zu den Aufgaben von Vertriebssystemen gehören:

  1. Sicherheit ist ein großes Thema in einer verteilten Umgebung, besonders wenn öffentliche Netzwerke verwendet werden.
  2. Fehlertoleranz - kann schwierig sein, wenn das Modell mit unzuverlässigen Komponenten gebaut wird.
  3. Koordinierung und Verteilung von Ressourcen - kann schwierig sein, wenn es keine geeigneten Protokolle oder erforderlichen Richtlinien gibt.

Verteilte Computerumgebung

Verteilte Computerumgebung
Verteilte Computerumgebung

(DCE) ist ein weit verbreiteter Industriestandard, der ein solches verteiltes Rechnen unterstützt. Im Internet bieten Drittanbieter einige generische Dienste an,die in dieses Modell passen.

Grid-Computing ist ein Computermodell mit einer verteilten Architektur einer großen Anzahl von Computern, die mit der Lösung eines komplexen Problems verbunden sind. Beim Grid-Computing-Modell führen Server oder PCs unabhängige Aufgaben aus und sind über das Internet oder langsame Netzwerke lose miteinander verbunden.

Das größte Grid-Computing-Projekt ist SETI@home, bei dem einzelne Computerbesitzer freiwillig einige ihrer Multitasking-Verarbeitungszyklen mit ihrem Computer für das Search for Extraterrestrial Intelligence (SETI)-Projekt durchführen. Dieses Computerproblem verwendet Tausende von Computern, um Radioteleskopdaten herunterzuladen und zu durchsuchen.

Eine der ersten Anwendungen von Grid-Computing war das Knacken von kryptografischem Code durch eine Gruppe, die heute als "distributed.net" bekannt ist. Diese Gruppe beschreibt ihr Modell auch als verteiltes Rechnen.

Datenbankskalierung

Datenbankskalierung
Datenbankskalierung

Die Verbreitung neuer Informationen von Master zu Slave geschieht nicht sofort. Tatsächlich gibt es ein Zeitfenster, in dem Sie ver altete Informationen erh alten können. Wenn dies nicht der Fall wäre, würde die Schreibleistung leiden, da verteilte Systeme synchron auf die Ausbreitung von Daten warten müssten. Sie gehen mit ein paar Kompromissen einher.

Mit einem Slave-Datenbank-Ansatz ist es möglich, den Leseverkehr bis zu einem gewissen Grad zu skalieren. Hier gibt es viele Möglichkeiten. Aber Sie müssen nur den Schreibverkehr in mehrere aufteilenServer, weil er damit nicht umgehen kann. Eine Möglichkeit besteht darin, eine Multi-Master-Replikationsstrategie zu verwenden. Dort gibt es statt Slaves mehrere Hauptknoten, die das Lesen und Schreiben unterstützen.

Eine andere Methode heißt Sharding. Dabei wird der Server in mehrere kleinere Server, sogenannte Shards, aufgeteilt. Diese Shards haben unterschiedliche Einträge, es werden Regeln erstellt, welche Einträge in welchen Shard gehen. Es ist sehr wichtig, eine solche Regel zu erstellen, dass die Daten gleichmäßig verteilt werden. Ein möglicher Ansatz dafür besteht darin, Bereiche anhand einiger Datensatzinformationen zu definieren.

Dieser Shard Key sollte sehr sorgfältig gewählt werden, da die Last nicht immer gleich der Basis beliebiger Sp alten ist. Der einzige Shard, der mehr Anfragen erhält als die anderen, wird Hotspot genannt, und sie versuchen zu verhindern, dass er sich bildet. Nach der Aufteilung werden Neukalibrierungsdaten unglaublich teuer und können zu erheblichen Ausfallzeiten führen.

Datenbank-Konsensalgorithmen

Datenbank-Konsensalgorithmen
Datenbank-Konsensalgorithmen

DBs sind in verteilten Sicherheitssystemen schwierig zu implementieren, da sie erfordern, dass jeder Knoten die richtige Interrupt- oder Commit-Aktion aushandelt. Diese Qualität wird als Konsens bezeichnet und ist ein grundlegendes Problem beim Aufbau eines Vertriebssystems. Das Erreichen der Art von Vereinbarung, die für das "Commit"-Problem benötigt wird, ist einfach, wenn die beteiligten Prozesse und das Netzwerk absolut zuverlässig sind. Reale Systeme unterliegen jedoch einer Reihe vonMögliche Ausfälle von Netzwerkprozessen, verlorene, beschädigte oder duplizierte Nachrichten.

Dies stellt ein Problem dar und es kann nicht garantiert werden, dass der richtige Konsens innerhalb eines begrenzten Zeitraums in einem unzuverlässigen Netzwerk erreicht wird. In der Praxis gibt es Algorithmen, die in einem unzuverlässigen Netzwerk ziemlich schnell einen Konsens erzielen. Cassandra bietet tatsächlich leichte Transaktionen durch die Verwendung des Paxos-Algorithmus für verteilten Konsens.

Distributed Computing ist der Schlüssel zum Zustrom von Big-Data-Verarbeitung, der in den letzten Jahren eingesetzt wurde. Es ist eine Methode, eine riesige Aufgabe, wie z. B. insgesamt 100 Milliarden Datensätze, von denen kein einzelner Computer praktisch alles allein erledigen kann, in viele kleinere Aufgaben zu zerlegen, die in eine einzelne Maschine passen. Der Entwickler zerlegt seine riesige Aufgabe in viele kleinere, führt sie auf vielen Maschinen parallel aus, sammelt die Daten passend, dann ist das ursprüngliche Problem gelöst.

Mit diesem Ansatz können Sie horizontal skalieren. Wenn es sich um eine große Aufgabe handelt, fügen Sie einfach weitere Knoten zur Berechnung hinzu. Diese Aufgaben werden seit vielen Jahren vom MapReduce-Programmiermodell in Verbindung mit der Implementierung zur parallelen Verarbeitung und Generierung großer Datensätze mithilfe eines verteilten Algorithmus auf einem Cluster ausgeführt.

Aktuell ist MapReduce etwas ver altet und bringt einige Probleme mit sich. Es sind andere Architekturen entstanden, die sich mit diesen Problemen befassen. Nämlich Lambda-Architektur für verteilteFlussverarbeitungssysteme. Fortschritte in diesem Bereich haben neue Tools hervorgebracht: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.

Dateispeicher- und Replikationssysteme

Dateispeicher- und Replikationssysteme
Dateispeicher- und Replikationssysteme

Verteilte Dateisysteme können als verteilte Datenspeicher betrachtet werden. Dies ist dasselbe wie das Konzept – Speichern und Zugreifen auf eine große Datenmenge über einen Cluster von Maschinen, die eine einzige Einheit bilden. Sie gehen normalerweise Hand in Hand mit Distributed Computing.

Zum Beispiel ist Yahoo dafür bekannt, HDFS seit 2011 auf über 42.000 Knoten zu betreiben, um 600 Petabyte an Daten zu speichern. Wikipedia definiert den Unterschied darin, dass verteilte Dateisysteme den Dateizugriff über dieselben Schnittstellen und dieselbe Semantik wie lokale Dateien ermöglichen, anstatt über eine benutzerdefinierte API wie Cassandra Query Language (CQL).

Hadoop Distributed File System (HDFS) ist ein System, das für die Datenverarbeitung über die Hadoop-Infrastruktur verwendet wird. Es ist weit verbreitet und wird zum Speichern und Replizieren großer Dateien (GB- oder TB-Größe) auf vielen Computern verwendet. Seine Architektur besteht hauptsächlich aus NameNodes und DataNodes.

NameNodes ist verantwortlich für das Speichern von Metadaten über den Cluster, z. B. welcher Knoten Dateiblöcke enthält. Sie fungieren als Netzwerkkoordinatoren, finden heraus, wo Dateien am besten gespeichert und kopiert werden, und beh alten den Überblick über den Systemzustand. DataNodes speichern einfach Dateien und führen Befehle wie Dateireplikation, neues Schreiben undandere.

Es überrascht nicht, dass HDFS am besten mit Hadoop für die Datenverarbeitung verwendet wird, da es ein Bewusstsein für Aufgabeninformationen bietet. Die angegebenen Jobs werden dann auf den Knoten ausgeführt, die die Daten speichern. Dadurch können Sie den Standort der Daten verwenden - optimiert Berechnungen und reduziert den Datenverkehr über das Netzwerk.

Das Interplanetary File System (IPFS) ist ein aufregendes neues Peer-to-Peer-Protokoll/Netzwerk für verteilte Dateisysteme. Unter Verwendung der Blockchain-Technologie verfügt es über eine vollständig dezentralisierte Architektur ohne einen einzigen Eigentümer oder Fehlerpunkt.

IPFS bietet ein Benennungssystem (ähnlich wie DNS) namens IPNS und ermöglicht es Benutzern, Informationen einfach abzurufen. Es speichert die Datei durch historische Versionierung, ähnlich wie Git es tut. Dies ermöglicht den Zugriff auf alle vorherigen Zustände der Datei. Es durchläuft immer noch eine intensive Entwicklung (v0.4 zum Zeitpunkt des Schreibens), hat aber bereits Projekte gesehen, die daran interessiert sind, es zu bauen (FileCoin).

Nachrichtensystem

Messaging-System
Messaging-System

Messaging-Systeme bieten einen zentralen Ort zum Speichern und Verteilen von Nachrichten innerhalb eines gemeinsamen Systems. Sie ermöglichen Ihnen, die Anwendungslogik von der direkten Kommunikation mit anderen Systemen zu trennen.

Bekannte Größenordnung - Der Kafka-Cluster von LinkedIn verarbeitete 1 Billion Nachrichten pro Tag mit Spitzenwerten von 4,5 Millionen Nachrichten pro Sekunde.

Einfach ausgedrückt funktioniert die Messaging-Plattform so:

  1. Nachrichtwird von der Anwendung übergeben, die es möglicherweise erstellt, die als Erzeuger bezeichnet wird, geht an die Plattform und wird von mehreren Anwendungen gelesen, die Verbraucher genannt werden.
  2. Wenn Sie ein bestimmtes Ereignis an mehreren Orten speichern müssen, z. B. beim Erstellen eines Benutzers für eine Datenbank, einen Speicher oder einen E-Mail-Versanddienst, dann ist die Messaging-Plattform die sauberste Möglichkeit, diese Nachricht zu verteilen.

Es gibt mehrere beliebte und erstklassige Messaging-Plattformen.

RabbitMQ ist ein Message-Broker, mit dem Sie die Steuerung ihrer Flugbahnen mithilfe von Routing-Regeln und anderen leicht konfigurierbaren Parametern feinabstimmen können. Es kann als "intelligenter" Broker bezeichnet werden, da es über viel Logik verfügt und die Nachrichten, die es durchlaufen, genau überwacht. Bietet Optionen für APs und CPs von CAP.

Kafka ist ein Message Broker, der etwas weniger funktional ist, da er nicht verfolgt, welche Nachrichten gelesen wurden, und keine komplexe Routing-Logik zulässt. Es hilft, eine erstaunliche Leistung zu erzielen, und stellt das größte Versprechen in diesem Bereich dar, mit der aktiven Entwicklung verteilter Systeme durch die Open-Source-Community und der Unterstützung des Confluent-Teams. Kafka ist am beliebtesten bei Hightech-Unternehmen.

Machine Interaction Applications

Dieses Verteilungssystem ist eine Gruppe von Computern, die zusammenarbeiten, um dem Endbenutzer als separate Computer zu erscheinen. Diese Maschinen sind in allgemeinem Zustand und funktionierengleichzeitig und unabhängig voneinander arbeiten können, ohne die Betriebszeit des gesamten Systems zu beeinträchtigen.

Wenn Sie die Datenbank als verteilt betrachten, nur dann, wenn die Knoten miteinander interagieren, um ihre Aktionen zu koordinieren. Es ist in diesem Fall so etwas wie eine Anwendung, die ihren internen Code in einem Peer-to-Peer-Netzwerk ausführt und als verteilte Anwendung klassifiziert wird.

Bekannte Skala - BitTorrent
Bekannte Skala - BitTorrent

Beispiele für solche Anwendungen:

  1. Bekannte Größenordnung - BitTorrent-Schwarm 193.000 Knoten für Game of Thrones-Episode.
  2. Grundlegende Registertechnologie verteilter Blockchain-Systeme.

Distributed Ledgers können als unveränderliche Datenbank betrachtet werden, die nur auf Anwendungen beschränkt ist und die repliziert, synchronisiert und von allen Knoten im Verteilungsnetzwerk gemeinsam genutzt wird.

Die bekannte Waage – das Ethereum-Netzwerk – hatte am 4. Januar 2018 4,3 Millionen Transaktionen pro Tag. Sie verwenden das Event-Sourcing-Muster, mit dem Sie den Zustand der Datenbank jederzeit wiederherstellen können.

Blockchain ist die aktuelle zugrunde liegende Technologie, die für verteilte Hauptbücher verwendet wird, und markierte tatsächlich deren Beginn. Diese neueste und größte Innovation im verteilten Bereich schuf das erste wirklich verteilte Zahlungsprotokoll, Bitcoin.

Blockchain ist ein verteiltes Hauptbuch mit einer geordneten Liste aller Transaktionen, die jemals in seinem Netzwerk stattgefunden haben. Deals werden gruppiert und in Blöcken gespeichert. Die gesamte Blockchain ist im Wesentlichen eine verknüpfte Liste von Blöcken. Angegebene Blöckesind teuer in der Erstellung und durch Kryptografie eng miteinander gekoppelt. Einfach ausgedrückt, jeder Block enthält einen speziellen Hash (der mit X Nullen beginnt) des Inh alts des aktuellen Blocks (in Form eines Merkle-Baums) plus den Hash des vorherigen Blocks. Dieser Hash benötigt viel CPU-Leistung.

Beispiele verteilter Betriebssysteme

Beispiele für verteilte Betriebssysteme
Beispiele für verteilte Betriebssysteme

Systemtypen erscheinen dem Benutzer, weil es sich um Einzelbenutzersysteme handelt. Sie teilen ihren Arbeitsspeicher und ihre Festplatte, und der Benutzer hat keine Probleme, durch die Daten zu navigieren. Der Benutzer speichert etwas auf seinem PC und die Datei wird an mehreren Orten gespeichert, z. B. auf verbundenen Computern, sodass verlorene Daten leicht wiederhergestellt werden können.

Beispiele verteilter Betriebssysteme:

  1. Windows Server 2003;
  2. Windows Server 2008;
  3. Windows Server 2012;
  4. UbuntuLinux (Apache-Server).

Wenn irgendein Rechner höher bootet, also viele Anfragen zwischen einzelnen PCs ausgetauscht werden, kommt es auf diese Weise zum Load-Balancing. In diesem Fall werden die Anfragen an den Nachbar-PC weitergegeben. Wenn das Netzwerk stärker belastet wird, kann es erweitert werden, indem dem Netzwerk weitere Systeme hinzugefügt werden. Die Netzwerkdateien und -ordner werden synchronisiert und es werden Namenskonventionen verwendet, sodass beim Abrufen von Daten keine Fehler auftreten.

Caching wird auch bei der Manipulation von Daten verwendet. Alle Computer verwenden denselben Namensraum, um Dateien zu benennen. Aberdas Dateisystem ist für jeden Rechner gültig. Wenn die Datei aktualisiert wird, wird sie auf einen Computer geschrieben und die Änderungen werden an alle Computer weitergegeben, sodass die Datei gleich aussieht.

Dateien sind während des Lese-/Schreibvorgangs gesperrt, sodass es zwischen verschiedenen Computern zu keinem Deadlock kommt. Es treten auch Sitzungen auf, z. B. Lesen, Schreiben von Dateien in einer Sitzung und Schließen der Sitzung, und dann kann ein anderer Benutzer dasselbe tun und so weiter.

Vorteile der Verwendung

Ein Betriebssystem, das den Alltag der Menschen erleichtern soll. Für die Vorteile und Bedürfnisse der Benutzer kann das Betriebssystem für einzelne Benutzer oder für verteilte Benutzer verwendet werden. In einem verteilten Ressourcensystem sind viele Computer miteinander verbunden und teilen ihre Ressourcen.

Vorteile davon:

  1. Wenn ein PC in einem solchen System fehlerhaft oder beschädigt ist, kümmert sich ein anderer Knoten oder Computer darum.
  2. Weitere Ressourcen können einfach hinzugefügt werden.
  3. Ressourcen wie Drucker können mehrere Computer bedienen.

Dies ist ein kurzer Überblick über das Verteilungssystem, warum es verwendet wird. Einige wichtige Dinge, an die Sie sich erinnern sollten: Sie sind komplex und werden nach Umfang und Preis ausgewählt und sind schwieriger zu handhaben. Diese Systeme sind in mehrere Speicherkategorien verteilt: Datenverarbeitung, Datei- und Nachrichtensysteme, Register, Anwendungen. Und das alles nur sehr oberflächlich über ein komplexes Informationssystem.

Empfohlen: