Slide 1 Slide 2 Zwei wesentliche Arten von Protokollen

Werbung
2. KOMMUNIKATION
IN VER TEILTEN
P ROTOKOLLSTAPEL
S YSTEMEN
OSI
➜ Das OSI-Modell enthält sieben Schichten (Protokollstapel)
➜ Anmerkung: Die OSI-Schichten sind methodisch hilfreich, die
OSI-Protokolle wurden jedoch nie wirklich gebräuchlich
➜ Jedes verteilte System erfordert Kommunikationsmöglichkeit
➜ Die Kommunikation basiert auf der Nachrichtenübergabe auf
unterster Ebene (Netzwerk), da es nur selten einen
gemeinsamen Speicher gibt
Slide 1
IN
➜ Bei Tausenden/Millionen von Prozessen in einem großen
verteilten System, ist es unmöglich, verteilte Anwendungen auf
dieser niedrigen Abstraktionsebene zu entwickeln
Slide 3
➜ Dazu ist das Netzwerk oft unzuverlässig, wie z. B. Internet
➜ Plan dieses Kapitels:
• Netzwerke und Protokolle
• Vier Modelle, die dem Benutzer eine abstraktere Sicht der
Kommunikation zur Verfügung stellen: RPC, RMI,
nachrichtenorientierte Middleware und Streams
AUSTAUSCH
VON
N ACHRICHTEN : P ROTOKOLLE
P ROTOKOLL -S CHICHTEN , OSI-M ODELL
➜ Das Schichtenmodell soll einen Überblick über das Ablaufen der
Kommunikation zwischen zwei Prozessen in einem VS geben:
➜ Wenn zwei Maschinen in einem System kommunizieren, müssen
sie einander “verstehen” (Bsp.: A sendet einen frz. Roman in
EBCDIC-Kodierung, B erwartet eine dt. Inventarliste in ASCII)
➜ Die entsprechenden “Absprachen” nennt man Protokolle:
Slide 2
•
•
•
•
Wieviele Volt entsprechen einem 0-Bit bzw. 1-Bit
Wie erkennt man das letzte Bit einer Nachricht
Wie erkennt man, dass eine Nachricht verloren wurde
... und vieles mehr
Slide 4
• Sender erzeugt eine Nachricht und übergibt sie an die Applikationsschicht (z.B. Bibliotheksprozedur) auf seiner Maschine
• Die Software der App-Schicht fügt der Nachricht einen
Header zu und übergibt sie an die Darstellungsschicht
• u. s. w. - jedesmal wird Header oder Trailer beigefügt
Zwei wesentliche Arten von Protokollen:
➜ Verbindungsorientiert (analog dem Telefon): Eine Verbindung
wird aufgebaut, benutzt und abgebaut. Zustellungsgarantie,
aber zeitaufwendig.
➜ Verbindungslos (analog dem Briefkasten): Nachrichten werden
verschickt, ohne Verbindung aufzubauen. Keine
Zustellungsgarantie, dafür schneller.
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
1
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
2
• Ganz unten im Protokollstapel überträgt die Bitübertragungsschicht die Nachricht mit allen Headern und Trailern
OSI-S CHICHTEN : T RANSPOR TPROTOKOLLE
• Auf der Empfänger-Maschine wird die Nachricht von unten
nach oben weitergereicht
➜ Transportschicht macht das Netzwerk dem Anwender
zugänglich
• Dabei entfernt jede Schicht den für sie vorgesehenen
Header/Trailer und wertet ihn aus
Slide 5
➜ Sichert verlustfreie Lieferung der Nachricht
➜ Die Idee von Schichten mit eigenen Protokollen an einem
Beispiel aus der Wirtschaft:
➜ Baut auf verbindungsorientierten oder -losen Netzwerkdiensten
Slide 7
• Zwei Chefs und ihre Sekretärinnen
➜ Zwei wichtigste Transportprotokolle:
• TCP (Transport Control Protocol): verbindungsorientiert
• Die Sekretärinnen verwenden Fax als technisches Protokoll
für Bestellungen, ohne über Inhalt nachzudenken
• UDP (Universal Datagram Protocol): verbindungslos
➜ TCP funktioniert zuverlässig, verursacht jedoch mehr Overhead
• Die Chefs entscheiden über ihren Inhalt (telefonisch, beim
Golfen, etc.), ohne über die Bestellungsabwicklung
nachzudenken
➜ TCP bei Client-Server:
• Die beiden Protokolle können unabhängig voneinander
ausgetauscht werden
OSI-S CHICHTEN : U NTERSTE E BENE
➜ Bitübertragungsschicht: überträgt 0s und 1s. Das Protokoll
bestimmt unter anderem:
• wieviele Bits pro Sekunde
• eine oder beide Richtungen
Slide 6
➜ Sicherungsschicht: gruppiert die Bits in Frames, erkennt
mögliche Übertragungsfehler und korrigiert sie:
Slide 8
• Fügt jedem Frame seine Prüfsumme an und überprüft diese
• Protokoll bestimmt den Verlauf der “Verhandlungen” zw.
Sender und Empfänger bei evtl. Fehlern über Nachsenden
etc.
➜ Vermittlungsschicht: wählt den Pfad im Netz (routing)
• Das gebräuchlichste Protokoll – verbindungsloses IP (Internet
Protocol)
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
3
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
4
RPC: KONVENTIONELLER P ROZEDURAUFRUF
OSI-S CHICHTEN : H ÖHERE E BENE
➜ RPC baut auf dem konventionellen Prozeduraufruf auf
➜ Beispiel-Aufruf in C: count = read(fd, buf, bytes);
zum Einlesen bytes Bytes aus einer Datei fd und Abspeichern
im Array buf
➜ Sitzungsschicht: Dialogmöglichkeit für Benutzer bei langen
Übertragungen
➜ Darstellungsschicht: Formatierung der Nachrichten
➜ In der Praxis werden die zwei o. g. Schichten kaum benutzt
➜ Es werden hauptsächlich nur Applikationsprotokolle benutzt:
Slide 9
Slide 11
• FTP (File Transfer Protocol): für Dateien zwischen Clients und
Servern
• HTTP (HyperText Transfer Protocol): ursprünglich für
Webseiten, später auch z.B. in Java RMI (s. später)
Nun verlassen wir den expliziten Nachrichtenaustausch und
betrachten abstraktere Ansätze, um diesen zu verbergen
E NTFERNTER P ROZEDURAUFRUF (RPC – Remote Procedure Call )
➜ Die Idee von RPC: anstatt direkten Nachrichtenaustausch
zwischen Maschinen:
• Es wird den Programmen erlaubt, Prozeduren auf anderen
Maschinen aufzurufen
➜ Die Parameter werden auf den Stack gelegt
• Die Parameter werden zur ausführenden Maschine geschickt
Slide 10
• Das Ergebnis wird an die aufrufende Maschine
zurückgebracht
Slide 12
• Die Kommunikation passiert implizit, d.h. unsichtbar für den
Programmierer
➜ Call-by-value für Wertparameter: bytes und fd werden auf den
Stack kopiert
➜ Call-by-reference für Zeiger und Arrays: es wird die Adresse des
Arrays buf abgelegt
➜ Es wird dann ein Aufruf zur BS-Prozedur read erzeugt
➜ Potentielle Probleme bei RPC:
• Die involvierten Programme befinden sich in getrennten
Adressräumen
• Die Maschinen können nicht identisch sein (heterogen)
• Die Maschinen können abstürzen
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
5
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
6
RPC: C LIENT-
UND
S ERVER -S TUBS
➜ Ziel des RPC: Transparenz, d.h. entfernter Aufruf soll möglichst
wie lokaler aussehen
➜ Server-Stub erhält das Ergebnis, verpackt es in einer Nachricht
und schickt sie an den Client; anschließend wartet er auf
weitere eingehende Anforderungen
Slide 13
Slide 15
➜ An der Client-Maschine wertet der Client-Stub die Nachricht
aus, packt das Ergebnis aus und kopiert es an seinen Aufrufer
➜ Der Aufrufer erhält die Steuerung zurück, er weiß dass der Aufruf
erledigt ist, weiß aber nicht wie (bzw. dass entfernt erledigt)
Fazit: Der Zugriff auf externe Dienste erfolgt bei RPC durch lokale
Prozeduraufrufe (nicht durch send/receive)! Alle Details der
Kommunikation werden in den beiden Stubs-Prozeduren verborgen
➜ Man erreicht dies, indem eine spezielle Version von read, ein
sog. Client-Stub verwendet wird
➜ Der Stub erzeugt wie im lokalen Fall einen Aufruf an das BS,
jedoch nicht zum Lesen der Datei, sondern zum Verpacken und
Abschicken der Parameter an den Server (sog. Marshalling)
➜ Im Server übergibt BS die Nachricht an den Server-Stub
RPC: PARAMETER ÜBERGABE
➜ Beispiel: Entfernter Aufruf von add(i,j):
UND
IDL
Die Parameterübergabe bei RPC ist nicht unproblematisch:
➜ Einfache Datenelemente (Zahlen, Zeichen, etc.) haben
verschiedene Darstellungen auf unterschiedlichen
Maschinentypen: Zeichencode, Bytenummerierung, usw.
➜ Eine Referenz (bzw. ein Zeiger):
Slide 16
Slide 14
➜ Fazit: Beide Seiten müssen dasselbe Protokoll verwenden, inkl.
Daten- und Nachrichtenformate. Das Erstellen von Stubs wird
mit IDL (Interface Definition Language) vereinfacht
➜ Server-Stub packt die Parameter aus und führt einen lokalen
Aufruf auf dem Server aus
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
• Gilt nur im “eigenen” Prozess-Adressraum, verliert ihren Sinn
auf entfernter Maschine
• Für Arrays bekannter Größe: das Array in die Nachricht
kopieren, an den Server-Stub senden, der den Server mit
einem Zeiger auf das Array aufruft und dann zurückschickt
• Das funktioniert nicht für Zeiger auf beliebige/dynamische
Datenstrukturen, z.B. komplexe Graphen
7
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
8
RMI: Remote Method Invocation (E NTFERNTER M ETHODENAUFRUF )
➜ Das RPC kann auf die Objektorientierung übertragen werden,
was seine Verteilungstranparenz zusätzlich verbessert:
Implementierung der Objekt-Schnittstelle – geladen
• Objekte kapseln Daten (Status) und Operationen
(Methoden) ein.
Slide 17
• Client-Stub verpackt Methoden-Aufrufe in Nachrichten an
den Server
• Methoden werden über eine Schnittstelle bereitgestellt
Slide 19
• Die Unterscheidung “Schnittstelle vs. Objekt” erlaubt eine
Schnittstelle auf einer Maschine abzulegen und das
eigentliche Objekt auf einer anderen Maschine
• Server-Stub (Skeleton im Bild) packt Nachrichten aus und ruft
Methoden auf
➜ Beachte: Der Status eines entfernten Objektes befindet sich
i.d.R. auf einer Maschine. Auch wenn er verteilt ist, wird dies
hinter den Schnittstellen des Objekts verborgen.
• Diese Anordnung wird als “verteiltes/entferntes Objekt”
bezeichnet, und bedeutet i.d.R. nicht, dass ein Objekt
physisch über mehrere Maschinen verteilt ist
RMI: O BJEKTREFERENZEN
➜ RMI unterstützt systemübergreifende Objektreferenzen, um
Objekte als Parameter in Methodenaufrufen zu nutzen
➜ Objektreferenzen können frei zwischen Maschinen übertragen
werden, z.B. als Parameter eines Methodenaufrufs
Slide 20
Slide 18
➜ Objektreferenz enthält Information zum Auffinden des Objekts:
Netzwerkadresse der Maschine, Port des Servers, Hinweis auf
das Objekt, etc.
➜ Die Adresse der Maschine schränkt die Migrations-Transparenz
ein, man verwendet oft flexiblere Lösungen, die jedoch die
Skalierbarkeit benachteiligen können
➜ Damit ein Prozess mithilfe der Objektreferenz eine Methode
entfernt aufrufen kann, muss er sich zu dem Objekt binden
➜ Der Client muss sich zum entfernten Objekt binden, was in vielen
Systemen automatisch passiert:
• In den Adressraum wird ein Client-Stub (Proxy im Bild) – eine
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
9
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
10
RMI: U NTERSCHIEDE
RPC
➜ RMI erlaubt beliebige Objekte (dagegen: RPC nur einfache
Datentypen!) als Argumente eines entfernten Aufrufs:
RMI: PARAMETER ÜBERGABE
➜ Dank Objektreferenzen ist die Parameterübergabe in RMI
weniger eingeschränkt als bei RPC
➜ Man kann Objektreferenzen als Parameter verwenden: wenn
ein Prozess eine Objektreferenz erhält, kann er sich bei Bedarf
an das entfernte Objekt binden
Slide 21
ZU
Slide 23
➜ Effizienz halber unterscheidet man zwischen entfernten und
lokalen Objektreferenzen (s. nächste Folie):
• Objektargumente werden zum Übertragen serialisiert
(Zeichenstrom erzeugt), mit Verweis darauf, wo sich die
Objektimplementierung befindet
• Wegen Vererbung kann der Datentyp eines Parameters evtl.
erst zur Laufzeit bestimmt werden. Sollte die entsprechende
Klassendatei nicht vorhanden sein, so müssen die
Methodendefinitionen nachgeladen/übertragen werden
➜ Javas Garbage Collection ist auf entfernte Objekte erweitert
➜ Beispiel: Java RMI ist eine reine Java-Angelegenheit:
• bezieht sich eine Referenz auf entferntes Objekt, so wird sie
kopiert und als Wertparameter übergeben
• bezieht sie sich auf ein lokales Objekt im Client, so wird das
Objekt selbst kopiert und übergeben
• RMI-Applikationen können per se nicht von Rechnern ohne
JVM oder von nicht-Java-Programmen benutzt werden
• Dadurch ist keine IDL (Interface Definition Language) wie bei
RPC nötig. Mit Java IDL kann man allerdings Objekte jeder
Sprache benutzen, die den CORBA-Standard unterstützt
JAVA RMI: Ü BERSICHT
DER WICHTIGSTEN
S CHRITTE
➀ Definiere ein für Client und Server gemeinsames Ferninterface
(remote interface), in dem die Signaturen der entfernt
aufrufbaren Methoden enthalten sein müssen
Slide 22
Slide 24
➁ Definiere die Server-Seite:
➜ Die Basis von RMI ist ein Fernobjekt (remote object) – Instanz
der Server-Klasse – das vom Client aufgerufen werden kann
➜ Die Server-Klasse muß ein Ferninterface implementieren
➜ Fernobjekte müssen mit einem eindeutigen Namen bei
einem Namensdienst (registry) registriert werden
➜ Ein solcher Namensdienst läuft im Hintegrund auf dem Server
und ist über eine bestimmte Dienstadresse (port number,
per default 1099) von Clients ansprechbar
➂ Definiere die Client-Seite: Ein Client kann sich von der registry
eine Fernreferenz (remote reference) holen und über diese
Referenz ein Fernobjekt auf dem Server ansprechen
➃ Kompiliere Server u. Client, führe (mit registry im Hintegrund) aus
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
11
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
12
V ER TEILTE JAVA RMI S TRUKTUR
RMI
Client
B EISPIEL : I MPLEMENTIERUNG
RMI
Web server
URL protocol
RMI
URL
protocol
IM
S ERVER (1)
public c l a s s RmiExampleImpl
extends UnicastRemoteObject implements RmiExample {
public RmiExampleImpl ( ) throws RemoteException {
Web server
Slide 25
super ( ) ; } / / K o n s t r u k t o r UnicastRemoteObject aufrufen
Slide 27
➜ Server assoziiert seine Fernobjekte mit Namen in der Registry
➜ Registry stellt Referenzen auf Fernobjekte zur Verfügung
➜ Client sucht nach dem Fernobjekt in der Registry, bekommt
eine Remote Reference auf das Fernobjekt und kann danach
die Methoden dieses Fernobjekts aufrufen
➜ Bytecodes können zum dynamischen Nachladen zwischen
Client und Server übertragen werden, mittels URL-Protokollen
(http, ftp, etc.) vom jeweiligen Webserver
public i n t twice ( i n t i ) throws RemoteException {
return i ∗2;}}
➜ Die Implementierungsklasse muß Klasse UnicastRemoteObject
erweitern, derer Konstruktor die Fernobjekte der Server-Klasse
“exportiert”: sie “lauschen” danach auf Anfragen von Clients,
die das gleiche Ferninterface kennen
➜ Die Kommunikation zwischen Objekten erfolgt über
TCP-Sockets, transparent für den Benutzer!
JAVA RMI P ROGRAMMIERBEISPIEL : I NTERFACE
B EISPIEL : I MPLEMENTIERUNG
➜ Beispiel: es soll eine Fernmethode twice implementiert werden,
die den ihr vom Client übergebenen ganzzahligen ParameterWert verdoppelt und als Ergebnis an den Client zurück iefert
➜ Importieren benötigter Java-Klassenbibliotheken:
DES
F ERNOBJEKTS
IM
S ERVER (2)
➜ Der Konstruktor der Server-Klasse muß explizit definiert werden
und throws RemoteException beinhalten
➜ Er ruft den Konstruktor von UnicastRemoteObject auf
import java . rmi . ∗ ;
Remote
"Interface"
import java . rmi . s e r v e r . ∗ ;
Slide 26
F ERNOBJEKTS
➜ Implementierungsklasse im Server (Server-Klasse) implementiert
Ferninterface RmiExample, indem sie Methode twice definiert
➜ Java-Vereinbarung: Klassenname = InterfaceName + ”Impl”
registry
Server
DES
➜ Client und Server: Definition der Fernschnittstelle:
Slide 28
• Auf beiden Seiten ein Ferninterface einführen als Erweiterung
des Java Interfaces Remote (tagging interf. ohne Methoden)
• Das Ferninterface um die Signaturen der gewünschten Fernmethoden erweitern, in unserem Fall – Methode twice()
UnicastRemoteObject
extends
RmiExample
"Interface"
extends
implements
RmiExampleImpl
public interface RmiExample extends Remote {
public i n t twice ( i n t i ) throws RemoteException ; }
➜ Client kennt das Ferninterface und die (Fern)Methoden-Namen
• Jede entfernte Methode muß RemoteException werfen
können (um Netzwerk-spezifische Fehler abzufangen)
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
Client und Server sind sich nun des Potentials für Fernaufrufe bewußt:
➜ Server implementiert die Fernmethoden dieses Interface
13
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
14
B EISPIEL : E RZEUGEN /R EGISTRIEREN
DES
F ERNOBJEKTS
IM
S ERVER
B EISPIEL : F ERNAUFRUF
➜ Registrierung/Suche der Fernobjekte übernimmt rmiregistry
(ein Java Utility Programm) das gleichzeitig mit dem Server l äut
➜ Ein Fernobjekt wird als Instanz der Impl-Klasse erzeugt und mittels
Naming.rebind als TwiceServer auf dem Rechner bolero
registriert (wo die rmiregistry läuft)
import java . rmi . ∗ ;
public c l a s s RmiExampleClient {
public void RemoteTwice ( ) {
RmiExampleImpl example = new RmiExampleImpl ( ) ;
t r y {Naming . rebind ( ” / / bolero / TwiceServer ” , example ) ; }
try{
Slide 31
RmiExample r e m i n t r e f =
➜ Die Klasse Naming gehört zum Package java.rmi
( RmiExample )Naming . lookup ( ” / / bolero / TwiceServer ” ) ;
➜ Die allgemeine Syntax ist: //host:port/remoteObjectName,
wobei 1099 die default Portnummer für rmiregistry ist
/ / Aufruf der entfernten Methode
i n t ergebnis = r e m i n t r e f . twice ( 3 ) ; }
➜ Zweites Argument von rebind, hier example, ist eine Ref auf die
Objektimplementierung, wo Fernmethoden aufgerufen werden
catch ( RemoteException ex ){}}
public s t a t i c void main( S t r i n g args [ ] ) { . . . } }
➜ Clients können nun nach TwiceServer auf dem Server suchen
B EISPIEL : KOMPILIEREN
B EISPIEL : R EGISTRIERUNG – F OR TSETZUNG
➜ Alle Klassen mit javac kompilieren
➜ Aus Sicherheitsgründen darf bind/rebind nur auf registry des
gleichen Hosts passieren; dagegen darf lookup (Nachschauen
vom Client in registry) von jedem Host aus ausgeführt werden
➜ Die Server-Klasse RmiExampleImpl mit rmic kompilieren
(spezieller RMI-Compiler):
➜ Methode rebind ändert das Objekt, wenn der Name bereits
benutzt wurde, mit bind bleibt das alte Objekt registriert
rmic -v1.2 RmiExampleImpl
produziert eine sog. Stub Class: RmiExampleImpl_Stub.class
➜ Tip: Sobald ein Fernobjekt registriert ist, können seine Methoden
Referenzen auf weitere Fernobjekte liefern.
Dadurch wird mehrfaches Nachschauen vom Client in einer
(entfernten) registry vermieden (Factory Design Pattern)
Slide 32
➜ Option -v1.2 zeigt, daß wir mit Java2 arbeiten; in Java 1.1
hätte rmic zwei Klassen erzeugt : Stub und Skeleton
➜ Skeleton ist seit Java 1.2 deprecated
System.setSecurityManager(new RMISecurityManager());
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
➜ Der Client kommuniziert mit Stubs, die als Fernobjekt-Ersatz
dienen. Die Stub-Klasse muß dem Client zugänglich sein (z.B.
über die sog. Codebase auf einem serverseitigen Webserver)
➜ Das Stub-Objekt leitet Client-Fernaufrufe ans RMI-System, das
notwendiges Networking organisiert
Auf dem Client, z.B. in der main-Methode, muß der
SecurityManager gesetzt werden:
c
2006
/ / holen der Fernobjektreferenz von r e g i s t r y
/ / I P der r e g i s t r y e v t l . Argument von main
catch ( RemoteException re ){}}}
Slide 30
C LIENT
➜ Client erhält eine Fernobjektreferenz von registry und konvertiert
sie (casting) zu RmiExample (Interface, nicht Klasse!). Danach
kann er die im Ferninterface definierten Methoden aufrufen
public s t a t i c void main( S t r i n g [ ] args ) {
Slide 29
IM
15
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
16
B EISPIEL :
P ROGRAMMIERBEISPIEL : AUSF ÜHREN
Slide 33
EIN VER TEILTES
E-M AIL -S YSTEM
➜ Starte den Namensdienst im Server (per Default am Port 1099):
rmiregistry &
➜ Ein Host führt eine Mail-Applikation aus
läuft normalerweise im Hintergrund, keine Reaktion vom System
➜ Starte das Programm im Server:
java RmiExampleImpl &
➜ Mail-Applikation übergibt eine Nachricht an seinen Host, der sie
weiter an den lokalen Mail-Server leitet
➜ Jeder Host ist mit einem Mail-Server verbunden
damit wird ein Fernobjekt erzeugt und bei der registry registriert,
die nun auf Anfragen wartet. Wir starten im Hintergrund, da
beim Erzeugen von UnicastRemoteObject ein separater
Thread gestartet wird, der unbestimmte Zeit lang arbeitet
➜ Starte das Programm im Client:
java RmiExampleClient
➜ Der Client kann so umprogrammiert werden, daß er die
IP-Adresse des Servers als Argument bekommt:
Slide 35
java RmiExampleClient 130.149.17.51
➜ Beachte: Sogar wenn RMI auf einem Rechner getestet wird,
muß dieser eine aktive TCP/IP Anbindung haben!
➜ Mail-Server nimmt eine Nachricht, schlägt das Ziel nach und
erfährt die Adresse des Ziel-Mail-Servers (Transportebene)
➜ Mail-Server richtet eine Verbindung ein und übergibt die
Nachricht dem Ziel-Mail-Server
N ACHRICHTENORIENRIER TE KOMMUNIKATION
➜ RPC und RMI erhöhen zwar die Zugriffstranparenz, eignen sich
jedoch nicht für alle Situationen:
Slide 34
➜ Ziel-Mail-Server speichert die Nachricht in einem Puffer für den
Empfänger (sog. Mailbox des Empfängers)
• wenn nicht vorausgesetzt werden kann, dass beim Absetzen
der Anforderung der Empfänger gerade läuft (Persistenz)
Slide 36
• wenn der Client für die Zeit der Bearbeitung nicht blockiert
werden soll (Asynchronität)
➜ Beispiel: Ein Email-System braucht persistente Kommunikation:
Sender-Host und Empfänger-Host können unabhängig
voneinander ein- und ausgeschaltet werden
➜ Ist der Ziel-Mail-Server vorübergehend nicht erreichbar, wird die
Nachricht weiterhin auf dem lokalen Mail-Server gespeichert
➜ Die Schnittstelle auf dem Empfänger-Host stellt einen Dienst für
das Mail-Programm bereit, mit dem dieser regelmässig
eingehende Mails überprüfen kann
➜ Eingehende Nachrichten werden i.A. auf Mail-Servern,
manchmal auch auf den Hosts gepuffert
Die nächste Folie zeigt verschiedene mögliche Kombinationen von
Asynchronität und Persistenz
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
17
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
18
F UNKTIONEN
Slide 37
Slide 39
F ÜR
S OCKETS
Funktion
Bedeutung
Socket
Erzeugt einen neuen Kommunikationsendpunkt
Bind
Ordnet einem Socket eine lokale Adresse zu
Listen
Kündigt die Bereitschaft an, dass Verbindungen
akzeptiert werden
Accept
Blockiert den Aufrufer, bis eine Verbindungsaufforderung ankommt
Connect
Versucht aktiv, eine Verbindung einzurichten
Send
Sendet Daten über die Verbindung
Receive
Empfängt Daten über die Verbindung
Close
Gibt die Verbindung frei
T RANSIENTE KOMMUNIKATION : S OCKETS
➜ Sockets sind eine Schnittstelle direkt zur Transportebene (TCP/IP)
und können als eine Middleware-Lösung betrachtet werden
S TREAM -O RIENTIER TE KOMMUNIKATION
➜ Bisher hatten wir Kommunikation zu beliebigen Zeitpunkten mit
voneinander unabhängigen Informationseinheiten
➜ Es gibt Anwendungen wo Timing eine wesentliche Rolle spielt:
Slide 38
Slide 40
• Audio: Samples müssen in bestimmter Reihenfolge und mit
Intervallen von genau 1/44100 Sek abgespielt werden
• Bei Videos sind die Anforderungen noch strenger
➜ Für derartige Anwendungen werden Data-Streams –
Folgen der Dateneinheiten – gebraucht
➜ Die Funktionen in der Abbildung (socket, bind, listen,
accept/connect, send/receive, close) sind auf der
nächsten Folie erklärt
➜ Details und Praxis mit Sockets - in der Übung!
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
19
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
20
Q O S (Q UALITY
OF
S ERVICE ) = D IENSTG ÜTE
Nicht-funktionale Anforderungen (z.B. zeitabhängige) werden
häufig als QoS-Anforderungen ausgedrückt, z.B.:
➜ Verlustsensibilität und Verlustintervall gibt an, welche maximale
Verlustrate akzeptabel ist, z.B. 1 byte/min
➜ Spitzverlust: wieviele Einheiten nacheinander verlorengehen dürfen
Slide 41
➜ Min. feststellbare Verzögerung: wie lange das Netzwerk DatenAuslieferung verzögern kann, bevor der Empfänger dies erkennt
Slide 43
➜ Maximale Verzögerungsabweichung: maximal tolerierter Jitter,
d.h. maximale Variation der Zeit, die bei der Auslieferung einer
Folge von Dateneinheitentoleriert wird (für Video und Audio)
➜ Qualitätsgarantie: eine Zahl die angibt, wie ernst die
Dienstanforderungen genommen werden.
• Middleware bietet verschiedene Schnittstellen, um Audiound Video-Streams zu steuern
Die Anwender können ihre Anforderungen i.d.R. nicht genau
formulieren, deshalb werden sinnvolle Standardwerte bereitgestellt,
z.B.: Audio/Video, Qualität hoch/mittel/gering
• Jedes Gerät hat eigene Schnittstellen, die vom Anwender in
Stream-Verarbeitungsroutinen benutzt werden
Z USAMMENFASSUNG
Was haben wir heute gelernt:
➜ Traditionelle Netzwerkapplikationen arbeiten mit
Nachrichtenübergabe auf der niedrigen Transportebene
S TREAMKOMMUNIKATION : S YNCHRONISIERUNGSMECHANISMEN
➜ Middleware-Systeme stellen eine höhere Abstraktionsebene für
Kommunikation bereit, z.B.:
➜ Explizite Synchronisation auf der niedrigsten Ebene:
• Ein Prozess führt Operationen auf den Streams aus und stellt
sicher, dass die Anforderungen erfüllt werden
Slide 42
Slide 44
• Nachteil: Die Applikation ist für die Implementierung
verantwortlich, obwohl nur Funktionen auf niedrigster Ebene
zur Verfügung stehen
• RPC - ermöglicht Zugriffstransparenz, unterstützt jedoch
kaum Referenzen als Parameter
• RMI - erweitert RPC auf verteilte Objekte, erlaubt systemübergreifende Objektreferenzen als Parameter zu übergeben
➜ Nachrichtenorientierte Middleware-Modelle unterstützen
Persistenz und Asynchronität, die bei RPC/RMI fehlen
➜ Synchronisation mit Multimedia-Middleware:
➜ Streams: Für Anwendungen wie Audio/Video mit temporären
Beziehungen zwischen zwei aufeinanderfolgenden Nachrichten
➜ Die Anforderungen werden als QoS (Quality of Service) –
Dienstgüte – formuliert
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
21
c
2006
BY
S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 2
22
Herunterladen