Erklären Sie den Begriff Zugriffstransparenz. Wie wurde diese bei RMI umgesetzt?
RMI ermöglicht Zugriffstransparenz, indem es dem Benutzer erlaubt, Methoden auf einem RemoteObjekt genauso aufzurufen wie auf einem lokalen Objekt. Der Benutzer muss sich nicht um die Details der Netzwerkkommunikation kümmern. Dies wird erreicht, indem RMI die Kommunikation zwischen entfernten Objekten transparent verwaltet.
Erklären Sie den Begriff Ortstransparenz. Wie wurde das bei Restful Services umgesetzt?
Ortstransparenz wird durch RESTful Webservices erreicht, bei denen jede Ressource durch eine eindeutige URL identifiziert wird. Der Benutzer kann auf diese Ressource zugreifen, unabhängig vom physischen Ort. Dies erfolgt durch die Nutzung von URLs als Adressen für den Zugriff auf Ressourcen.
Was ist Migrationstransparenz?
Mit Migrationstransparenz können Lastenausgleichsmechanismen eingesetzt werden, die Anfragen von einem überlasteten Server auf andere Server umleiten. Der Benutzer bemerkt diese Migration nicht direkt, da die Lasten automatisch verteilt werden, um eine bessere Ressourcennutzung zu gewährleisten.
Was ist Replikationstransparenz?
Ein verteiltes Java-System kann RMI verwenden, um Objekte auf mehreren Servern zu replizieren. Ein Client kann auf ein Remote-Objekt zugreifen, ohne sich bewusst zu sein, dass es sich um eine Replikation handelt. RMI sorgt dafür, dass der Client transparent mit der Replikation interagiert.
Was ist Relokationstransparenz?
In einem RESTful Webservice kann ein Ressourcen-Endpoint von einem Server zu einem anderen verschoben werden, ohne dass der Client dies weiß. Solange der Endpunkt über die gleiche URL erreichbar ist, bleibt die Relokation für den Client transparent.
Was ist Fehlertransparenz z.B. bei Hazelcast?
In einem Hazelcast-Cluster kann automatische Fehlererkennung und Wiederherstellung implementiert werden. Wenn ein Clusterknoten ausfällt, übernimmt Hazelcast die Datenreplikation und stellt sicher, dass der Zugriff auf die Daten nahtlos und transparent bleibt.
Was ist Nebenläufigkeitstransparenz?
Java Concurrency Framework ermöglicht es, Threads zu erstellen und zu verwalten. Ein verteiltes System kann Threads verwenden, um nebenläufige Aufgaben auszuführen. Das Framework sorgt für die Nebenläufigkeitstransparenz, indem es Mechanismen wie Locks und Semaphoren bereitstellt, um kritische Abschnitte zu synchronisieren.
Die Eigenschaft „Zugreifbarkeit“ von Verteilten Systemen kann „konkurrierend“ oder „kooperierend“ sein. Geben Sie ein konkretes Beispiel aus den Übungen an, wie dort „konkurrierend“ umgesetzt wurde. Was wäre ein allgemeines Beispiel für ein „kooperierend“ aus dem Bereich Online-Lehre?
konkurrierend: mehrere Threads möchte auf eine gemeinsame Ressource gleichzeitig zugreifen, diese muss durch einen Monitor überwacht werden, um den seriellen Zugriff auf die Ressource sicherzustellen.
kooperierend: Google.Docs (spreadsheet). Ein Dokument kann von mehreren Usern gleichzeitig bearbeitet werden
Was ist vertikale bzw. horizontale Skalierbarkeit?
Was bedeutet sub-lineare Skalierbarkeit bei Hazelcast?
Vertikal: Mehr CPU, RAM, Speicher
Horizontal: Mehr Rechner und Server ins System holen und dadurch skalieren —> wird heutzutage verwendet
Beispiel Hazelcast:
Sub-lineare Skalierbarkeit in Hazelcast bedeutet, dass das Hinzufügen von Servern nicht unbedingt zu einer proportionalen Leistungssteigerung führt. Mit zunehmender Anzahl von Clusterknoten steigt der Kommunikationsaufwand zwischen den Knoten, und es entsteht ein gewisser Overhead. Die Verteilung von Daten zwischen den Knoten wird aufwendiger, und die Komplexität des Datenzugriffs kann zunehmen. Allgemein ist das Verhältnis von Ressourcen zu Leistung nicht linear.
Was ist Offenheit bzw. die konkrete Umsetzung “Interoperabilität”?
Offenheit ist ein wesentliches Merkmal Verteilter Systeme und lässt sich beispielsweise durch standardisierte Schnittstellen, Interoperabilität, Portabilität, Konfigurierbarkeit und Erweiterbarkeit umsetzen.
Bei Interoperabilität kann ein Dienst von mehreren Komponenten bzw. Herstellern genutzt und erbracht werden. Dies erfolgt durch eine Trennung von Schnittstelle und Implementierung. Beispiel: gRPC mit proto File.
Welche 2 Framing-Methoden kennen Sie?
Delimiter: Trennung des Strings durch eindeutigen Begrenzer (z.B. #) —> JSON “,”
Explicit Length: Länge wird vor Nachricht mit z.B einem Feld fix festgelegt. —> REST content-length
Wie funktioniert das Rendezvous-Verfahren bei Sockets?
Dieses Verfahren beschreibt das Vorgehen bei einem parallelen Server.
Listening: Ein Socket “lauscht” blockierend auf Verbindungsaufbau
Akzeptieren&Verbinden: “Wenn ein Client sich verbindet, wird Verbindung mit einem weiteren Socket des Servers aufgebaut, sodass das erste Socket weiter auf Verbindungsanfragen lauschen kann.
Was ist bei RMI unter Call by Value und Call by Reference gemeint und wann macht welche Variante mehr Sinn?
Call by Value: Bei Methodenaufruf wird übergebenes Objekt “kopiert” und Kopie an Server geschickt.
Call by Reference: Bei Methodenaufruf wird stub des Objekts übergeben, sodass Server Zugriff auf “Original” Objekt hat.
—> Call by Reference macht Sinn, wenn nur Kleinigkeiten von Objekt benötigt werden (z.B. Titel/Beschreibung von Video) oder wenn sich Attribute des Objekts oft ändern und immer die aktuellsten Werte benötigt werden.
Ansonsten macht Call by Value mehr Sinn, da es einfacher zu implementieren und “günstiger” zu serialisieren ist.
Was ist ein Socket?
Programmierschnittstelle des Betriebssystems zur Interprozesskommunikation (lokal oder über Internet) auf Basis der Transportprotokolle TCP und UDP
Welche Fehlersemantikklassen gibt es? Erklären Sie diese.
Maybe: Aufruf hat lokal geklappt, Rest ist egal
At-least-Once: Garantie, dass es beim Server mindestens 1 mal ausgeführt wird
At-most-Once: Garantie, dass es 1 oder 0 mal, definitiv aber nicht mehrfach ausgeführt wird
Exactly-Once: Garantie, dass es genau 1 mal ausgeführt wird
Was ist die IDL bei RMI?
Interface mit extends Remote + Entity Klassen mit implements Serializable
Wann entstehen Stub/Skeleton bei RMI und wann bei gRPC?
RMI: Zur Laufzeit über UnicastRemoteObject.exportObject
gRPC: Zur Designzeit, basierend auf der proto-file, werden automatisch generiert in Klasse “XYService.GRPC”
Was beschreibt das Reaktive Manifest und insbesondere die Punkte Elastizität und Message Driven und wie kann man diese auf die in der Vorlesung besprochenen Themen beziehen?
Elastizität beschreibt das Verfahren der Skalierbarkeit
Message Driven beschreibt asynchrone Kommunikation (z.B. Callback)
Client-Server-Kette + Transitive Kette (wie würde man transitiv implementieren?)
Callback stub weiterreichen
Wie würde man Client/Server Baum implementieren?
Nebenläufig über Threads
„Das CAP Theorem ist für die implementierung Verteilter Systeme nicht wichtig.“ Nehmen Sie Stellung zu dieser Aussage
Das CAP-Theorem ist grundlegend wichtig für verteilte Systeme, weil es klarstellt, dass es unmöglich ist, in einem solchen System gleichzeitig Konsistenz, Verfügbarkeit und Partitionstoleranz(Ausfalltoleranz) vollständig zu gewährleisten. Es zwingt Entwickler und Architekten dazu, bewusste Kompromisse bei der Gestaltung und Implementierung von verteilten Systemen einzugehen, basierend auf den spezifischen Anforderungen und Prioritäten des Systems.
Was ist das BCE-Pattern?
Boundary: Systemgrenze (Human-to-Machine oder Machine-to-Machine, welche API gRPC, REST etc?) Control: Service (fachliche Logik bzw. Implementierung)
Entity: Geschäftsobjekt (Daten)
Vorteile von Threadpools? Wann sind Threadpools nicht zielführend?
Pro: Wenn viele Anfragen kommen und die Ressourcen geschont werden sollen, dann macht ein Threadpool Sinn
Contra :Wenn Aufgaben stark voneinander abhängig sind und die genaue Reihenfolge ihrer Ausführung entscheidend ist, dann ist ein Threadpool ungeeignet
Erklären Sie die Begriffe Service, Webservice, Microservice und deren Zusammenhänge.
Service: Services sind klar gegeneinander abgegrenzte und betriebswirtschaftlich sinnvolle Funktionen, bilden Konzept von SOA.
Webservice: Webservices sind die Implementierung von Services anhand standardisierter Schnittstellen wie WSDL/SOAP und REST
Microservice: Microservices sind ein Architekturparadigma wobei jeder Service eine eigene & unabhängige Ausführungsumgebung hat. Steht im Gegensatz zu traditionellen SOA-Ansätzen.
Was ist SOAP und WSDL?
WSDL: Eine einfache Sprache zur Beschreibung von Services mittels XML
SOAP: Ein Transportmedium, um Nachrichten fachlich auszutauschen, bei dem Provider und Verbraucher über das SOAP-Protokoll kommunizieren.
BASE ist die Abkürzung für die drei Eigenschaften: “basically available, soft state, eventually consistent“. Nehmen Sie als Referenz die Webseiten der Videoplattform YouTube oder Vimeo und erklären Sie diese drei Eigenschaften anhand darauf bezogener konkreter Beispiele.
BA: Youtube ist immer zugänglich und hat schnelle Antwortzeiten, auch wenn Teile vorrübergehend nicht erreichbar sind
S: Videos auf YouTube haben ein Veröffentlichkeitsdatum. Die Aktualität des Objektzustands nimmt ab, wenn ein Video nicht regelmäßig aktualisiert wird.
E: Beim Hochladen eines Videos dauert es eine gewisse Zeit, bis die Replikation auf allen Servern abgeschlossen ist. In dieser Zeit können verschiedene Nutzer unterschiedliche Ansichten des Zustands haben, bis das System schlussendlich konsistent wird. Somit gilt beim Zeitpunkt des Schreibens keine Konsistenz
Was ist Middleware und welche Dienste gibt es?
Middleware bezieht sich auf Software, die zwischen verschiedenen Anwendungen, Diensten oder Systemen liegt, um die Kommunikation und Interaktion zwischen ihnen zu erleichtern.
Dienste: Kommunikationsfunktion, Namensgebung und –auflösung, Persistenz, Verteilte Transaktionen, Sicherheitsdienste
Warum sind Threads besser als Prozesse?
TCB Block effizienter als PCB bei context switches
Was sind die Gefahren bei Multithreading?
Race Conditions, Deadlocks, Starvation, …
—> Thread safety bei “critical sections” muss gewährleistet sein
Was ist Lameducking bei gRPC?
Der "lameduck"-Modus gibt Clients, die noch mit dem Server verbunden sind, die Möglichkeit, ihre verbleibenden Anfragen abzuschließen, bevor der Server vollständig heruntergefahren wird. Dies kann dazu beitragen, Datenverluste oder unerwünschte Unterbrechungen zu vermeiden, wenn ein Server heruntergefahren wird.
Wie werden Objekte bei gRPC erzeugt?
Über bereitgestellte Builder Klassen, statt wie üblich mittels eines Konstruktors
Was ist der generelle einsatzzweck von cyclicbarrier und countdownlatch und nennen Sie eine eigenschaft wo sie sich beide unterscheiden.
Die zeitliche synchronisation von bereits gestarteten threads.
CyclicBarrier ist wiederverwendbar, CountdownLatch nicht.
Wenn man bei gRPC nicht bloß einen Wert übergeben möchte, sondern immer wieder Werte, ohne dass man die Funktion neu aufrufen muss, was muss man dann am proto file ändern? Wäre das bei RMI auch möglich? Wenn ja, wie. Wenn nein, warum nicht.
Stream keyword in proto file eingeben.
RMI ist nicht auf das asynchrone Streaming von Parametern ausgerichtet. Es ist allerdings möglich ein Callback Verfahren, ähnlich wie bei gRPC zu implementieren, in dem beim Methodenaufruf ein stub des Parameters mitgeschickt wird. Der Server könnte so mehrfach den Callback Stub aufrufen und so ein Streaming Verhalten erzeugen.
Bei REST heißt es „configuration over convention“ lt. Fielding. Nennen Sie 4 dieser Configurationen.
Uniform Resource Identifier (URI): Eindeutige Identifikation von Ressourcen durch URIs.
HTTP-Methoden für Operationen: Verwendung von HTTP-Methoden (GET, POST, PUT, DELETE) für CRUD-Operationen.
Repräsentation von Ressourcen: Datenrepräsentation oft in JSON- oder XML-Format.
Stateless-Kommunikation: Zustandslose Kommunikation, alle Informationen in jeder Anfrage enthalten.
Was ist ein TP Monitor?
Ein Transaction Processing Montitor ist eine spezielle Middleware um verteilte Transaktionen in verteilten Systemen zu koordinieren.
Was ist Collate bei MapReduce und wo ist es sinnvoll?
Der Collate Vorgang beschreibt die Phase des Sort & Shuffle, bei dem die Zwischenergebnisse des Mappers sortiert und gruppiert und anschließend an den Reducer weitergegeben werden.
Sinnvoll ist dies bei größeren Datenmengen bzw. wenn eine key-basierte Gruppierung nötig ist.
Ist Serialisierung auch bei Hazelcast wichtig, wenn ja begründen sie warum?
Ja Serialisierung ist auch bei Hazelcast wichtig, denn es muss zwischen den einzelnen Knoten kommuniziert und Daten ausgetauscht werden, wofür diese serialisiert werden müssen.
Sie kriegen Serializable Exception bei Hazelcast, warum?
Exception tritt auf wenn Objekt zwischen Nodes übertragen werden soll, das nicht das Serializable Interface implementiert
Wann registry.bind() bei RMI?
Wenn ein Stub im Kontext des Services übertragen werden soll. Bei einem Callback Stub beispielsweise wäre dies nicht nötig, da es ja direkt beim Methodenaufruf übergeben wird.
Woher weiß Service zu welchem Client er Antwort schicken soll, wenn sehr viele unterschiedliche Clients mit sehr vielen unterschiedlichen Anfragen kriegt?
Über Callback Stub den Client mitschickt bzw. die Proxy Daten vom Stub(ip, port, Objekt-ID)
Nennen Sie 5 wichtige http Response Codes und deren Bedeutung
HTTP 200 OK
HTTP 201 CREATED
HTTP 204 NO-CONTENT
HTTP 404 NOT FOUND
HTTP 500 INTERNAL SERVER ERROR
Vorteile von gRPC gegenüber REST?
Streamen, mehr Möglichkeiten für Konfigurierung, nicht nur CRUD, effizientere Serialisierung
Geht asynchrones Callback bzw. Streamen mit REST?
Nein, da http protokoll zustandslos, eine anfrage kennt vorhergehende anfrage nicht, kein streamobserver möglich
Standardmäßig also Request-Reply
Änderung einer Variable auf static bei einer Restful schnittstelle, bei grpc anders warum?
Bei REST ist es sinnvoll, ein Attribut als static zu deklarieren, wenn sich der Zustand über mehrere Anfragen hinweg nicht ändern soll (z.B. bei einer Map als Datenbank o.ä.)
gRPC ist nicht zustandslos, daher wird kein static benötigt
Wer bekommt das Endergebnis bei MapReduce?
Der der den Job gestartet hat
Wie viele Reducer Instanzen gibt es?
Für jeden unterschiedlichen Key gibt es eine Reducer Instanz
Was ist der Unterschied beim „Bootstrapping“ des Servers bei REST im Vergleich zu RMI bzw. gRPC?
Bei REST wird keine Instanz des Services im Server verwendet, sondern direkt die Klasse (.class)
Für was stehen die JAX-RS Annotationen „XmlRootElement“, „XmlAccessorType(AccessType.FIELD)“ und „XmlAttribute“?
XmlRootElement: Gibt an, dass die Klasse in xml umgewandelt werden kann und dabei als Wurzelelement verwendet werden kann
XmlAccessorType: Wird verwendet um anzugeben, wie Attributzugriffe während der Xml-Serialisierung gehandhabt werden sollen. XmlAccessType.FIELD bedeutet, dass auf Attribute der Klasse direkt zugegriffen werden kann und nicht über Getter/Setter
XmlAttribute: Kennzeichnet Attribut oder Methode als Xml-Attribut
Wofür wird ein leerer Konstruktor zwingend bei REST Entitäten benötigt?
Zur Serialisierung
Zuletzt geändertvor 5 Monaten