gdg


Henry Kingston
Diese Lernkarten bieten eine grundlegende Einführung in die Kommunikation zwischen Objekten und Threads in der Informatik. Sie decken Themen wie Nachrichtenübertragung, Socket-Programmierung, Thread-Management und Architekturkonzepte wie Event-Driven Architecture und Message Oriented Middleware ab. Ideal für Einsteiger, die die Grundlagen der verteilten Systeme und asynchronen Kommunikation verstehen möchten.
Karten
38
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Grundschule
Erstellt / Aktualisiert
20.07.2014 / 27.01.2019

Lernkarten

Was versteht man unter Nebenläufigkeitsgrad

Beschreibt die Art wie Nebenläufigkeit realisiert ist.

Was versteht man unter Skalierbarkeit

Aufwand an Anpassungen bei steigenden Anforderungen.

Was versteht man unter Transparenz

Von Außen nicht erkennbare Struktur/Eigenschaft eines Systems.

 

Was versteht man unter Kommunikationsgrad

Was wird Kommuniziert: Zeichen, Nachrichten, Funktionen, Objekte, Applikationen

Was versteht man unter einem Load Balancer? Welche Vor- und Nachteile hat dieser?

Ein Load Balancer ist ein Koordinator in einem Verteiltem System. Er leitet Requests von Clienten

An die Server Weiter und sendet entsprechende Replys.

 

Vorteile:

  • Einfache Realisierung
  • Fairness (wenn mit warteschlange)
  • Anzahl der Nachrichten: 3 Nachrichten für Ressourcenzugang (Request, Reply, Release)

 

Nachteile:

  • Koordinator ist Flaschenhals
  • Zentraler Fehlerpunkt (Koordinator fällt aus)
  • Unklare Ursache bei verzögertem Reply

Was versteht man unter Polling

Satus oder Werteveränderung durch zyklisches abfragen ermitteln.

 

Was versteht man unter Long Polling

Im Prinzip Polling mit geringerer frequenz, Falls der Server noch keine neuen Informationen für den Client

Besitzt wird allerdings keine leere Antwort gesendet. Der server behält den Request des Clients und sendet

Informationen sobalt er welche hat.

 

Was versteht man unter Callback

Es wird in einem seperaten Thread auf die Antwort des Servers gewartet. Die Callback Funktion ist die Funktion,

Die nach erhalt der Antwort (z.B. mit Antwort-Daten) ausgeführt wird.

Was bedeutet Schichtenarchitektur

Aufgaben einer Applikation werden in Schichten unterteilt. So können z.B. auch Aufgaben auf Server und Client verteilt werden.

Beschreiben Sie den Begriff Message Oriented Middleware

Bezeichnet Middleware, die auf der asynchronen oder synchronen Übertragung von Nachrichten basiert

Beschreiben Sie die Begriffe EAI, SOA und ESB mit jeweils max. 2 Sätzen und danach ihren Zusammenhang?

  • Enterprise Service Bus: Verbindung von beliebigen Applikationen (Komponenten eines Verteilten Systems)
  • Service Oriented Architecture: Architekturparadigma
  • Enterprise Application Integration: Gesamtkonzept zur Integration von Einzelapplikationen oder Geschäftsfunktionen

 

SOA :  Übergeordnete Architektur

ESB  : Verbindung der Services

EAI   :   Integrationskonzept einzelner Applikationen in Architektur

Beschreiben Sie den Begriff Event-Driven Architecture

Softwarearchitektur in dem das Zusammenspiel der Komponenten durch Ereignisse gesteuert wird

Wie kann ein Thread erstellt werden

 class X extends Thread …

 

X thread = X();   x.start();

 

Oder

 

 class X implements Runnable …

 

X thread = X(); new Thread(thread).start();

Was ist ein ExecutorService

TaskQueue -> nächster anstehender Task wird von freistehendem Thread aus Thread-Pool bearbeitet.

Wie können Threadpools (fixed/cached) erstellt werden

ThreadPoolExecutor fixedExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(FIXEDSIZE);

ThreadPoolExecutor cachedExecutor = (ThreadPoolExecutor) Executors.newCachedThreadPool();

 

Thread t = new Thread();

 …Executor.execute(t);

Wie funktioniert Notify/Wait

Object monitor = new Object();

 

// thread 1

 synchronized(lock) {

while(bedingung) {

 lock.notify(); lock.wait();

}

}

 

// thread 2

 

 bedingung = true;

 synchronized(lock) {

 lock.notify();

}

Wie wird Thread.sleep verwendet

try {

    Thread.sleep(1000);

} catch (InterruptedException e) {}

Was ist eineRace Condition

Ergebnis der beiden Threads hängt von Verteilung der CPU-Zeit auf Threads ab 

Was ist ein Deadlock

Verklemmung: Zwei Threads blockieren sich gegenseitig in dem sie auf eine Ressource warten die der jeweils anderen Threads reserviert hat.

 

z.B. Deadlock falsche Reihenfolge von wait(), notify()

Was ist Starvation

Rechenleistung unfair/unzureichend verteilt für mindestens einen Thread. Dieser verhungert.

Was bedeutet Serialisierung

Repräsentation eines Objektes als Sequenz von Bytes

Welche Eigenschaften muss eine Klasse haben um serialisierbar zu sein

 

  • Implements Serializable
  • Oder Superklasse ist serialisierbar
  • transient: Vorraussetzung Wert nach Deserialisierung unnötig oder wiederherstellbar

Wie sieht der Code zum serialisieren eines Objektes in Java aus

 

OutputStream oStream;

ObjectOutputStream myStream = new ObjectOutputStream (oStream);

myStream.writeObject(myObject);

Wie siet der Code zum deserialisieren eines Objektes in Java aus

InputStream iStream;

ObjectInputStream myStream = new ObjectInputStream (iStream);

MyClass myObject = (MyClass) myStream.readObject();

Was ist ein Socket

  • Endpunkt einer Verbindung.
  • Zwei Sockets definieren eine Verbindung.
  • Speicherbereich für Konfigurationsparameter Ankommende und abgehende Daten
  • Plattformunabhängig
  • Eindeutige Definition durch IP-Adresse und Portnummer

Beschreiben Sie den Ablauf einer Socketverbindung

Server                                                                        Client

socket() : New ServerSocket()                        

bind() : x  

                                                                                      socket() : new Socket()

listen() : x                                                                     connect() : socket.connect()

accept() : socket.accept()

read() : objectInputStream readObject                  write(): objectOutputStream.writeObject()

write(): ObjectOutputStream.writeObject()            read(): objectInputStream.readObject()

                                                                                       close()

Wie sieht der Code zur Erstellung eines Sockets aus

Import java.net.*;

 

// ServerSocket

ServerSocket socket = new ServerSocket(port);

 

// ClientSocket

Socket socket = new Socket();

Wie wird eine Verbindung zwischen Sockets hergestellt

//Server

Socket socket = serverSocket.accept();

 

//client

 socket.connect(new InetSocketAddress(hostname,port));

Wie wird in einen Socket geschrieben bzw gelesen

objectInputStream=new ObjectInputStream(socket.getInputStream());

objectOutputStream=new ObjectOutputStream(socket.getOutputStream());

 

//schreiben

objectOutputStream.writeObject(new String("hey"));

 

//lesen

String received = (String) objectInputStream.readObject();

Wie wird ein Socket geschlossen

 socket.close(); // wirft IOException

Welche Eigenschaften müssen Objekte erfüllen damit sie über RMI versendet werden können

  • Implement Interface das von Remote erbt
  • Funktionen müssen RemoteException werfen
  • Rückgabetyp von Funktionen muss Serializable sein

Was ist Marshalling was muss bei der Klassen erstellung beachtet werden

Konvertierung der Daten für Transfer -> Serializing

 

  • Klasse muss Serializable implementieren
  • Nicht serialisierbare Membervariablen mit Keyword "transient" kennzeichnen

Wie können Objekte in der rmiregistry hinterlegt werden

// code kann remote exception werfen

RemoteInterface remObj = new RemoteObject();

RemoteInterface remObjStub = (RemoteInterface) ;

java.rmi.server.UnicastRemoteObject.exportObject(remObj, 0); // port 0 : Laufzeit wählt portnummer

Registry registry=LocateRegistry.createRegistry(port);

registry.rebind("remObj", remObj);

Wie können Objekte der rmiregistry entnommen werden

// code kann remote exception werfen

String remotename = "remObj";

Registry registry = LocateRegistry.getRegistry("localhost", 8900);

rmi = (ClientListener) registry.lookup(remotename);

Beschreiben Sie das Grundkonzept von JMS

  • Programmierschnittstelle zur Ansteuerung einer Message Oriented Middleware.
  • Client kann JMS zum Senden und Empfangen von Nachrichten verwenden.
  • Lose gekoppelte, verlässliche und asynchrone Kommunikation zwischen Komponenten verteilter Anwendung

Beschreiben Sie die verschiedenen POINT-TO-POINT Kommunikationstypen

  • Unidirektional: Client A produziiert MSG -> QUEUE -> Client B konsumiert MSG und bestätigt
  • Bidirektional: Unidirektional in beide Richtungen also 2 Queues
  • Multidirektional: Client A produziiert MSG -> QUEUE -> ein Client X aus Menge von Clienten konsumiert MSG und bestätigt

Nennen Sie 5 Eigenschaften der POINT-TO-POINT Kommunikation

  • Entkopplung: Zeitlich und örtlich
  • Persistenz: Nachrichten verbleiben bis zur Abholung in der Warteschlange
  • Einmaliger Konsum: Nachricht nur einmalig abholbar
  • Prioritäten für Nachrichten
  • FIFO bei identischen Prioritäten (vgl. Pipe bei UNIX)

Beschreiben sie eine PUBLISH/SUBSCRIBE Kommunikation

  • Client produziert MSG und veröffentlicht mit Topic
  • MSG wird über Message Broker  an alle Clienten versendet die Topic aboniert haben
  • Neue Nachrichten überschreiben alte Nachrichten

Lernen