PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
Mit Virtuellen Maschinen
PD Stefan Bosse
Universität Bremen - FB Mathematik und Informatik
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
Wie können WEB Browser für die verteilte Datenverarbeitung genutzt werden?
Zentrales Thema Kommunikation: Wie können WEB Browser (und WEB Seiten) vernetzt werden?
Prozesskommunikation mit Channels über WEB Sockets und WEB Real-time Communication
Gruppenkommunikation
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
Parallele Systeme sind eng gekoppelt. Kommunikation zwsichen Prozessen nutzt:
Verteilte Systeme sind lose gekoppelt und können für die Synchronisation nicht auf das Betriebssystem und die technischen Eigenschaften des Hostrechners zurückgreifen!
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
Parallele Systeme sind i.A. synchrone Prozesssysteme
Verteilte Systeme sind inherent asynchron und können nicht grundsätzlich und zuverlässig synchronisiert werden!
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
Parallele Systeme arbeiten häufig nach dem Prinzip der Produzenten-Konsumenten Interaktion und Partitionierung
Es gibt häufig einen ausgewiesenen Master und eine Vielzahl von Worker Prozessen
In verteilten Systemen gibt es häufig ein Leader Prozess (der selbst aber auch Worker sein kann)
Leader und Worker bilden eine (temporäre) Gruppe
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
┌────────┐ ┌────────┐ │ P1 │ │ P2 │ │ Worker │ ◀──────▶ │ Worker │ └────────┘ └────────┘ ▲ ▲ ▲ │ │ ┌───────┐ │ │ └─▶ │ P5 │ ◀────┘ │ ┌─▶ │ Master│ ◀────┐ │ │ └───────┘ │ ▼ ▼ ▼ ┌────────┐ ┌────────┐ │ P3 │ │ P4 │ │ Worker │ ◀──────▶ │ Worker │ └────────┘ └────────┘
Verteiltes Prozesssystem mit Leader(Master) und Workern und Kommunikationskanälen
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
Ein Socket ist sowohl ein Kommunikationsendpunkt (zum Empfang von Nachrichten) als auch ein Sender von Nachrichten
Sockets (die i.A. zu Prozessen gehören) können miteinander verbunden werden (verbindungsorientierte Kommunikation mit Sessions) oder verbindungslos Datenpakete sich gegenseitig zusenden
Ein Socket wird durch eine lokale oder netzwerkweite Identifikation (Pfad, Nummer, Nummer und Netzwerkadresse des Gerätes, Namen usw.) erreicht
<ip:port> <ip:port> ┌────────┐ data msg ┌────────┐ │ Socket ├──────────────────────▶│ Socket │ └────────┘ send(data) └────────┘
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
Server
local server = luv.net.tcp()server:bind(host, port) function on_conncetion(chanClient) -- handle client request client:write(data)endserver:listen(128, function(err) -- Accept the client local chanClient = luv.net.tcp() server:accept(chanClient) on_connection(chanClient)end)
Klient
local chanClient = luv.net.tcp()chanClient:connect(host, port, function (err) -- check error and carry on. chanClient:write(data) data=chanClient:read()end)
Lua Socket mit bidirektionaler TCP Kanalverbindung
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
HTTP bietet sogenannte "pull" Anfragen (GET/POST), auf die es eine Antwort gibt (response).
WEB Sockets bieten eine Zweiwege (bidirektionale) Kommunikation zwischen ursprünglich einem Server und einem Klienten (d.h. auch die andere Seite kann direkt Daten senden)
WEB Sockets werden über das HTTP(S) Protokoll verhandelt und eine Socket Verbindung aufgebaut
Auch für die bidirektionale Kommunikation zwischen WEB Browsern geeignet
WEB Sockets nutzen (zwei) TCP Verbindungen um Datenströme zu übertragen. Die Übertragung ist als zuverläassig anzusehen (anders als bei UDP)
PD Stefan Bosse - VPP - Modul G: Verteilte Programmierung (WEB)
www.pubnub.com