Verified Commit ec473c24 authored by Ernisa Butkovic's avatar Ernisa Butkovic
Browse files

Final Commit

parent 647f7df3
......@@ -2,10 +2,6 @@
## Inhaltsverzeichnis
<!---
OPTIONAL: Ein wenig auf die Markdown Syntax achten (sieht einfach besser aus)
--->
1. Definition, Geschichte, Entwicklung
- [Definition](#Definition)
- [Geschichte und Entwicklung verteilter Systeme](#Geschichte-und-Entwicklung-verteilter-Systeme)
......@@ -82,12 +78,8 @@ Im ersten Jahrzent entstehen *webbasierte Computernetze*, welche unternehmenswei
---
## Nachteile von Verteilten Systemen
- Komplexere Software
- Kommunikationsprobleme sind möglich - dadurch ergibt sich schlechtere Performance und auch Verlust von Nachrichten ist möglich
- Kommunikationsprobleme sind möglich - dadurch ergibt sich schlechtere Performance und auch Verlust von Nachrichten ist möglich
- Nur schwache Schutzvorkehrungen - Zwiespältigkeit zwischen Sicherheit und Einfachheit des Zugriffs auf Ressourcen
<!---
Wieso bei dem "auch Verlust von..." so viele Spaces?
Und persönlich gesagt würde ich die Linien (---) nur als Trennung von Kapiteln nehmen, aber das nur am Rande.
-->
---
## Ziele, Eigenschaften und Gestaltungsprinzipien
......@@ -99,10 +91,7 @@ mit Hilfe einer Softwareschicht angeordnet.
* Ein solches verteiltes System wird als Middleware bezeichnet.
* Verteilte Systeme unterscheiden sich, da ihre Komponenten über ein Netz verteilt sind.
* Beim Entwurf muss die Verteilung berücksichtigt werden, da ansonsten die Systeme unnötig zu komplex werden.
<!---
Ich würde das "zu" weglassen, also "unnötig komplex"
-->
* Beim Entwurf muss die Verteilung berücksichtigt werden, da ansonsten die Systeme unnötig komplex werden.
* Transparenz
* Fehlertoleranz
* Gleichzeitiges Nutzen von Ressourcen (Resource Sharing)
......@@ -125,11 +114,7 @@ Beim Design verteilter Systeme werden zwei grundlegenden Gestaltungsprinzipien v
Daneben wird in neueren Arbeiten auch die „Reaktivität“ eines verteilten Systems als Meta-Eigenschaft angeführt, die moderne Softwaresysteme aufweisen sollen.
### Transparenz:
Unter Transparenz versteht man: das Verbergen der Komplexität eines verteilten Systems gegenüber nutzenden
Personen oder technischen Komponenten. Die Benutzer sind sich daher nicht bewusst, dass es sich um ein verteiltes System handelt. Mit anderen Worten: Das System wird als ein einheitliches System von Benutzern wahrgenommen.
<!---
Zeilenumbruch mitten im Absatz und ":" hinter "versteht man" würde ich ersetzen durch "versteht man das"
--->
Unter Transparenz versteht man, dass das Verbergen der Komplexität eines verteilten Systems gegenüber nutzenden Personen oder technischen Komponenten. Die Benutzer sind sich daher nicht bewusst, dass es sich um ein verteiltes System handelt. Mit anderen Worten: Das System wird als ein einheitliches System von Benutzern wahrgenommen.
Es gibt verschieden Arten von Transparenz:
......@@ -176,11 +161,8 @@ Aktivitäten können parallel ablaufen, ohne sich zu stören.
Algorithmen, Protokolle und Prozeduren, die mit einigen wenigen Systemkomponenten gut funktionieren, sollen auch mit vielen Komponenten gut funktionieren.
Das ist zum Teil schwieriger, zum Teil leichter als in zentralisierten Systemen
- höhere Komplexität
- Ressourcen können beliebig hinzugefügt werden
<!---
Bei den Bulletpoints fehlt etwas, wie "Eigenschaften von dezentralen System sind:" o.ä.
--->
- Ressourcen können beliebig hinzugefügt werden.
Viele Viedeostreaming-Dienste, u.A. Netflix, streben bestimmte Arten von Skalierbarkeit an.
Unter Skalierbarkeit versteht man die Fähigkeit eines Systems aus Hard-und Software, die Leistung durch das Hinzufügen von Ressourcen – z.B. weiterer Hardware – in einem definierten Bereich proportional (bzw.linear)zu steigern. Man kann die Leistung eines Systems auf zwei verschiedene Arten steigern:
......@@ -190,13 +172,7 @@ Unter Skalierbarkeit versteht man die Fähigkeit eines Systems aus Hard-und Soft
**Vertikale Skalierbarkeit**
Unter vertikaler Skalierung versteht man ein Steigern der Leistung durch das Hinzufügen von Ressourcen zu einem Knoten/Rechner des Systems. Beispiele dafür wären das Vergrößern von Speicherplatz oder das Hinzufügen eines Rechners zum einem verteilten System.
<!---
Das Hinzufügen von einem Rechner zu einem verteilen System ist KEINE vertikale Saklierung. Das Beispiel solltet ihr umschreiben.
--->
Charakteristisch für diese Art von Skalierung ist, dass ein System unabhängig von der Implementierung der Software schneller gemacht werden kann. Das heißt, es muss keine Zeile Code geändert werden, um eine Leistungssteigerung durch vertikales Skalieren zu erfahren. Der große Nachteil dabei ist jedoch, dass man früher oder später auf ein Limit stößt, bei dem man den Rechner nicht mehr aufrüsten kann, wenn man bereits die beste Hardware verwendet,die zu diesem Zeitpunkt am Marktist.
<!---
"verfügbar ist" oder "auf dem Markt ist"
--->
Charakteristisch für diese Art von Skalierung ist, dass ein System unabhängig von der Implementierung der Software schneller gemacht werden kann. Das heißt, es muss keine Zeile Code geändert werden, um eine Leistungssteigerung durch vertikales Skalieren zu erfahren. Der große Nachteil dabei ist jedoch, dass man früher oder später auf ein Limit stößt, bei dem man den Rechner nicht mehr aufrüsten kann, wenn man bereits die beste Hardware verwendet, die zu diesem Zeitpunkt verfügbar ist.
**Horizontale Skalierbarkeit**
......@@ -206,16 +182,9 @@ Es gibt verschiedene Arten von Skalierbarkeit:
* Lastskalierbarkeit:
Lastskalierbarkeit steht für ein konstantes Systemverhalten über größere Lastbereiche hinweg. Das bedeutet, dass ein System zum einen sowohl bei geringer, mittlerer, als auch bei hoher Last keine zu große Verzögerung aufweist und die Anfragen rasch abgearbeitet werden können.
<!---
OPTIONAL: Ein kleines Beispiel. Z.B. welcher bekannte Dienst bietet diese Art von skallierbarkeit an?
--->
* Räumliche Skalierbarkeit:
Räumliche Skalierbarkeit weist ein System bzw. Anwendung auf, wenn der Speicherbedarf bei einer wachsenden Anzahl an zu verwaltenden Elementen nicht inakzeptabel hoch ansteigt. Nachdem „inakzeptabel“ ein relativer Begriff ist, spricht man in diesem Zusammenhang in der Regel von akzeptabel, wenn der Speicherbedarf höchstens sub-linear ansteigt. Um das zu erreichen, kann z. B. eine dünnbesetzte Matrix (engl. sparse matrix) bzw. Datenkompression angewendet werden. Da Datenkompression eine gewisse Zeit beansprucht, steht diese jedoch häufig in Widerspruch zur Lastskalierbarkeit.
<!---
Bitte ein wenig überarbeiten, evtl. Beispiel ein wenig umschreiben
--->
Räumliche Skalierbarkeit weist ein System bzw. Anwendung auf, wenn der Speicherbedarf bei einer wachsenden Anzahl an zu verwaltenden Elementen nicht inakzeptabel hoch ansteigt. Nachdem „inakzeptabel“ ein relativer Begriff ist, spricht man in diesem Zusammenhang in der Regel von akzeptabel, wenn der Speicherbedarf höchstens sub-linear ansteigt. Um das zu erreichen, kann z. B. eine dünnbesetzte Matrix (engl. sparse matrix) bzw. Datenkompression angewendet werden. Da Datenkompression eine gewisse Zeit beansprucht, steht diese jedoch häufig in Widerspruch zur Lastskalierbarkeit. Kurz gesagt, gibt die räumliche Skalierbarkeit an, inwiefern das System mit dem erhöhten Speicherbedarf umgeht, wenn die Anzahl der Datenobjekte ansteigt.
* Zeitlich-räumliche Skalierbarkeit
Ein System verfügt über eine zeitlich-räumliche Skalierbarkeit, wenn sich das Erhöhen der Anzahl von Objekten, die ein System umfasst, nicht erheblich auf dessen Performance auswirkt. Beispielsweise weist eine Suchmaschine mit linearer Komplexität keine zeitlich-räumliche Skalierbarkeit auf, während eine Suchmaschine mit indizierten, bzw. sortierten Daten, z. B. unter Verwendung einer Hashtabelle oder eines balancierten Baums, sehr wohl eine zeitlich-räumliche Skalierbarkeit vorweisen könnte.
......@@ -223,11 +192,7 @@ Ein System verfügt über eine zeitlich-räumliche Skalierbarkeit, wenn sich das
* Strukturelle Skalierbarkeit
Strukturelle Skalierbarkeit zeichnet ein System aus, dessen Implementierung das Erhöhen der Anzahl von Objekten innerhalb eines selbst definierten Bereichs nicht maßgeblich behindert.
Die Lastskalierbarkeit eines Systems wird nicht zwangsläufig durch eine schlechte räumliche oder strukturelle Skalierbarkeit negativ beeinflusst. Systeme mit schlechter räumlicher
<!---
Dein Zeilenumbruch hier ist eher unpassend.
--->
oder zeitlich-räumlicher Skalierbarkeit haben, aufgrund des Overheads an Speicherverwaltung bzw. des hohen Suchaufwands, möglicherweise auch eine schlechte Lastskalierbarkeit. Systeme mit guter zeitlich-räumlicher Skalierbarkeit haben unter Umständen eine schlechte Lastskalierbarkeit, wenn z.B. nicht ausreichend parallelisiert wurde.
Die Lastskalierbarkeit eines Systems wird nicht zwangsläufig durch eine schlechte räumliche oder strukturelle Skalierbarkeit negativ beeinflusst. Systeme mit schlechter räumlicher oder zeitlich-räumlicher Skalierbarkeit haben, aufgrund des Overheads an Speicherverwaltung bzw. des hohen Suchaufwands, möglicherweise auch eine schlechte Lastskalierbarkeit. Systeme mit guter zeitlich-räumlicher Skalierbarkeit haben unter Umständen eine schlechte Lastskalierbarkeit, wenn z.B. nicht ausreichend parallelisiert wurde.
Neben den beiden grundlegenden Gestaltungsprinzipien werden hier auch andere vorgestellt.
......@@ -263,10 +228,7 @@ durch den Zugriff auf Systemaufrufe (system calls)
erweitert werden. Die Schnittstellen sind Sockets und Middleware.
### Nebenläufigkeit
Das bedeutet, dass mehrere gleichzeitig existierende Prozesse innerhalb eines Systems sind. Gibt es jedoch nur einen Prozessor, erfolgt die Ausführung durch Interleaving. Bei mehreren Prozessoren können die Prozesse parallel ausgeführt werden. Nebenläufigkeit kann es bei Clients (Anwendungsprogramme) und Servern (Zugriff auf Ressourcen) geben. Das Wichtigste für die Nebenläufigkeit ist die Synchronisation.
<!---
Bei "Interleaving" bitte zumindest einen deutschen Begriff in Klammern dazuschreiben, oder auf Deutsch beschreiben udn den englischen Begriff in Klammern.
--->
Das bedeutet, dass mehrere gleichzeitig existierende Prozesse innerhalb eines Systems sind. Gibt es jedoch nur einen Prozessor, erfolgt die Ausführung durch Interleaving (Verschachtelung). Bei mehreren Prozessoren können die Prozesse parallel ausgeführt werden. Nebenläufigkeit kann es bei Clients (Anwendungsprogramme) und Servern (Zugriff auf Ressourcen) geben. Das Wichtigste für die Nebenläufigkeit ist die Synchronisation.
### Sicherheit
Sicherheit in verteilten Systemen ist besonders heute sehr wichtig, vor allem bei der Entwicklung, da oft Geld eine große Rolle spielt, genauso wie die Übertragung von persönichen Daten.
......@@ -296,9 +258,6 @@ Beispiele: Forward Error Correction, Audio-CD
- Zeitliche Redundanz:
Wiederholung von Aktionen
Beispiel: Transaktionen
<!---
Transaktionenlog? Eine Transaktion an sich ist eigentlich nicht Redundant
--->
- Physische Redundanz
Zusätzliche Hardware oder Prozesse
......@@ -321,9 +280,7 @@ Typische Fehlannahmen:
*Cluster-Computer* (Homogenität / z.B. MS SQL Cluster)
Hardware aus ähnlichen Rechnern oder Servern
Gleiches Betriebssystem
<!---
Wieder ein Zeilenumbruch, der hier nicht hingehört (subjektiv)
--->
*Grid-Computer* (Heterogenität / z.B. WWW)
Sehr unterschiedliche Hardware, Software und Netzwerktechnik
......@@ -376,7 +333,7 @@ Nur zwei Schichten. Untere Schicht ist Dienstanbieter (Server) für die Obere =
#### Drei-Schichten-Architektur:
Zusätzlich<!--zur Zwei-Schichten-Architektur---> gibt es noch eine Logik-Schicht.
Zusätzlich zur Zwei-Schichten-Architektur gibt es noch eine Logik-Schicht.
Präsentationsschicht: Front-End. Repräsentation der Daten, Benutzereingabe, Benutzerschnittstelle.
Logikschicht: Businessschicht. Verarbeitungsmechanismen. Anwendungslogik ist hier vereint.
Datenhaltungsschicht: Datenbank. Speichern und Laden von Daten
......@@ -469,9 +426,6 @@ Die Hardware ändert sich schneller als die Software (Anwendungen und Middleware
## Kommunikation
### Arten der Kommunikation
<!---
Wäre eine Bulletpointlist hier nicht besser?
--->
#### Persistente (dauerhafte) Kommunikation:
Nachricht wird solange von der Kommunikations-Middleware gespeichert, bis sie zugestellt werden kann.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment