• Keine Ergebnisse gefunden

Willkommen bei Verteilte Systeme!

N/A
N/A
Protected

Academic year: 2022

Aktie "Willkommen bei Verteilte Systeme!"

Copied!
118
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Willkommen bei Verteilte Systeme!

Von Datenbanken über Webdienste bis zu p2p und Sensornetzen.

^ ¨

Heute:Einführung und Überblick

A distributed system is a system that prevents you from doing any work, when a computer you have never heard about fails.

(2)

Materialien

Distributed Systems

Martin vanSteen and Tanenbaum (2017)

kostenloses ebook:https://www.distributed-systems.net ISBN-13: 978-1543057386

Distributed Systems - An Algorithmic Approach – SukumarGhosh (2015).

Weitere Quellen werden bei Verwendung aufgeführt.

Gemeinsamer Glossar und Notizen in einem cryptpad.

Arne Babenhauserheide

(3)

Dozent

Arne Babenhauserheide

Physik (Dipl., Dr., CO_{2}) Seit 2004 p2p Netze

Seit 2017 Softwareentwickler

Python, Scheme, Java, Fortran, Bash, Emacs, . . . arne.babenhauserheide@disy.net

Vorlesung bis 2020 gemeinsam mit Carlo Götz.

(4)

Arbeitsstelle

Disy Informationssysteme GmbH in KA

~ 100 MA

GIS mit Java und Web-Technologien starkes Wachstum

We are hiring! :-)

Arne Babenhauserheide

(5)

Sie

Arbeitsstelle?

sonstige Erfahrungen?

Programmiersprachen?

Motivation für das Studium?

Vorwissen zu verteilten Systemen?

(6)

Ziele der Vorlesung

Sie verstehen, wo sie Verteilung vermeiden sollten.

Sie verstehen, was sie beachten müssen, wenn Sie verteilen müssen.

Sie kennen Werkzeuge und Techniken, die ihnen helfen.

Sie können einschätzen, welche Tradeoffs sie eingehen sollten und welche nicht.

Latenz < 300ms für eine Webseite Latenz < 30ms für Interaktive System!

Arne Babenhauserheide

(7)

Eure Wünsche

Klausur bestehen Viel Praktisches

Am Flipchart sammeln.

(8)

Fragen

Ansprache: Sie oder Du?

Verteilung der Slides?

Mail der Kurssprecher(in)?

Arne Babenhauserheide

(9)

Ablauf Semester

Grundlagen p2p (peer-to-peer) Clocks/Zeit, usw.

Algorithmen, Shared State Datenbanken konkret: CAP, DBs Sicherheit in der Praxis, Sensornetze

Präsentationen der Studierenden, 15min pro 3er-Gruppe tbd, Wiederholung

(10)

Präsentationen

wählt ein Thema

schickt uns den Themenvorschlag per Mail bis zur dritten VL

Arne Babenhauserheide

(11)

Themenideen

Benchmark servers with wrk:

https://github.com/wg/wrk Load Balancing + Autoscaling?

Was sind Zertifikate (X.509), was ist eine Zertifizierungsstelle?

Virtualization & Containerization Kubernetes

Netflix (technisch) Distributed Game Architecture Internet Of Things?

Election Algorithms CUDA / Tensorflow / PyTorch Hadoop / Spark / YARN Was ist (E)SNI?

SAML OAuth Jwt TCP Meltdown including Signal, WebSocket, QUIC, Proxies, Reverse-Proxies

Microservices green/blue deployment Active Directory and Kerberos VLANs

CORBA DCOM SOAP

Message Queues: Rabbit, Kafka, . . . Eigene Anwendungen?

Build a simple video streaming server Remote Desktop,

XWindows, VNC, telnet, ssh,

Apache Guacamole Remote management NetWork Project Seti@home

Cost Savings via Cloud Computing?

NoSQL?

Kafka Botnet

(12)

Ablauf heute

Grundlagen und -begriffe verteilter Systeme Architekturen verteilter Systeme

Prozesse und Threads Kommunikation

Arne Babenhauserheide

(13)

Einführung

Sie kennen Charakteristiken verteilter Systeme Sie kennen Ziele verteilter Systeme

Sie kennen die Dimensionen und Probleme der Skalierung Sie erkennen die „Fallacies of distributed systems“

Sie kennen Arten verteilter Systeme

(14)

Was sind verteilte Systeme?

Was sind für euch verteilte Systeme?

Beispiele?

Im Cryptpad sammeln.

Arne Babenhauserheide

(15)

Was sind verteilte Systeme?

Ein verteiltes System ist eine Sammlung autonomer Rechen- elemente, die den Nutzenden wie ein einzelnes kohärentes System erscheint.

autonome Rechenelemente AuchKnotengenannt, arbeiten voneinander unabhängig, egal ob Soft- oder Hardware einzelnes kohärentes System Nutzende haben den Eindruck ein

einzelnes System zu bedienen (Erfordert Zusammenarbeit der Knoten).

(16)

Abgrenzung

Bilden mehrere Prozesse auf einem Computer ein verteiltes System?

Autonome Knoten verfügen über eigenen Zeitbegriff.

Es gibt keine globale Uhr.

Probleme bei Synchronisation und Koordination.

Prozesse auf einem System können sich hardwaregestützt synchronisieren.

aber mit Effizienzverlust

Arne Babenhauserheide

(17)

Sammlung von Knoten: Gruppenzugehörigkeit

Zugehörigkeit von Knoten verwalten Darf jeder Knoten beitreten?

Wie finden sie sich?

Wie wird sichergestellt, dass nur mit Knoten innerhalb des Systems kommuniziert wird?

Oft als Overlay Network realisiert.

(18)

Overlay Networks

Sollten immer verbunden sein.

Für jedes Knotenpaar existiert ein Pfad zwischen den Knoten Zwei Varianten:

strukturierte Overlays Jeder Knoten hat eine definierte Menge an Nachbarn mit denen er kommunizieren kann.

unstrukturierte Overlays Jeder Knoten hat Referenzen zu zufällig ausgewählten anderen Knoten.

Arne Babenhauserheide

(19)

Kohärentes, einzelnes System

Nutzer kann nicht sagen, ob:

Berechnungen verteilt stattfinden Daten verteilt gespeichert werden Daten repliziert werden

„Verteilungstransparenz“

Problem: Knoten und Verbindungen zwischen Knoten können (und werden) jederzeit ausfallen.

Transparente Gestaltung schwierig bis unmöglich.

(20)

Middleware

Middleware ist eine separate Schicht über dem Betriebssystem.

Bietet häufig von Applikationen verwendete Funktionalität.

verteilte Transaktionen Fehler Recovery

Authentication & Authorization Kommunikation mit anderen Knoten . . .

Arne Babenhauserheide

(21)

Middleware als Betriebssystem für verteilte Systeme

(22)

Ziele verteilter Systeme

Just because it is possible to build a distributed system does not necessarily mean that it is a good idea.

Teilen von Ressourcen Verteilungstransparenz Offenheit

Skalierbarkeit

Arne Babenhauserheide

(23)

Teilen von Ressourcen

Auf geteilte Ressourcen zugreifen Beispiele:

Dropbox, GDrive etc.

Google Docs

p2p Filesharing (Bittorrent, Blizzard Launcher) p2p Streaming (Spotify anfangs)

(24)

Verteilungstransparenz

Nutzenden soll nicht auffallen, dass Berechnungen und Daten über mehrere Computer verteilt sind.

Transparenz Beschreibung

Zugriff Verstecke Unterschiede in Datenrepräsentation.

Ort Nutzer können nicht sagen wo sich ein Objekt physisch befindet.

Relokation Objekte können während ihrer Benutzung den Ort ändern.

Replikation Verberge, dass ein Objekt repliziert ist.

Concurrency Verberge gleichzeitige Nutzung eines Objekts.

Fehler Verstecke Ausfall und Wiederinbetriebnahme von Objekten.

Arne Babenhauserheide

(25)

Verteilungstransparenz: Probleme

Latenz

Tradeoff: Verteilungstransparenz vs. Performance Konsistenz bei Replikation

komplette Verteilungstransparenz ist unmöglich

Verteilung sollte vor allem für Entwickelnde explizit sein

(26)

Offenheit

Verteilte Systeme bieten und verwenden Komponenten, die einfach integriert oder wiederverwendet werden können Anforderungen:

definierte Schnittstellen (IDL (Syntax) + docs (Semantik)) Systeme sollen einfach interagieren

Anwendungen portabel Systeme erweiterbar

IDL: Interface Definition Language.

Arne Babenhauserheide

(27)

Skalierbarkeit

3 Dimensionen:

Größe: Nutzer- und Ressourcenanzahl können ohne Performanceprobleme steigen.

Geographie: Nutzer und Ressourcen können durch große Distanzen getrennt sein, ohne dass Latenz wirklich auffällt.

Administration: Das System kann unterschiedliche Organisationen umspannen.

log(N) ist gut.

(28)

Probleme bei Skalierung der Größe

Speicherkapazität inkl. I/O Transferrate Rechenkapazität, begrenzt durch CPUs Netzwerk zwischen Nutzer und System

Arne Babenhauserheide

(29)

Probleme bei geographischer Skalierung

viele bestehende Systeme erwarten schnelle LANs Oft synchrone Kommunikation

werden langsam durch erhöhte Latenz

(30)

Probleme bei Administrativer Skalierbarkeit

Unterschiedliche Richtlinien für Verwaltung, Sicherheit etc.

teilweise politische und soziologische Probleme DSGVO?

Arne Babenhauserheide

(31)

Skalierungstechniken

Meistens geht es um Skalierung der Größe einer Anwendung:

vertikale Skalierung mehr CPU, RAM etc. für die Computer (limitiert)

horizontale Skalierung mehr Kapazität durch Hinzufügen neuer Computer

(32)

Verstecken von Latenz

Asynchrone Kommunikation

manchmal nicht möglich (Bsp: interaktive Anwendungen) Berechnung im Client

Bsp: Form-Validierung in JS

Arne Babenhauserheide

(33)

Partitionierung, Replikation, Caching

Partitionierung Teile Komponenten auf und verteile sie auf mehrere Maschinen.

Bsp: DNS, DB-Sharding, WWW

Replikation und Caching Mache Kopien von Daten auf mehreren Computern.

Bsp: Replizierte DBs, Browsercache, Proxies Führt zu Inkonsistenz

globale Synchronisation ist langsam Abhängig von der Anwendung

(34)

Fallbeispiel

Um welche Dimension der Skalierung handelt es sich?

Welche Skalierungstechnik wird eingesetzt?

Dimensionen: Größe, Geographie, Administration

Techniken: Latenz verbergen, Partitionierung, Replikation

Windows Updates werden automatisch heruntergeladen.

Neues Update: Einbruch Netzleistung durch die vielen gleichzeitigen Downloads.

Proxyserver, der die Updates einmal von MS lädt.

Anfragen aus dem Firmennetz für diese Updates vom Proxy erfüllt.

Arne Babenhauserheide

(35)

PAUSE

PAUSE

(36)

Fallacies of distributed Systems

1 The network is reliable

2 The network is secure

3 The network is homogeneous

4 The topology does not change

5 Latency is zero

6 Bandwidth is infinite

7 Transport cost is zero

8 There is one administrator

Arne Babenhauserheide

(37)

Arten verteilter Systeme

High Performance Distributed Computing Distributed Information Systems

Pervasive Systems

(38)

Cluster Computing

einzelne (rechenintensive) Anwendung wird parallel auf mehreren Computern ausgeführt

Knoten durch LAN verbunden sehr homogen

Arne Babenhauserheide

(39)

Grid Computing

keine Annahmen bzgl. Ähnlichkeit von:

Hardware Betriebssystem Netzwerk Sicherheit

Administrative Domänen

Bsp: mehrere Hochschulen schließen ihre Cluster zu einem Grid zusammen.

Grid kann von Allen verwendet werden.

(40)

Cloud Computing

Arne Babenhauserheide

(41)

Cloud Computing - Schichten

Hardware CPUs, Router, USVs, Kühlung

Infrastruktur verwendet Virtualisierung, um Kunden mit virtuellen Servern und Speichern zu versorgen

Plattform bietet Kunden APIs für Speicher usw. (Amazon S3) Anwendung Programme für Endanwender (Google Docs)

(42)

Cloud Computing - Gefahren

Vendor Lock-in Sicherheit Datenschutz

Arne Babenhauserheide

(43)

Distributed Information Systems

Unternehmen betreiben mehrere Legacy-Anwendungen.

Einzelne Anwendungen zu einem verteilten System zusammenfassen

Beispiele: verteilte Transaktionen, Enterprise Application Integration

(44)

Verteilte Transaktionen

Datenbanken implementieren Transaktionen mit ACID Semantik.

Verteilte Transaktion fasst mehrere dieser Transaktionen zu einer zusammen.

Diese Transaktion ist wiederum auch ACID konform.

Arne Babenhauserheide

Einführung und Grundlagen Verteilte Systeme

(45)

Pervasive Systems

Das Netz ist immer dabei.

Treten durch Mobile und IOT verstärkt auf.

Wird unterteilt in:

Ubiquitous Computing Mobile Computing Sensornetze

(46)

Ubiquitous Computing

Geräte sind vernetzt

Interaktion mit Benutzer ist kaum merkbar

System erkennt Nutzerkontext und optimiert Interaktion Geräte laufen weitestgehend autonom

System beherrscht viele Interaktionen

Arne Babenhauserheide

(47)

Mobile Computing

Viele unterschiedliche Geräte: Smartphones etc.

ständige Änderung des Ortes

–> keine stabilen Routen, schwankende Geschwindigkeiten, Verbindungsausfall

(48)

Sensornetze

Viele Sensoren (bis zu mehreren Tausend) Teilweise Grundlage für ubiquitous computing

Arbeiten zusammen für effiziente Verarbeitung der Daten Meistens drahtlos und batteriebetrieben

Arne Babenhauserheide

(49)

Zusammenfassung

Verteilte Systeme sind eine Sammlung autonomer Knoten, die als einzelnes kohärentes System erscheinen.

Verteilte Systeme versuchen zu bieten:

Teilen von Ressourcen Verteilungstransparenz Offenheit

Skalierbarkeit

Verteilung hat immer einen Preis

(50)

Zusammenfassung 2

Skalierung in: Größe, Geographie und Administration.

Techniken zur Skalierung: Verstecken von Latenz, Partitionierung, Replikation und Caching.

Kennt die ’Fallacies of distributed systems’.

Verteilte Systeme: Cluster-, Grid-, Cloud-, Ubiquitous-, Mobile Computing, verteilte Informationssysteme, Sensornetze

Arne Babenhauserheide

(51)

Fallacies of distributed Systems

1 The network is reliable

2 The network is secure

3 The network is homogeneous

4 The topology does not change

5 Latency is zero

6 Bandwidth is infinite

7 Transport cost is zero

8 There is one administrator

(52)

PAUSE

PAUSE

Arne Babenhauserheide

(53)

Architekturen verteilter Systeme

Aus der Vogelperspektive.

(54)

Ziele

Sie kennen verbreitete Architekturstile Sie verstehen Overlay-Netzwerke

Arne Babenhauserheide

(55)

Merkmale von Architekturstilen

Die verwendeten Komponenten und ihre Schnittstellen.

Art der Verbindung zwischen Komponenten (RPC, Messaging).

Art der Daten, die zwischen Komponenten ausgetauscht werden.

Wie werden die einzelnen Komponenten zu einem System konfiguriert?

(56)

Architekturstile

Layered | Schichten

Object-based | Objektbasiert

Resource-centered | Resourcenzentriert Event-based | Ereignisbasiert

Die verschiedenen Stile werden meistens kombiniert.

Arne Babenhauserheide

(57)

Layered

Calls gehen (meist) nur in eine Richtung

Bsp für Ausnahme: Callback in async IO

(58)

Dreischicht

Wird oft verwendet Unterteilt in 3 Schichten:

Benutzerschnittstelle (GUI oder API)

Verarbeitung, enthält die Funktionen einer Anwendung Persistenz, verwaltet die Daten, die von der Verarbeitung verändert werden

Beispiel: Web, Backend, Datenbank.

Arne Babenhauserheide

(59)

Object-based

losere Organisation der Komponenten

Kommunikation durch zB RPC

Zustand der Objekte in der Regel nicht verteilt

Ersetzung von Object durch Service führt zu SOA (Service oriented

architecture, mittlerweile als Microservices rebranded)

(60)

Resource-based

orientiert sich an REST Merkmale:

Ressourcen werden über einen Namen idenitfiziert (URLs bei REST).

Alle Services bieten die gleiche Schnittstelle (HTTP Verben bei REST).

Alle benörigten Informationen sind im Serviceaufruf enthalten.

Nach einem Aufruf vergisst der Service alles über den Aufrufer.

Bsp: REST interface für S3 PUT

http://bucket.s3.amazonaws.com/objectName

Nicht für alle Systeme geeignet (z.B. bei großen Zuständen)

Arne Babenhauserheide

(61)

Event-based

Komponenten

kommunizieren nur durch Events miteinander

Events werden durch Event Bus propagiert

Komponenten referentiell entkoppelt

persistente Speicherung der Events führt zu temporaler Entkoppelung

Events können mit topics strukturiert werden

(62)

Verschiedene Arten von Koordination

Temporally coupled Temporally decoupled Referentially coupled Direct Mailbox

Referentially decoupled Event-based Shared data space

Arne Babenhauserheide

(63)

Zentralisierte System Architekturen

Prozesse werden in 2 (evtl. überlappende) Gruppen unterteilt:

Clients Server

Server bieten Dienste an.

Clients nutzen diese Dienste.

Kommunikation meist nach Request-Reply-Prinzip

(64)

Zweischichtige Konfiguration

Die Anwendungsebenen UI, Application und DB werden zwischen Client und Server aufgeteilt.

Auf 3 Schichten erweiterbar indem die DB auf eigene Maschine ausgelagert wird.

Arne Babenhauserheide

(65)

Übung 1/2: Aufgabe

Ordne die Komponenten 1-4 den jeweiligen Anwendungsebenen zu.

Welche Komponenten sollten auf dem Server und welche auf dem Client laufen? Begründe deine Antwort. Gruppenarbeit Randbedingungen (nächste Folie)

(66)

Übung 2/2: Randbedingungen

Latenz zwischen Client und Server:

A: 1ms (Gleiches Gebäude) B: 10ms

C: 100ms D: 1s E: 10s F: 1min

G: 2.5 Minuten bis 5 Minuten (Mars) 50 Millionen km bis 100 Millionen km.

H: 263 Minuten (Pluto)

Arne Babenhauserheide

(67)

Dezentralisierte System Architekturen (p2p)

Prozesse werden nicht nach Client und Server unterteilt; alle ist gleichgestellt.

Verwenden ein Overlay Network.

Knoten im Netz sind Prozesse.

Kanten im Netz sind Kommunikationswege.

2 Arten von Overlay Networks unterschieden: Strukturiert und Unstrukturiert

(68)

Strukturierte Overlay Networks

Knoten werden in einer wohldefinierten Struktur angeordnet.

Ring, Baum etc.

Datenelemente z.B. über Hashes identifiziert.

Knoten speichern Daten und den dazugehörigen Hash.

Jeder Knoten ist für eine Menge der möglichen Hashwerte zuständig.

Arne Babenhauserheide

(69)

Strukturierte Overlay Networks - Beispiel Chord

Knoten als Ring angeordnet.

Knoten kennt seinen Nachfolger.

Zusätzlich Abkürzungen.

Daten mit dem Schlüssel k auf Knoten mit der kleinsten id mitidk →Nachfolger (successor).

Konstruktion: kürzester Weg zwischen 2 Knoten hat eine Länge von O(logN) hat.

(70)

Strukturierte Overlay Networks - Beispiel Chord

Knoten 9 wird nach Key 3 gefragt.

–> Knoten 4 wird gesucht Knoten 28 ist am nächsten an 3 und wird von 9 angefragt

Knoten 28 kann nicht wissen, dass die Knoten zwischen 1 und 4 nicht existieren leitet also an 1 weiter 1 weiß, dass sein Nachbar Knoten 4 ist und leitet weiter

Arne Babenhauserheide

(71)

Unstrukturierte Overlay Networks

Jeder Knoten verwaltet eine Liste seiner Nachbarn.

Overlay ähnelt einem Zufallsgraphen.

Zwischen 2 Knoten u und v existiert eine Kante nur mit einer gewissen Wahrscheinlichkeit.

Suchen : 2 Extreme:

Flooding Random Walks

Zwischen diesen Extremen liegen viele Abwandlungen.

(72)

Flooding

Algorithmus:

Ein Knoten erhält eine Anfrage für ein Datum.

Der Knoten sucht lokal nach dem Datum.

Findet er es nicht, übergibt er die Anfrage analleNachbarn.

Das Spiel wiederholt sich.

Kann hohe Last erzeugen.

Anfragen mit einer Time-To-Live (TTL).

zum Beispiel maximale Anzahl von Sprüngen

Arne Babenhauserheide

(73)

Random Walks

Algorithmus:

Ein Knoten erhält eine Anfrage für ein Datum.

Der Knoten sucht lokal nach dem Datum.

Findet er es nicht, übergibt er die Anfrage aneinen zufälligen Nachbarn.

Das Spiel wiederholt sich.

Um die Wartezeit zu verringern können mehrere (n) Random Walks gestartet werden.

Studien zeigen Verringerung um den Faktor n.

Anfragen wieder mit TTL.

(74)

Zusammenfassung

Architekturstile: Layered, Object-based, Resource-based, Event-based.

Zentralisierte Architekturen: n-Schichten.

Dezentralisierte Architekturen: (un)strukturierte Overlay Networks

In der Realität meist Mischformen.

Bsp: Bittorrent verwendet zentralisierte Server (Tracker) zum Sammeln aktiver Knoten.

Arne Babenhauserheide

(75)

PAUSE

PAUSE

(76)

Prozesse: Ziele

Sie verstehen den Unterschied zwischen Prozessen und Threads

Arne Babenhauserheide

(77)

Prozesse: Zustand

Ein Prozess ist ein Programm in Ausführung.

Der Zustand eines Prozesses wird im Prozesskontext gespeichert:

Registerwerte Stackpointer Programmzähler Memory Maps . . .

(78)

Prozesse: Isolation

Betriebssystem sorgt für Isolation zwischen Prozessen:

Jeder Prozess hat einen eigenen Speicherbereich.

Unerlaubte Zugriffe auf den Speicherbereich durch einen anderen Prozess führen zu segfaults.

Arne Babenhauserheide

(79)

Threads

Ein Thread führt wie ein Prozess seinen Code unabhängig von anderen Threads aus.

Threads führen nur einen minimalen Kontext mit sich.

Threads im gleichen Prozess können auf den gleichen Speicher zugreifen.

Kontextwechsel, Erzeugen und Zerstören von Threads ist billiger als bei Prozessen.

Threads können im Kernel- oder Userspace implementiert werden.

Was sind die Vor- und Nachteile von Kernel- vs. Userspace Threads?

(80)

Beispiel für Nutzung von Threads

Verstecken von Latenz in Browsern:

HTML Seite wird geladen.

Die Seite verwendet mehrere andere Ressourcen.

Ressourcen werden durch blockierende Requests abgerufen.

Threads ermöglichen das gleichzeitige Abrufen mehrerer Ressourcen.

Arne Babenhauserheide

(81)

Dispatcher/Worker Modell

Ein Thread (Dispatcher) liest eingehende Requests aus dem Netzwerkstack.

Die Request wird dann an einen Worker Thread gegeben, der die eigentliche Arbeit erledigt.

(82)

Zusammenfassung

Prozesse werden vom OS isoliert.

Threads sind günstiger zu switchen.

Threads können im Kernel- oder Userspace implementiert werden.

Arne Babenhauserheide

(83)

Kommunikation

Interprocess communication is at the heart of all distributed systems.

(84)

Ziele

Sie können verschieden Komunikationszeitpunkte unterschieden Sie erkennen, wie Middleware als Schicht fungieren kann Sie kennen RPC (Remote-Procedure-Calls)

Sie erkennen Messaging-Strukturen

Sie können Kostenmetriken für Overlays rechnen

Arne Babenhauserheide

(85)

Arten der Kommunikation

transient vs. persistent transient: Nachricht wird verworfen, falls sie nicht ausgeliefert werden kann.

persistent: Nachricht wird gespeichert bis sie übermittelt wurde.

asynchronous vs. synchronous asynchronous: Sender fährt nach Übergabe der Nachricht an Kommunikationsstack fort.

synchronous: Sender wird

geblockt bis Nachricht übermittelt wurde.

(86)

Schichtmodelle

Arne Babenhauserheide

(87)

OSI Modell

It should be emphasized that the protocols that were de- veloped as part of the OSI model were never widely used and are essentially dead.

Was sind die Presentation und Session Schicht?

Presentation: Datenformate, z.B. Video-Codecs. Vergleich:

<video><source src="demo.mp4type="video/mp4»\\

<source src="demo.oggtype="video/ogg»</video>

Session: Berechtigungen, Sitzung;

Unterbrechungsfreies Streaming trotz zeitweisen Netzwerkausfällen.

Häufiger wird ein 5-Schichtmodell verwendet.

(88)

Warum dann OSI?

Hilft dem Verständnis:

Eine Schicht bietet der darüberliegenden Schicht einen Dienst an.

Dieser Dienst wird durch eine Schnittstelle spezifiziert.

Schichten verwenden jeweils ein Protokoll um mit der Gegenseite zu kommunizieren.

Beim Senden einer Nachricht wird die Nachricht an die darunterliegende Schicht gereicht.

Anschauliche Kurzbeschreibung:osi-model.com/

Arne Babenhauserheide

(89)

Middleware Schicht

Middleware soll allgemeine Dienste und Protokolle bereitstellen:

Kommunikation (Un)marshalling

Namensprotokolle: Teilen von Ressourcen Sicherheit

Skalierung: Replikation/Caching

Die Implementierung eines verteilten Systems kann sich so voll auf das Anwendungsprotokoll konzentrieren.

(90)

Middleware Schicht 2

Arne Babenhauserheide

(91)

Remote Procedure Call (RPC)

Soll möglichst wie ein normaler Methodenaufruf aussehen.

Und dadurch Zugriffstransparenz gewähren.

(92)

Ablauf RPC

1 Client ruft stub auf. 6 Stub erhält Ergebnis.

2 Stub erstellt Nachricht. 7 Stub erstellt Nachricht.

3 Client OS sendet Nachricht. 8 Server OS sendet Nachricht.

4 Server OS ruft stub auf. 9 Client OS reicht Nachricht an stub.

5 Stub entpackt Nachricht. 10 Stub entpackt Nachricht.

Arne Babenhauserheide

(93)

Parameter Marshalling

Client und Server haben evtl.

unterschiedliche

Datenrepräsentation (Little vs. Big Endian)

Parameter in Bytes umwandeln

Auf Formate einigen

Komplexe Datenstrukturen?

Referenzen?

Änderungen kommunizieren?

Nie völlig transparent?

Referenzen

Post-Messages zwischen iframes: Keine Referenzen OCap: Mögliche Referenzen als explizite Capabilities.

Entrance to the rabbit hole:

https://fosdem.org/

2021/schedule/event/

spritelygoblins/ (down the ASCII rabbit hole)

(94)

PAUSE

PAUSE

Arne Babenhauserheide

(95)

Einfacher RPC Server in Python

from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler server = SimpleXMLRPCServer(("localhost", 8000))

def hi():

return "hi"

server.register_function(hi) server.serve_forever()

(96)

Einfacher RPC Client in Python

import xmlrpc.client

s = xmlrpc.client.ServerProxy("http://localhost:8000") print(s.hi())

Arne Babenhauserheide

(97)

Messaging mit ZeroMQ

Ähnlich zu Sockets, aber mehrere Kommunikationsmuster.

Sockets erlauben one-to-one

ZeroMQ erlaubt many-to-one und one-to-many ZeroMQ bietet:

request-reply publish-subscribe pipeline

(98)

Request-Reply mit ZeroMQ - Server

import zmq

context = zmq.Context() p = "tcp://127.0.0.1:8000"

s = context.socket(zmq.REP) s.bind(p) # bind = listen here while True:

message = s.recv_string() if not "STOP" in message:

s.send_string(message + "*") else:

break

Arne Babenhauserheide

(99)

Request-Reply mit ZeroMQ - Client

import zmq

context = zmq.Context() p = "tcp://127.0.0.1:8000"

s = context.socket(zmq.REQ) s.connect(p)

s.send_string("hi") message = s.recv_string() s.send_string("STOP") print(message)

(100)

Publish-Subscribe mit ZeroMQ - Publish

import zmq, time context = zmq.Context() p = "tcp://127.0.0.1:8000"

s = context.socket(zmq.PUB) s.bind(p)

while True:

time.sleep(3)

s.send_string("TIME " + time.asctime())

Arne Babenhauserheide

(101)

Publish-Subscribe mit ZeroMQ - Subscribe

import zmq

context = zmq.Context() s = context.socket(zmq.SUB) p = "tcp://127.0.0.1:8000"

s.connect(p)

s.setsockopt_string(zmq.SUBSCRIBE, "TIME") for i in range(5):

time = s.recv_string() print(time)

(102)

Publish-Subscribe mit ZeroMQ

Implementiert Multicast

Subscribers bekommen nur Messages entsprechend ihrer Subscription.

Arne Babenhauserheide

(103)

Pipeline mit ZeroMQ - Producer

import zmq, time context = zmq.Context() s = context.socket(zmq.PUSH) p = "tcp://127.0.0.1:8000"

s.bind(p)

for i in range(100):

s.send_string(str(i)) time.sleep(0.1)

(104)

Pipeline mit ZeroMQ - Consumer

import zmq, time context = zmq.Context() s = context.socket(zmq.PULL) p = "tcp://127.0.0.1:8000"

s.connect(p) while True:

message = s.recv_string() print(message)

time.sleep(int(message) * 0.01)

Arne Babenhauserheide

(105)

Pipeline mit ZeroMQ

Erlaubt Verteilung von Arbeit auf mehrere Consumer Im Gegensatz zu

Publish-Subscribe wird jede Message nur an einen Consumer weitergegeben

(106)

Message-oriented persistent communication

„message-queuing systems“ oder „Message-Oriented Middleware (MOM)“

Persistente asynchrone Kommunikation.

Sender und Empfänger müssen nicht gleichzeitig aktiv sein.

Arne Babenhauserheide

(107)

Allgemeiner Aufbau

Prozess hat einen lokalen Queue-Manager.

Queue Manager verwaltet die Queue für den Prozess.

Prozess kann in die lokale Queue Messages einstellen und entnehmen.

Messages addressiert.

Adressdatenbank im Queue-Manager.

(108)

Message Broker

bestehende Systeme integrieren

Für jedes System eigenes Messageformat

Nachricht von Prozess A an B sendet muss Bs Protokoll Konvertierung von

Nachrichten in einer

Komponente implementieren

Arne Babenhauserheide

(109)

Multicast Kommunikation

Daten an mehrere Empfänger

Multicast auf IP Ebene von ISPs selten umgesetzt

⇒ Multicast in der Anwendungsschicht Overlay Netzwerk:

Oft ein Baum: Pfade sind eindeutig Mesh-Netzwerks benötigt Routing

(110)

Metriken für Multicast mit Overlay

Cost metrics for Overlay Networks Physical Network

Alice

Bob

1 Ra

Erika

1 Rb

Carol

David

7 30 Re Rc 1

Rd

5

40 1 1

20

Kosten für physische Verbindungen sind gegeben.

Arne Babenhauserheide

(111)

Link Stress für Multicast mit Overlay

Cost metrics for Overlay Networks Physical Network

Alice

Bob 1 Ra

Erika 1 Rb

Carol

David

7 30 Re Rc 1

Rd 5

40 1 1

20

Link Stress: Anzahl wiederholter Nutzungen einzelner Verbindungen.

Beispiel Link Stress von A nach E: (B, Rb), (Ra, Rb) mit Link Stress jeweils 2.

(112)

Stretch für Multicast mit Overlay

Cost metrics for Overlay Networks Physical Network

Alice

Bob 1 Ra

Erika 1 Rb

Carol

David

7 30 Re Rc 1

Rd 5

40 1 1

20

Stretch: Verhältnis aggregierter Latenzen auf dem Weg im Overlay und dem optimalen Kommunikationsweg.

Beispiel Stretch von A nach E: Overlay = 1 + 7 + 1 + 1 + 7 + 30 + 1 = 48, Optimal = 1 + 30 + 1 = 32 –> Stretch 48/32

Arne Babenhauserheide

(113)

Übung

Cost metrics for Overlay Networks Physical Network

Alice

Bob 1 Ra

Erika 1 Rb

Carol

David

7 30 Re Rc 1

Rd 5

40 1 1

20

Berechne Link Stress und Stretch für die Verbindung E nach C.

Link Stress: (Rd, D) (Rc, Rd) mit Link Stress jeweils 2

Stretch: 1 + 20 + 5 + 1 + 1 + 5 + 1 = 34, 1 + 20 + 1 = 22 –> 34/22

(114)

Zusammenfassung 1

Middleware kann als Schicht im Netzwerkmodell gesehen werden

Kommunikation wird nach transient/persistent und asynchronous/synchronous unterschieden

RPC ist ein entfernter Methodenaufruf

Messaging erlaubt entkoppelte Kommunikation

Arne Babenhauserheide

(115)

Zusammenfassung 2

ZeroMQ bietet die Kommunikationsmuster:

Request-Reply Publish-Subscribe Pipeline

Multicast:

Wird auf Anwendungsebene umgesetzt

Link Stress und Stretch als Metriken für Overlay Netzwerke

(116)

Fragen für die Prüfung?

im Cryptpad sammeln.

Arne Babenhauserheide

(117)

Fin

Viel Erfolg in den nächsten Wochen!

¨

^

(118)

Ghosh, S. (2015). Distributed Systems - An Algorithmic Approach.

Computer & Information Science. Chapman & Hall/CRC, 2 edition.

Steen, M. v. and Tanenbaum, A. S. (2017). Distributed Systems.

CreateSpace Independent Publishing Platform; 3.01 edition (February 1, 2017), 3 edition.

Bilder:

Arne Babenhauserheide

Referenzen

ÄHNLICHE DOKUMENTE

Einstieg Sicherheit Angriffe Verschlüsselung Hash Sig Stego PGP SSL Aufteilen Schluss.. Vorweg: Absolut

Replikationstransparenz erlaubt, dass mehrere Instanzen von Ressourcen verwendet werden, um die Zuverlässigkeit und die Leistung zu verbessern, ohne dass die Benutzer

– Mobile Node (MN) globally addressable: fixed Home Address (HoA) – Home Agent (HA) to permanently represent MN at home network – Mobile Node locally addressable: changing Care

u Linking: bidirektional, signalisiert mit „exit“ Nachrichten – Erlaubt es Lebenszeit von Aktoren zu

u Junfeng Yang et al., MODIST: Transparent Model Checking of Unmodified Distributed Systems, in Proceedings of the 6th USENIX Symposium on Networked Systems Design and

 nur eine Operation: synchronisiere(S) ; alle lokalen Write-Operationen werden zu allen Kopien übertragen und alle Write-Operationen bei anderen Kopien werden zur lokalen

Clients können über die entfernte Methode nextMessage()Nachrichten-Strings abrufen, wobei sich der Server für eine begrenzte Zeit t merkt, welche Nachricht zuletzt an den jeweili-

 Junfeng Yang et al., MODIST: Transparent Model Checking of Unmodified Distributed Systems, in Proceedings of the 6th USENIX Symposium on Networked Systems Design and