• Keine Ergebnisse gefunden

Strikte Konsistenz

N/A
N/A
Protected

Academic year: 2022

Aktie "Strikte Konsistenz"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Reaktive Programmierung

Vorlesung 14 vom 21.06.17: Eventual Consistency

Christoph Lüth, Martin Ring Universität Bremen Sommersemester 2017

12:21:44 2017-07-04 1 [31]

Fahrplan

I Einführung

I Monaden als Berechnungsmuster I Nebenläufigkeit: Futures and Promises I Aktoren I: Grundlagen

I Aktoren II: Implementation I Bidirektionale Programmierung I Meta-Programmierung I Reaktive Ströme I I Reaktive Ströme II

I Functional Reactive Programming I Software Transactional Memory I Eventual Consistency I Robustheit und Entwurfsmuster I Theorie der Nebenläufigkeit, Abschluss

RP SS 2017 2 [31]

Heute

I Konsistenzeigenschaften I Eventual Consistency I CRDTs

I Operational Transformation

I Das Geheimnis von Google Docs und co.

RP SS 2017 3 [31]

Was ist eigentlich Konsistenz?

I Konsistenz =Widerspruchsfreiheit I In der Logik:

IEine Formelmenge Γ ist konsistent wenn:∃A.¬(Γ`A) I In einem verteilten System:

IRedundante (verteilte) Daten

IGlobaleWiderspruchsfreiheit?

RP SS 2017 4 [31]

Strikte Konsistenz

Strikte Konsistenz

I Daten sind zu jedem Zeitpunk global konsistent.

I Eine Leseoperation in einem beliebigen Knoten gibt den Wert der letzten globalen Schreiboperation zurück.

I In echten verteilten Systemennicht implementierbar.

RP SS 2017 5 [31]

Sequentielle Konsistenz

Sequentielle Konsistenz

I Zustand nach verteilter Programmausführung = Zustand nach einer äquivalenten sequentiellen Ausführung in einem Prozess.

I Jeder Prozess sieht die selbe Folge von Operationen.

RP SS 2017 6 [31]

Eventual Consistency

Eventual Consistency

Wennlängere Zeitkeine Änderungen stattfinden konvergieren die Daten an jedem Knoten zu einem gemeinsamen Wert.

I Beispiel: DNS

RP SS 2017 7 [31]

Strong Eventual Consistency

I Eventual Consistency ist eineinformelleAnforderung.

IAbfragen können beliebige Werte zurückgeben bevor die Knoten konvergieren.

IKeine Sicherheit!

I Strong Eventual Consistencygarantiert:

Iwenn zwei Knoten diegleiche (ungeordnete) Mengevon Operationen empfangen haben, befinden sie sich imgleichen Zustand.

I Beispiel: Versionskontrollsystemgit

IWenn jeder Nutzer seine lokalen Änderungen eingecheckt hat, dann haben alle Nutzer die gleiche Sicht auf denhead.

RP SS 2017 8 [31]

(2)

Monotonie

I Strong Eventual Consistency kann einfach erreicht werden:

I Nach jedem empfangenen Update alle Daten zurücksetzen.

I Für sinnvolle Anwendungen brauchen wir eine weitere Garantie:

Monotonie

Ein verteiltes System ist monoton, wenn der Effekt jeder Operation erhalten bleibt (keine Rollbacks).

RP SS 2017 9 [31]

Beispiel: Texteditor

I Szenario: Webinterface mit Texteditor

I Meherere Nutzer können den Text verändern und sollenimmer die neueste Versionsehen.

I Siehe Google Docs, Etherpad und co.

RP SS 2017 10 [31]

Naive Methoden

I Ownership

I Vor Änderungen: Lock-Anfrage an Server

I Nur ein Nutzer kann gleichzeitig das Dokument ändern

I Nachteile: Verzögerungen, Änderungen nur mit Netzverbindung I Three-Way-Merge

I Server führt nebenläufige Änderungen auf Grundlage einesgemeinsamen Ursprungszusammen.

I Requirement:the chickens must stop moving so we can count them

RP SS 2017 11 [31]

Conflict-Free Replicated Data Types

I Konfliktfreie replizierte Datentypen I Garantieren

IStrong Eventual Consistency

IMonotonie

IKonfliktfreiheit I Zwei Klassen:

IZustandsbasierte CRDTs

IOperationsbasierte CRDTs

RP SS 2017 12 [31]

Zustandsbasierte CRDTs

I Konvergente replizierte Datentypen (CvRDTs)

I Knoten senden ihren gesamten Zustand an andere Knoten.

I Nur bestimmte Operationen auf dem Datentypen erlaubt (update).

I Einekommutative,assoziative,idempotentemerge-Funktion

I Funktioniert gut mit Gossiping-Protokollen

I Nachrichtenverlust unkritisch

RP SS 2017 13 [31]

CvRDT: Zähler

I Einfacher CvRDT

IZustand:P∈N, Datentyp:N query(P) =P

update(P,+,m) =P+m merge(P1,P2) =max(P1,P2)

I Wert kann nur größer werden.

RP SS 2017 14 [31]

CvRDT: PN-Zähler

I Gängiges Konzept bei CRDTs: Komposition

I Aus zwei Zählern kann ein komplexerer Typzusammengesetztwerden:

I Zähler P (Positive) und Zähler N (Negative)

I Zustand: (P,N)∈N×N, Datentyp:Z query((P,N)) =query(P)query(N) update((P,N),+,m) = (update(P,+,m),N) update((P,N),−,m) = (P,update(N,+,m))

merge((P1,N1),(P2,N2)) = (merge(P1,P2),merge(N1,N2))

RP SS 2017 15 [31]

CvRDT: Mengen

I Ein weiterer einfacher CRDT:

IZustand:P∈ P(A), Datentyp:P(A) query(P) =P

update(P,+,a) =P∪ {a}

merge(P1,P2) =P1P2

I Die Menge kann nur wachsen.

RP SS 2017 16 [31]

(3)

CvRDT: Zwei-Phasen-Mengen

I Durch Komposition kann wieder ein komplexerer Typ entstehen.

I Menge P (Hinzugefügte Elemente) und Menge N (Gelöschte Elemente)

I Zustand: (P,N)∈ P(A)× P(A), Datentyp:P(A) query((P,N)) =query(P)\query(N) update((P,N),+,m) = (update(P,+,m),N) update((P,N),−,m) = (P,update(N,+,m))

merge((P1,N1),(P2,N2)) = (merge(P1,P2),merge(N1,N2))

RP SS 2017 17 [31]

Operationsbasierte CRDTs

I Kommutative replizierte Datentypen (CmRDTs) I Knoten senden nurOperationenan andere Knoten

I updateunterscheidete zwischen lokalem und externem Effekt.

I Netzwerkprotokoll wichtig

I Nachrichtenverlust führt zu Inkonsistenzen I Keinmergenötig

I Kann die übertragenenDatenmengenerheblichreduzieren

RP SS 2017 18 [31]

CmRDT: Zähler

I Zustand:P∈N, Typ:N

I query(P) =P I update(+,n)

I lokal:P:=P+n

I extern:P:=P+n

RP SS 2017 19 [31]

CmRDT: Last-Writer-Wins-Register

I Zustand: (x,t)X×timestamp I query((x,t)) =x

I update(=,x0)

Ilokal: (x,t) := (x0,now())

Iextern:if t<t0then(x,t) := (x0,t0)

RP SS 2017 20 [31]

Vektor-Uhren

I Im LWW Register benötigen wir Timestamps

I Kausalität muss erhalten bleiben

I Timestamps müssen eine total Ordnung haben I Datum und Uhrzeit ungeeignet

I Lösung: Vektor-Uhren

I Jeder Knoten hat einen Zähler, der bei Operationen hochgesetzt wird

I Zusätzlich merkt sich jeder Knoten den aktuellsten Zählerwert, den er bei den anderen Knoten beobachtet hat.

RP SS 2017 21 [31]

Operational Transformation

I Die CRDTs die wir bis jetzt kennengelernt haben sind recht einfach

I Das Texteditor Beispiel ist damit noch nicht umsetzbar I Kommutative Operationen auf einer Sequenz von Buchstaben?

IEinfügen möglich (totale Ordnung durch Vektoruhren)

IWie Löschen?

RP SS 2017 22 [31]

Operational Transformation

I Idee: Nicht-kommutative Operationen transformieren

D f -

D0 g0

-

f0 - g -

I Fürtransformmuss gelten:

transform f g=hf0,g0i=⇒g0f =f0g applyOp(g◦f)D=applyOp g(applyOp f D)

RP SS 2017 23 [31]

Operationen für Text

Operationen bestehen ausdreiArten von Aktionen:

I Retain— Buchstaben beibehalten I Delete— Buchstaben löschen I Insert c— Buchstabenceinfügen EineOperationist eine Sequenz von Aktionen

EinBeispiel:

Eingabe: R 1 P 7 Ausgabe: R P 1 7 Aktionen: Retain, Delete, Retain, Insert1, Retain.

I Operationen sindpartiell.

RP SS 2017 24 [31]

(4)

Operationen Komponieren

I Komposition: Fallunterscheidung auf derAktion

I Keine einfache Konkatenation!

I Beispiel:

p = [Delete,InsertX,Retain]

q = [Retain,InsertY,Delete]

compose p q = [Delete,InsertX,InsertY,Delete]

I composeist partiell.

I Äquivalenzvon Operationen:

compose p q ∼= [Delete,Delete,InsertX,InsertY]

RP SS 2017 25 [31]

Operationen Transformieren

I Transformation

a -

b0

-

a0 - b -

I Beispiel:

a = [InsertX,Retain,Delete]

b = [Delete,Retain,InsertY]

transform a b = ([InsertX,Delete,Retain]

,[Retain,Delete,InsertY]

)

RP SS 2017 26 [31]

Operationen Verteilen

I Wir haben die Funktiontransformdie zwei nicht-kommutativen Operationenaundbzu kommutierenden Gegenstückena0undb0 transformiert.

I Was machen wir jetzt damit?

I Kontrollalgorithmus nötig

RP SS 2017 27 [31]

Der Server

I Zweck:

INebenläufige Operationen sequentialisieren

ITransformierte Operationen verteilen

Client A •

c20-•

c30-•

Server r0 c1

-r1 a

6

c2 -r2

a0 6

c3 -r3

a00 6

c4=a00 -r4

c5=b00 -

====

====

===

r5

Client B •

b

? c003-•

b0

? c04-•

b00

?==========

RP SS 2017 28 [31]

Der Server

I Zweck:

I Nebenläufige Operationen sequentialisieren

I Transformierte Operationen verteilen

Client A •

c20-•

c30 -• c40-•

Server r0 c1

-r1 a

6

c2 -r2

a0 6

c3 -r3

a00 6

c4=b0 -r4

a000 6

c5=a000 -r5

====

=======

Client B •

b

? c300-•

b0

?==========

RP SS 2017 29 [31]

Der Client

I Zweck: Operationen Puffern während eine Bestätigung aussteht

a

-• b

- • Revisionr

c

?

a0 - • c0

?

b0 - • c00

? Revisionr+ 1

RP SS 2017 30 [31]

Zusammenfassung

I Strikte Konsistenz in verteilten Systemen nicht erreichbar I Strong Eventual Consistency

I Wennlängere Zeitkeine Änderungen stattgefunden haben befinden sich schließlich alle Knoten imgleichen Zustand.

I Wenn zwei Knoten diegleiche MengeUpdates beobachten befinden sie sich imgleichen Zustand.

I Conflict-Free replicated Data Types:

I Zustandsbasiert: CvRDTs

I Operationsbasiert: CmRDTs I Operational Transformation

I Strong Eventual Consistency auch ohne kommutative Operationen

RP SS 2017 31 [31]

Referenzen

ÄHNLICHE DOKUMENTE

Gemeinden und Gemeindeverbänden herzustellen, die den Schwerpunkt der Lebensbeziehungen der Einwohner bilden, und um einen zweckmäßigen Verlauf der gemeinsamen

Wenn längere Zeit keine Änderungen stattfinden konvergieren die Daten an jedem Knoten zu einem gemeinsamen Wert. I

Zunächst wird aber eine kurze Einführung in die Sprachen Curry und Flat-Curry gegeben werden, dann wird die Überset- zung von Curry in C geschildert, wobei auf

Ich bin mit diesen Ausführungen nicht der Meinung, daß vor allem die Baukunst als Kunst sich von der Technik möglichst abhängig machen müsse, ich wollte damit nur zeigen, welch

Für eine Klasse von Lernaufgaben gibt es mindestens eine Menge E, die zerschmettert werden kann – NICHT jede Menge E kann zerschmettert werden.. Zum Beweis der VC Dimension n muss

3,31 pro Stunde klein erscheinen mag, gilt es zu beachten, dass sie sich auf die gesamte Nutzungsdauer von 10’000 Stunden bezieht und somit zusätzli- chen Kosten von

– Szenario 2: Schweizer Unternehmen verklagt EU-Unternehmen in der Schweiz wegen angeblicher Geschäftsgeheimnisverletzung.. – Anknüpfungspunkte in der Schweiz für Zuständigkeit

Dies kann aber nicht gelingen, wenn die Krankenkassen solche gesetzlichen Vorgaben zum Anlass nehmen, ihre Vorstellungen einer Krankenhauskapazitätsvorhaltung durchsetzen zu