• 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 30.06.15: Eventual Consistency

Christoph Lüth & Martin Ring Universität Bremen Sommersemester 2015

18:03:37 2015-06-30 1 [31]

Fahrplan

I Teil I: Grundlegende Konzepte I Teil II: Nebenläufigkeit

I Teil III: Fortgeschrittene Konzepte

IBidirektionale Programmierung: Zippers and Lenses

IEventual Consistency

IRobustheit, Entwurfsmuster

ITheorie der Nebenläufigkeit

2 [31]

Heute

I Konsistenzeigenschaften I Eventual Consistency I CRDTs

I Operational Transformation

I Das Geheimnis von Google Docs und co.

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?

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.

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.

6 [31]

Eventual Consistency

Eventual Consistency

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

I Beispiel: DNS

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.

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).

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.

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

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

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

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.

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))

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.

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))

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

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

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)

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.

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?

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)

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 5 Ausgabe: R P 1 5 Aktionen: Retain, Delete, Retain, Insert1, Retain.

I Operationen sindpartiell.

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]

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]

)

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

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

?==========

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

?==========

29 [31]

Der Client

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

a

-• b

- • Revisionr

c

?

a0 - • c0

?

b0 - • c00

? Revisionr+ 1

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

31 [31]

Referenzen

ÄHNLICHE DOKUMENTE

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

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

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

– 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

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