• 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 26.06.19

Eventual Consistency

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

17:06:21 2019-07-10 1 [31]

Fahrplan

IEinführung

IMonaden und Monadentransformer INebenläufigkeit: Futures and Promises IAktoren I: Grundlagen

IAktoren II: Implementation IMeta-Programmierung IBidirektionale Programmierung IReaktive Ströme I

IReaktive Ströme II

IFunktional-Reaktive Programmierung ISoftware Transactional Memory IEventual Consistency IRobustheit und Entwurfsmuster ITheorie der Nebenläufigkeit, Abschluss

RP SS 2019 2 [31]

Heute

IKonsistenzeigenschaften IEventual Consistency

ICRDTs

IOperational Transformation

IDas Geheimnis von Google Docs und co.

RP SS 2019 3 [31]

Was ist eigentlich Konsistenz?

IKonsistenz =Widerspruchsfreiheit IIn der Logik:

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

IRedundante (verteilte) Daten IGlobaleWiderspruchsfreiheit?

RP SS 2019 4 [31]

Strikte Konsistenz

Strikte Konsistenz

IDaten sind zu jedem Zeitpunk global konsistent.

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

IIn echten verteilten Systemennicht implementierbar.

RP SS 2019 5 [31]

Sequentielle Konsistenz

Sequentielle Konsistenz

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

IJeder Prozess sieht die selbe Folge von Operationen.

RP SS 2019 6 [31]

Eventual Consistency

Eventual Consistency

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

IBeispiel: DNS

RP SS 2019 7 [31]

Strong Eventual Consistency

IEventual Consistency ist eineinformelleAnforderung.

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

IKeine Sicherheit!

IStrong Eventual Consistencygarantiert:

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

IBeispiel: Versionskontrollsystemgit

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

RP SS 2019 8 [31]

(2)

Monotonie

IStrong Eventual Consistency kann einfach erreicht werden:

INach jedem empfangenen Update alle Daten zurücksetzen.

IFü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 2019 9 [31]

Beispiel: Texteditor

ISzenario: Webinterface mit Texteditor

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

ISiehe Google Docs, Etherpad und co.

RP SS 2019 10 [31]

Naive Methoden

IOwnership

IVor Änderungen: Lock-Anfrage an Server

INur ein Nutzer kann gleichzeitig das Dokument ändern INachteile: Verzögerungen, Änderungen nur mit Netzverbindung IThree-Way-Merge

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

IRequirement:the chickens must stop moving so we can count them

RP SS 2019 11 [31]

Conflict-Free Replicated Data Types

IKonfliktfreie replizierte Datentypen IGarantieren

IStrong Eventual Consistency IMonotonie

IKonfliktfreiheit IZwei Klassen:

IZustandsbasierte CRDTs IOperationsbasierte CRDTs

RP SS 2019 12 [31]

Zustandsbasierte CRDTs

IKonvergente replizierte Datentypen (CvRDTs)

IKnoten senden ihren gesamten Zustand an andere Knoten.

INur bestimmte Operationen auf dem Datentypen erlaubt (update).

IEinekommutative,assoziative,idempotentemerge-Funktion IFunktioniert gut mit Gossiping-Protokollen

INachrichtenverlust unkritisch

RP SS 2019 13 [31]

CvRDT: Zähler

IEinfacher CvRDT

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

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

IWert kann nur größer werden.

RP SS 2019 14 [31]

CvRDT: PN-Zähler

IGängiges Konzept bei CRDTs: Komposition

IAus zwei Zählern kann ein komplexerer Typzusammengesetzt werden:

IZähler P (Positive) und Zähler N (Negative) IZustand: (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 2019 15 [31]

CvRDT: Mengen

IEin weiterer einfacher CRDT:

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

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

merge(P1,P2) =P1P2

IDie Menge kann nur wachsen.

RP SS 2019 16 [31]

(3)

CvRDT: Zwei-Phasen-Mengen

IDurch Komposition kann wieder ein komplexerer Typ entstehen.

IMenge P (Hinzugefügte Elemente) und Menge N (Gelöschte Elemente) IZustand: (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 2019 17 [31]

Operationsbasierte CRDTs

IKommutative replizierte Datentypen (CmRDTs) IKnoten senden nurOperationenan andere Knoten Iupdateunterscheidete zwischen lokalem und externem Effekt.

INetzwerkprotokoll wichtig

INachrichtenverlust führt zu Inkonsistenzen IKeinmergenötig

IKann die übertragenenDatenmengenerheblichreduzieren

RP SS 2019 18 [31]

CmRDT: Zähler

IZustand:P∈N, Typ:N Iquery(P) =P

Iupdate(+,n) Ilokal:P:=P+n Iextern:P:=P+n

RP SS 2019 19 [31]

CmRDT: Last-Writer-Wins-Register

IZustand: (x,t)X×timestamp

Iquery((x,t)) =x Iupdate(=,x0)

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

RP SS 2019 20 [31]

Vektor-Uhren

IIm LWW Register benötigen wir Timestamps IKausalität muss erhalten bleiben

ITimestamps müssen eine total Ordnung haben IDatum und Uhrzeit ungeeignet

ILösung: Vektor-Uhren

IJeder Knoten hat einen Zähler, der bei Operationen hochgesetzt wird IZusätzlich merkt sich jeder Knoten den aktuellsten Zählerwert, den er bei

den anderen Knoten beobachtet hat.

RP SS 2019 21 [31]

Operational Transformation

IDie CRDTs die wir bis jetzt kennengelernt haben sind recht einfach

IDas Texteditor Beispiel ist damit noch nicht umsetzbar IKommutative Operationen auf einer Sequenz von Buchstaben?

IEinfügen möglich (totale Ordnung durch Vektoruhren) IWie Löschen?

RP SS 2019 22 [31]

Operational Transformation

IIdee: Nicht-kommutative Operationen transformieren

D f -

D0 g0

-

f0 - g -

IFürtransformmuss gelten:

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

RP SS 2019 23 [31]

Operationen für Text

Operationen bestehen ausdrei Arten von Aktionen:

IRetain— Buchstaben beibehalten IDelete— Buchstaben löschen IInsert 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.

IOperationen sindpartiell.

RP SS 2019 24 [31]

(4)

Operationen Komponieren

IKomposition: Fallunterscheidung auf derAktion IKeine einfache Konkatenation!

IBeispiel:

p = [Delete,InsertX,Retain]

q = [Retain,InsertY,Delete]

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

Icomposeist partiell.

IÄquivalenzvon Operationen:

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

RP SS 2019 25 [31]

Operationen Transformieren

ITransformation •

a -

b0

-

a0 - b -

IBeispiel:

a = [InsertX,Retain,Delete]

b = [Delete,Retain,InsertY]

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

,[Retain,Delete,InsertY]

)

RP SS 2019 26 [31]

Operationen Verteilen

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

IWas machen wir jetzt damit?

IKontrollalgorithmus nötig

RP SS 2019 27 [31]

Der Server

IZweck:

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 2019 28 [31]

Der Server

IZweck:

INebenläufige Operationen sequentialisieren ITransformierte 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 2019 29 [31]

Der Client

IZweck: Operationen Puffern während eine Bestätigung aussteht

a

-• b

-• Revisionr

c

?

a0 -• c0

?

b0 -• c00

? Revisionr+ 1

RP SS 2019 30 [31]

Zusammenfassung

IStrikte Konsistenz in verteilten Systemen nicht erreichbar IStrong Eventual Consistency

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

IWenn zwei Knoten diegleiche MengeUpdates beobachten befinden sie sich imgleichen Zustand.

IConflict-Free replicated Data Types:

IZustandsbasiert: CvRDTs IOperationsbasiert: CmRDTs IOperational Transformation

IStrong Eventual Consistency auch ohne kommutative Operationen

RP SS 2019 31 [31]

Referenzen

ÄHNLICHE DOKUMENTE

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

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

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

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

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

– 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