3 - J (suc2)

3 - J (suc2)

3 - J (suc2)


Kartei Details

Karten 54
Sprache Deutsch
Kategorie Scherzfragen
Stufe Grundschule
Erstellt / Aktualisiert 07.01.2014 / 15.01.2014
Weblink
https://card2brain.ch/box/3_j_suc2
Einbinden
<iframe src="https://card2brain.ch/box/3_j_suc2/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Applikation

<Interprozesskommunikation>

Eine Applikation besteht aus einem oder mehreren Prozessen

Prozesse

<Interprozesskommunikation>

sind Objekte des Betriebssystems

ermöglichen einer Anwendung den sicheren Zugriff auf die Ressourcen des Betriebssystems

laufen in eigenem Speicherbereichen und sind dadurch voneinander isoliert

Für den Austausch von Daten zwischen Prozessen ist eine Interprozesskommunikation nötig

IPC (InterProcessCommunication)

<Interprozesskommunikation>

IPC basiert auf dem Austausch von Nachrichten und Daten zwischen Prozessen:

IPC kann unterschiedlich umgesetzt werden

über Dateien

über Pipes (nur lokal)

über Sockets (sowohl lokal als auch entfernt)

mit Hilfe einer Middleware  

Kommunikationsmodel

<Interprozesskommunikation>

Kommunikationsmodel legt das Protokoll für den Ablauf der Kommunikation zwischen Prozessen (IPC) fest

synchroner Kommunikation und

asynchroner Kommunikation

 

Synchrone Kommunikation

<Interprozesskommunikation>

Vorteile

Eher einfacher zum Implementieren

Synchronisation beim Zugriff auf gemeinsame Ressourcen gleich erledigt

Nachteile

zum Teil ineffizient (das Warten)

braucht sichere und schnelle Netzwerkverbindung

Empfängerprozess muss verfügbar sein

enge Kopplung zwischen Sender und Empfänger

Asynchrone Kommunikation

Realisierung mittels Warteschlangen

<Interprozesskommunikation>

Vorteile

lose Kopplung von Prozessen geringere Fehlerabhängigkeit der Empfänger muss nicht empfangsbereit sein effizienter (kein Warten)

Nachteile

aufwendiger bzw. komplizierter in der Implementierung (Warteschlangen) komplizierte Protokolle nicht immer sinnvoll

verteiltes System läuft in der Regel in einer heterogenen Umgebung

<Interprozesskommunikation>

unterschiedliche Hardwarearchitekturen

unterschiedliche Betriebssysteme (Plattformen)

unterschiedliche Programmiersprachen

Damit die Komponenten des verteilten Systems miteinander kommunizieren können, müssen sie alle ein gemeinsames Format für Daten benutzen

Marshalling

<Interprozesskommunikation>

Unter marshalling versteht man die Transformation einer beliebigen Nachricht in eine übertragbare Nachricht, wobei

die Datenstruktur in eine zusammenhängende Nachricht "planiert" wird und

die zu sendenden Daten aus dem lokalen in das gemeinsame Format übersetzt werden

Daraus resultiert ein Strom von bytes, welcher übertragen werden kann: eine übertragbare Nachricht

Unmarshalling

<Interprozesskommunikation>

Auf der Seite des Empfängers müssen die empfangenen Daten aus dem gemeinsamen Format in das lokale Format des Empfängers übersetzt werden

Dieser Prozess wird unmarshalling genannt

Unmarshalling wird immer auf der Seite des Empfängers ausgeführt

IPC mit sockets

<Interprozesskommunikation>

Vorteile:

direkte Kontrolle aller Transportparameter grössere Flexibilität bei der Entwicklung neuer Protokolle bessere Performance

Nachteile

die Datenrepräsentation wenig komfortable Entwicklung von Anwendungen

IPC mit Netzwerkprogrammierung mit Middleware

<Interprozesskommunikation>

Middleware ist eine zusätzliche Schicht, die sich zwischen Transportschicht (TCP/UDP) und Anwendung befindet

Vorteile

Bequeme Entwicklung von Anwendungen Lösung des Datenrepräsentationsproblems Evtl. weitere Dienste „von Haus aus“ verfügbar

Nachteile

Ein (unter Umständen grosser) Overhead muss in Kauf genommen werden Schlechtere Performance im Vergleich zu Socket-Programmierung

Local Procedure Call (LPC)

<Interprozesskommunikation>

Aufruf einer Prozedur, welche sich im gleichen Speicherraum (Prozess) befindet

Keine Interprozesskommunikation mit LPC möglich

vorteile / nachteile LPC

<Interprozesskommunikation>

Vorteile:

Bessere Performance, da alle Prozeduren im gleichen Prozess bzw. Speicherraum

Zuverlässige Kommunikation

Einfachere Parameterübergabe, da lokaler Stack für alle Prozeduren gemeinsam und verfügbar

Einfacher Zugriff auf gemeinsame Daten, da alle Prozessdaten gemeinsam

Nachteile:

Keine Interprozesskommunikation möglich Folie

Remote Procedure Call (RPC)

<Interprozesskommunikation>

RPC steht für den "entfernten Aufruf von Prozeduren„

Mit "entfernt" ist eine Prozedur gemeint, welche

in einem anderen Prozess ausgeführt wird bzw.

sich in einem anderen Speicherraum befindet

Stellt eine Art der Interprozesskommunikation

Die kommunikationswillige Prozesse können

auf dem gleichen System oder

auf unterschiedlichen Systemen ausgeführt werden 

LPC vs. RPC

<Interprozesskommunikation>

LPC ist einfacher zu implementieren, da sich die ganze Kommunikation (Nachrichtenaustausch) in einem gleichen Speicherraum (gleicher Prozess) abspielt

RPC ist weniger performant Kommunikation erfolgt in Form von Nachrichten, welche von einem zu anderem Prozess übertragen werden Parameter, welche übergeben werden müssen, müssen in die Nachricht passend verpackt werden

RPC ist komplexer in der Implementierung, da zusätzliche Protokolle für das Senden von Nachrichten benötigt

Anfrage- und Antwort-Nachricht

<Interprozesskommunikation>

Wie wird eine entfernte Prozedur aufgerufen (mit allem, was dazu gehört: Parameterliste, Rückgabewert)?

Wie werden Fehlersituationen (Exceptions) behandelt?

Die Struktur der Anfrage- bzw. Anwort-Nachricht muss "abgesprochen" werden und darf danach nicht ohne Rücksprache mit der "Gegenseite" geändert werden

Damit soll sichergestellt werden, dass die Kommunikation zwischen beteiligten Komponenten exakt und ohne Missverständnisse realisiert werden kann.

Die Rede ist von Request- und Reply-Protokoll

Request-Protokoll (Anfrage-Nachricht)

<Interprozesskommunikation>

definiert, wie die Anfrage-Nachricht aufgebaut werden muss

enthält alle für den Aufruf der entferenten Operation relevanten Informationen (den Namen der Methode und die Parmeterliste) in einer passenden Form

hängt im Aufbau (Struktur) von der Operation ab, die aufgerufen werden soll

Reply-Protokoll (Antwort-Nachricht):

<Interprozesskommunikation>

definiert, wie die Antwort-Nachricht aufgebaut werden soll

enthält alle für die Antwort relevanten Informationen in einer passenden Form:

den Rückgabewert, der von der aufgerufenen Operation retourniert wird

die Informationen über die Ausnahme, die evtl. geworfen werden könnte

ist im Aufbau vom Rückgabewert und Ausnahme, die geworfen werden könnte, abhängig

Anfrage- und Antwort-Nachricht

WICHTIG

<Interprozesskommunikation>

Pro Operation, die als entfernte Operation aufgerufen werden soll, muss je ein Request- und Reply-Protokoll definiert werden

Erst nach dem die Request- und Reply-Protokoll definiert sind, kann mit der Implementierung der Kommunikation gestartet werden

RPC, def

<Remote Procedure Call (RPC)>

eine Art der Interprozesskommunikation gemeint, mit der Aufruf von Operationen (Prozeduren) realisiert wird, die sich in einem anderen Prozess befinden

da die aufgerufene Prozeduren nicht im eigenen Prozess (Speicherraum) ausgeführt werden, reden wir von einem entfernten Prozeduraufruf

RPC über socket

<Remote Procedure Call (RPC)>

Verbindung herstellen (connect)

Daten lesen (read) und Daten schreiben (write)

Verbindung abbauen (diesconnect)

Man ist gezwungen, mit Streams zu arbeiten (I/O), was nicht unserer Vorstellung entspricht: für uns ist logischer, die benötigten Methoden direkt aufzurufen.

 

LPC statt RPC

sicht client (Wie kann eine entfernte Prozedur wie eine lokale Prozedur aufgerufen werden?)

<Remote Procedure Call (RPC)>

Stellen wir dem Client eine Komponente zur Verfügung, die im gleichen Prozess ausgeführt wird und als Server aussieht

Diese Komponente muss die gleiche Schnittstelle wie der Server implementieren

Die Rede ist von einem Stub (auch ClientStub, Proxy bzw. Stellvertreter genannt)

LPC statt RPC

sicht server (Wie kann ein entfernter Aufruf wie ein lokaler Aufruf entgegengenommen werden?)

<Remote Procedure Call (RPC)>

Stellen wir dem Server eine Komponente zur Verfügung, die im gleichen Prozess ausgeführt wird und als Client aussieht

Diese Komponente wird die Prozeduren des Servers als lokale Prozeduren aufrufen

Die Rede ist von einem ServerStub (auch Skeleton genannt)

Stubs

<Remote Procedure Call (RPC)>

bild

Client

<Remote Procedure Call (RPC)>

Der ClientStub implementiert die Server-Schnittstelle: so kann der Client alle Methoden des Servers auf dem ClientStub aufrufen

Der ClientStub

nimmt den Aufruf der Server-Methode entgegen, verpackt sie passend (Marshalling) und sendet sie zum Server bzw. zum ServerStub (RPC)

nimmt die Antwort des Servers entgegen, entpackt sie (Unmarshalling) und liefert den Rückgabewert an den Client zurück

Server

<Remote Procedure Call (RPC)>

Der Server muss alle Prozeduren implementieren, die in der entsprechenden Schnittstelle definiert wurden

Der ServerStub

nimmt die Anfrage, die der ClientStub gesendet hat, entgegen und entpackt sie (Unmarshalling)

ruft die gewünschte Methode auf dem Server auf (LPC) und nimmt die Antwort des Servers entgegen

verpackt die Antwort passend (Marshalling) und sendet sie an den ClientStub zurück

Der ServerStub muss eine Referenz auf den Server haben, um seine Prozeduren aufrufen zu können

RPC und Parameterübergabe

<Remote Procedure Call (RPC)>

Übergabe von Werten (pass by value)

Der Wert wird in die Nachricht entsprechend kopiert

Auf der anderen Seite wird der Wert "rekonstruiert"

Übergabe von Referenzen (pass by reference)

Grundsätzlich nicht möglich

Ausnahme: falls gemeinsamer Speicher vorhanden (shared memory)

RPC und Fehlerbehandlung

<Remote Procedure Call (RPC)>

Bei einem entfernten Aufruf kann ein Fehler an mehreren Orten passieren:

Bei der Zustellung der Anfrage

Während der Ausführung auf dem Server

Während der Zustellung der Antwort

RPC und Fehlerbehandlung

<Remote Procedure Call (RPC)>

Idempotente Prozesse dürfen beliebig oft ausgeführt werden Beispiel: das Lesen aus einer Datei

Nicht idempotente Prozesse dürfen nur einmal ausgeführt werden Beispiel: die Überweisung eines bestimmten Geldbetrags von einem auf das andere Konto)

Weitere Probleme mit RPC

<Remote Procedure Call (RPC)>

Performance:

RPC ist langsamer als LPC Antwortzeiten hängen auch von der Belastung des Netzwerks stark, die sich ständig ändert

Sicherheit

Daten (Nachrichten) werden im Netz übertragen uns sind somit angreifbar Probleme mit Authentifizierung von Kommunikationspartner

TCP/IP Protokollstack

<Sokets>

bild

Socketarten:

<Sokets>

Streamsockets (auch TCP-Sockets genannt)

Datagramsockets (auch UDP-Sockets genannt)

TCP-Sockets, Datenübertragung

<Sokets>

TCP-Sockets sind verbindungsorientiert (TCP)

Phasen der Datenübertragung:

Aufbau der Verbindung Übertragung von Daten Abbau der Verbindung

Daten, welche übertragen werden, werden

in einen Datenstrom geschrieben, und am Zielort

aus dem Datenstrom (in gleicher Reihenfolge) gelesen

TCP-Sockets in Java

<Sokets>

Die Server-Anwendung arbeitet mit der Klasse ServerSocket, welche alle für einen Server notwendigen Funktionalitäten enthält

Die Client-Anwendung arbeitet mit der Klasse Socket

UDP-Sockets (viel performanter als TCP)

<Sokets>

UDP-Sockets sind nicht verbindungsorientiert

Daten werden in Pakete geschrieben

Datenpakete könne maximal 8 KB gross sein (Header- und Nutzdaten zusammen)

Grössere Nachrichten müssen in der Anwendung segmentiert bzw. reassembliert werden

Die Ankunft von Datenpaketen wird nicht bestätigt

Es kann passieren, dass manche Datenpakete nicht ans Ziel kommen Folie

Gruppenkommunikation ()

<Sokets>

Multicast-Sockets

Direkte Netzwerkprogrammierung, Zusammenfassung

<Sokets>

Vorteile

sehr gute Performance

Protokolle können frei nach Bedarf implementiert werden, wodurch Anpassungen bzw. Optimierungen möglich sind

Nachteile

Sockets eignen sich für reine Datenübertragung

Sockets sind nur die Schnittstelle zur Transportschicht

Bieten keine Unterstützung für Kommunikationssteuerung und Datendarstellung

Protokolle müssen auf der Anwendungsebene implementiert werden um Kommunikationspartner zu finden und Austausch von Nachrichten zu steuern

Eigenschaften der Transportschicht sind zu berücksichtigen (TCP/ UDP)

Programmierung relativ aufwendig und fehleranfällig

Nachteile von Netzwerkprogrammierung

<middleware>

aufwendig und fehleranfällig

es müssen einige technische Aspekte berücksichtigt werden, die mit eigentlichem Anwendungsproblem nichts oder nur wenig zu tun haben  

Dies kann zu einem erheblichen Aufwand bei der Entwicklung einer Anwendung führen

 

Middleware, def.

Unter Middleware ist die Software zu verstehen, die zwischen der verteilten Anwendung und der darunterliegenden Schicht steht umd "vermittelt"

die Interaktion zwischen Anwendungskomponenten zu erleichtern, und  

die Komplexität der vernetzten Systemumgebung zu maskieren

vorteil Middleware

wird für den Anwendungsentwickler die Umsetzung der Kommunikation einfacher, wobei

alle Aspekte der Netzwerkprogrammierung so weit wie möglich (und sinnvoll) von der verteilten Anwendung verborgen werden  

Der Anwendungsentwickler kann sich auf die Lösung des eigentlichen Anwendungsproblems konzentrieren