VS - 7.5ECTS Prüfer: Tobias Distler Beisitzer: Michael Eischer Fragen wurden nur von Tobias gestellt, die Atmosphäre war entspannt und die Bewertung fair. Note sehr gut. Vieles wie bei >> [[pruefungen:hauptstudium:ls4:vs-2018-07-19|vs-2018-07-19]] << * Punkte 1-3 Was ist ein VS, wie baut man RPC, was für Semantiken (At-Most-Once und ... - Bleiben wir gleich bei At-Most-Once!) * Punkte 6-7 Was passiert beim Knotenausfall? Welche Art von Replikation? Probleme mit Determinismus? Fragen bei mir: ==== RPC==== * **Parameter? Was machen bei Referenzen?** * Remote-Ref oder Call-by-Value-Result * **Was ist besser?** * Kommt drauf an: Wie viel vom Objekt wird gebraucht? Wie groß ist es? Wie oft wird auf Felder/Methoden zugegriffen? ====Semantiken==== * Hier wurde sich nur für At-Most-Once interessiert: Wie geht es? Was macht man mit der Garbage Collection? * Erklärt + gesagt was gespeichert wird * Garbage Collection: Timeout, Bestätigung, dass Ergebnis mehr gebraucht wird * Wie lange muss der Timeout sein? * mindestens #Versuche * Client-Resend-Timeout + etwas Zeit als Puffer * Was machen, wenn verzögerte Nachricht kommt, nachdem ALLES gelöscht wurde? * War ne schwere Frage. Nach kurzem Nachdenken mit "Timestamps mitsenden/vergleichen" geantwortet. * Geht das? Wie genau sind Uhren? * Ja, geht. Uhren im Lan ~ 1ms, im Internet ~ 10ms genaue Synchro, vgl. Resend-Timeout -> Faktor 10-100 größer ====Replikation==== * Aktiv, Nichtdeterminismus: Was für Probleme gibt es? * Nebenläufigkeit, Zeit, ... * Wann und wie ist Nebenläufigkeit ein Problem? * Kann zu unterschiedlichen Ergebnissen UND Zuständen führen ==== Zuverlässiger Multicast vs uniformer zuverlässiger Multicast==== * uniform zuverlässig: delivered ein Knoten, delivern alle Korrekten * zuverlässig: fehlerhafter Knoten delivered und sendet an Client, der Rest bekommt davon nichts mit -> Inkonsistenz! ====Konsistenzen==== * Welche Konsistenzen gibt es? Was unser VSReplica für Konsistenzen? * Aufzählung + VSReplica -> strong Dann folgten noch ein paar Verständnisfragen bzw. Nachdenkfragen: * Wenn unser Replica direkt antwortet bei GET() senden (-> keine Synchro, ohne die anderen Replicas zu fragen), was haben dann für weak Consistency? (Vgl erst schreiben, dann lesen, erst schreiben, dann bei anderem Replica lesen) * erst schreiben, dann lesen: read-my-write, monotonic reads, consistent prefix * erst schreiben, dann bei anderem Replica lesen: monotonic reads, consistent prefix, ABER: kein read-my-writes weil vmtl noch nicht ausgeführt * Wie kann man hier read-my-writes erreichen? * "Timestamps" wären hier logisch: wenn read höheren Timestamp als pending writes hat, dann wartet das Replicat mit ader Antwort bis write-Timestamp passt (hier war dann die Zeit vorbei, wobei die Antwort vmtl noch nicht wirklich korrekt/komplett, aber der Prüfer war soweit zufrieden mit der Antwort.)