Das Interessante ist, wie kriegt man Zeit in einem verteilten System auf die Reihe?
So, über Relativitätsthemen, Theorieprobleme mit sozusagen schiefgehenden Atomuhren,
wo wir gar nicht so genau drüber reden,
aber es gibt sozusagen die einfachen Probleme,
die aufgrund der einfach normalen Uhren sozusagen auftreten.
Und wir können nicht davon ausgehen,
dass wir in einem System generell eine globale Uhr irgendwie vorfinden.
Ja, das ist etwas, was nicht mehr funktioniert.
Selbst beim normalen Rechner wird das schon schwierig,
aber in den heutigen Zeiten mit den vernetzten Systemen ist das eine der sozusagen Grundprobleme,
mit denen sich dann halt in den 70er Jahren durchaus beschäftigt wurde und für die es dann entsprechende Vorschläge der Lösungen gab.
So. Es gibt jetzt also logische und vektorielle Zeitstempel,
so logische, heißt bedenken uns irgendwas aus und machen da
so einen gedanklichen Schnitt durch die Sachen.
Vektoriell ist halt, das war so ein bisschen differenzieren.
So, die Idee ist, dass irgendwie eine globale Zeit
da sei, versus so einer lokalen Zeit.
Wenn ich hier also betrachte, kann ich alle
sozusagen gleichzeitig sehen
Aber sämtliche Informatikstudenten zur gleichen Zeit zu sehen,
ist halt ein bisschen schwierig, wenn ich frage,
was hast du, um 13.17 Uhr gemacht?
Dann ist sozusagen diese 13.17 Uhr ja sozusagen eine lokale Zeit, die jeweils vorliegt.
Und da haben sich Andy Leute halt schon mit beschäftigt und
Anfang des 20. Jahrhunderts haben wir so den Herrn Minkowski gehabt,
der sich Gedanken gemacht hat über solche Uhren,
die dann irgendwie laufen und wie man da dann irgendwas auf die Reihe bekommt.
So, jetzt gibt es dazu eine einfache Geschichte.
Es gibt eigentlich irgendwas, was immer in der Vergangenheit war
Dann habe ich mein Jetzt, nämlich das, meine jetzige Uhr,
die gilt für mich, weil das ist sozusagen lokal.
Da kann ich sozusagen drüber verfügen. Aber für meine Zukunft,
was ich dann so um 17 Uhr mache oder in einem Jahr oder in 150 Jahren,
das ist sozusagen relativ weit offen, was da die Optionen für mich sind.
So, die Idee ist also, dass wir irgendwie so einen Kegel haben,
in dem wir uns jetzt also kausale Abhängigkeiten vorstellen können,
was vom Jetzt in die Zukunft,
sei es auch in einer halben Stunde wieder vorliegen kann.
Wir haben also irgendwie so eine Relation und das heißt,
das, was jetzt ist, liegt vor dem,
was heute Nachmittag sein wird,
bei den Prüfungen,
die ich da habe
So, das heißt, wir haben jetzt noch irgendwie eine Relation nebenläufig.
Das heißt, meine Uhr, meine Aktivität ist relativ unabhängig
von dem, was bei euch sozusagen passiert.
Also ein anderes A dahinter habt im Blau,
andere Personen zur gleichen Zeit, vielleicht sogar noch illegiert.
Dann gibt es für jedes Individuum oder für jedes Element,
was wir so im System haben,
eine eigene Historie und eine eigene Zukunft
So, da gibt es also mehrere von und die kann man sich also angucken.
Das sind solche Kegel, die da drin vorkommen.
Die Idee von Petry war dann natürlich entsprechend,
dass wir hingehen und Lebenslinien haben. Das heißt,
wir sehen jetzt im Laufe dieses Kegels irgendwie irgendwelche entsprechenden Linien sozusagen,
die wir da haben,
von der Geburt bis zum irgendwo anders oder wenn man einen
Urknall nimmt und dann bis noch eine ganze Weile weiter.
Kann man
das sozusagen angucken
Jetzt ist Modellierungsfrage wiederum, wenn sich jetzt zwei Personen treffen,
kann man das so als eine Synchronisation betrachten, dem wieder auseinandergeht.
Wenn man jetzt mal schaut,
dass man sich so einen Prozess anguckt von zwei Leuten,
die sind sozusagen dort, sie treffen sich,
das ist ein gemeinsames Ereignis und danach haben sie wieder einen eigenen Lebensweg,
ist das relativ klar.
Ob das jetzt sozusagen zwei Atome sind,
die sich zufällig treffen, weil sie irgendwie gegeneinander fliegen.
Oder ob das irgendwie Ereignisse sind von Personen,
die sich treffen oder ob ich damit meine,
wann haben zwei Leute zusammen irgendwo gelebt?
Also eine längere Zeit. Kann man also
sozusagen von der Modellierungszeit, von dem Modellierungszweck abhängig machen,
was dieses eine Ereignis sein soll
Und das muss man ein bisschen im Hinterkopf behalten,
wenn man jetzt über die Ereignisse redet.
Das ist also eine sehr allgemeine Geschichte, die sehr allgemein gilt.
Und man muss sich überlegen, was man sich davon genau angucken möchte.
So, die Idee ist, dass wir jetzt irgendwie Prozessoren haben.
Zufälligerweise könnte man da jetzt Menschen nehmen,
aber als Informatiker haben wir jetzt hier zufälligerweise natürlich Prozessoren vorliegen,
die irgendwo sind.
Wir haben also ein Stück von P0 bis PN minus 1.
Die liegen irgendwo und jeder für sich hat so seine Zeitlinie.
Die haben wir hier jeweils zu sehen.
P0 P1
Nach rechts für die Zeit abgetragen und da haben wir so ein 4-1,
4-2, 4-3,
was der jeweils so als Ereignisse dann so in seinem Pailla sozusagen gerne sehen möchte.
Und dann die entsprechenden anderen Fees, die wir dort ebenfalls mit drin haben.
Wir haben also lokale Rechenschritte und die Idee ist jetzt erstmal Nachrichten verschickt. Und zwar,
wenn ich eine Nachricht verschicke, habe ich genau ein Ereignis,
egal wie komplex die jetzt ist und was man alles reinpackt und so weiter,
hat man das entsprechende Ereignis 4-1 und dann ist rüber und dann schreibt man ran,
P4 ist dann das,
wenn es bei P1 entsprechend angekommen ist.
Das ist das, was da hinter steckt. Interessant ist bei Nachrichten,
dass sie jetzt überholen können oder sie natürlich auch wechselseitig
sozusagen hier überkreuzen können, wir holen das mal weg.
Das heißt, dieses Ereignis ist irgendwie dort, ja,
so, dass es von dem losgeschickt wurde und der hat ein anderes,
andere Nachricht losgeschickt, sodass er sich jetzt überkreuzt.
Das kann man da dann auch vorfinden. Und was ich jetzt machen kann,
sie kann die Zeitachsen jetzt stauchen und auseinanderziehen,
weil es ist ja eine relative Zeit ist.
Was aber nicht nur sozusagen änderbar ist, dass mein Ereignis
49 vor 412 liegt. Weil das ist lokal an einer Stelle,
und da weiß ich genau, wie neun Lichtfuhr
410, 11 und 12. Das ist etwas,
was sich da dann sozusagen einfach reinschreiben kann.
Das weiß ich dann auch
So, wir haben also entsprechende Relationen und 4-1
vor 4-2. Haben wir genau dann mit folgendes gilt,
nämlich wir haben 4-1 auf 4-2 gehören zum selben Prozessor,
das ist sozusagen intuitiv klar.
Sie liegen also vor demselben Geordneten, auf derselben geordneten Zeitachse
und dann gilt eben das 4-1 vor 4-2 ist.
Genau dann, wenn das 4-1 vor 4
-2 auf der Zeitachse liegt.
Kann man also sozusagen genau zuordnen. Das ist dann auch
eindeutig. Sehen wir hier unten unser 4-4 und 4
-5, 4-5,
was wir dort haben
So, gehören die jetzt zu verschiedenen Prozessoren. Das heißt,
sie liegen auf verschiedenen Zeitachsen und ist das Vieh eins eben
ein Sinndereignis bei den Nachrichten, das ist Vieh zwei, das Empfangenereignis.
Nur in dem Fall gilt das. Dann gilt das E41
442 liegt und da ist halt zum Beispiel,
dass wir das halt, das Viehachtlicht vor dem 43,
weil wir können sozusagen nichts rückwärts verschicken oder sowas.
So, damit haben wir es jetzt definiert,
wie das Teil aussieht und das vor ist entsprechend transitiv,
weil das Vieh-1 liegt vor dem Vieh 12,
was man aufgrund der entsprechenden Nachrichten sozusagen herauskriegen kann,
wenn man genau hinguckt
Das Spannende ist jetzt, wehrlich, den geht alles vor,
wem und wie ist das jetzt geordnet?
Das ist dann nicht mehr ganz einfach. Und da gibt es
Probleme aus den einzelnen Anwendungsbereichen, durch die ich jetzt relativ fix durchgehen werde.
Frage ich jetzt, ob es eben auch irreflexiv ist. Und das heißt entsprechende Striktordnung,
wenn wir jetzt also ein Ereignis haben, man schickt das rüber,
naja, gibt es irgendwie die Möglichkeit,
wieder was zurückzuschicken oder noch weiter davor zu schicken, dann würde sozusagen ja genau dieser,
vor sich selbst sozusagen wiederum sein, was dann ein bisschen schwierig wird.
So, wir haben jetzt ein Banksystem mit drei,
vier Jahren eigentlich nur,
was wir
gleich angucken werden
Oder vier, vier Jahren, davon gucken wir uns jetzt drei an.
Und wir haben also jetzt die entsprechende Übertragung von Nachrichten über so
einen entsprechenden Kanal. Das heißt, wir haben ein Ereignis,
die Stelle dazwischen ist der Kanal und wir haben ein zweites Ereignis,
was das Ganze entgegennimmt. Was wir jetzt machen ist,
bei Banken, spannendes Thema im Moment gerade,
das trifft jeden oder interessiert jeden so ein bisschen,
wird Geld abgezogen und wieder überwiesen.
Und die Frage ist, wo bleibt denn das Geld dazwischen
und was man als Bankmensch ja gerne wüsste,
ist,
wo das Geld insgesamt steckt
So, die spannende Frage ist jetzt, wo steckt das Geld?
Und wenn ich jetzt so ein Fahrteissystem habe,
muss ich irgendwie als Manager, der in Brüssel sitzt,
wissen, was die Filialen in der Welt verteilt sozusagen haben und
wie die ihr Geld ja auch noch hin und her schieben,
möchte ich das auch noch gerne berücksichtigen,
dass sich da irgendwie einen vernünftigen Konsistentenzustand habe.
Das Beispiel ist dann relativ simpel hier gestrickt, was wir uns dann angucken werden.
Wir haben also 10, 20 und 30 Euro,
kann man auch Millionen, Milliarden oder demnächst Billionen davor schreiben,
was da so hin und her geschoben wird.
Aber auf jeden Fall haben wir jetzt so eine Einheit,
die da von eins nach V4 übertragen wird oder zwei Geldeinheiten,
die zum Zeitpunkt 3 nach oben zu 4,
6 hochgeschoben wird,
wo dann die lokale Zeit 6 ist
Diese kleinen Zahlen da dran, diese 1, 3,
4 oder in einer Teile eben 1, 7,
8, die Kleinen oben und dann 3, 4,
6, 7 sind sozusagen die lokalen Zeiten,
die dort gerade gelten.
Und die entsprechenden Vorredaktionen sind mit dem Vieh, sind natürlich weiterhin unabhängig davon definiert.
Und die eingekrielten Teile sind sozusagen die Geldeinheiten,
die wir dort hin und her schieben und die wir jetzt
irgendwelche Transaktionen vornehmen und in denen irgendwelche Geldsachen angeschaut werden.
So, wir haben diese Grundmenge von 10 plus 20 plus 30,
gleich 60, ganz am Anfang,
das ist sozusagen unsere Anfangsmarkierung für unseren Prozess,
haben wir
da also die Geldmenge von 60 Einheiten liegen
So, und irgendwie haben wir da jetzt noch dieses 4-8
und V6 mit dem 2, was wir da noch dabei haben.
So, was wir haben, sind die 1 bis 10
, sind die Zeitzustände der lokalen Uhren?
Das war das, was ich eben gerade erzählt hatte.
Jeder hat so seine lokale Uhr und die schreitet irgendwie voran.
Das Problem ist, die Bankleutung, Bankleitung möchte jetzt also
wieder in Intervallen, die insgesamt umlaufende Geldmenge ermitteln.
Wir müssen wissen, was da eigentlich passiert.
Und eigentlich sollte über 60 sein. Wir wollen kein Geld
generieren bei dem ganzen Kram. So,
und die Bankleitung fordert also von allen Funktionseinheiten,
also alle Prozessoren oder Filialen,
wie auch immer ihr das nennen wollt,
die Kontostände zu einem bestimmten Zeitpunkt ihrer lokalen Zeit ab
Die Erwartung ist, soll ja 60 sein, weil soll ja
so ausschauen. Sollen wir jetzt einen Zeitpunkt T5 nehmen?
Wie sieht es dann aus, wenn wir da mal reingucken?
Wir machen einen Schnitt da durch und sagen,
da soll der Zeitpunkt die fünfmal liegen.
Widerspricht sich auch nicht, weil es zwischen eins und sieben,
zwischen vier und sechs und zwischen drei und sieben.
Da ist also der Schnitt bei fünf und jetzt wird gemeldet.
So, wenn jetzt gemeldet wird, werden gemeldet oben neun,
weil er einen schon losgeschickt hat.
Der andere sagt 18, weil er einen bekommen hat und
drei losgeschickt hat von den 20 entsprechend.
Und unten, sagt er 28, weil er von seinen
30 schon zwei weggeschickt hat.
Konstruiertes Beispiel. Summe kommt irgendwie nicht mehr so richtig hin.
Ist nicht so richtig schön. Uns fehlt ein bisschen Geld
mit anderen Systemen. Das möchten wir jetzt gerne beseitigen,
damit wir sozusagen konsistente Zustände in unserem System irgendwie auf die Reihe bekommen.
So, jetzt ist die Frage, Nachrichten sind unterwegs.
Was mache ich also? Sag ich, naja,
ich gucke mir das mal an. Unterwegs sind halt entsprechend fünf,
fünf Dollar und jetzt gucke ich mal an, woran das denn liegt.
Und wenn ich es mir genau anschaue,
dann sehen wir mal die Nachrichten, zwei und drei,
so nachdem wir die mit drauf,
dann kommst du alles wieder hin und es ist alles wie in Ordnung.
So, das Problem waren also die noch nicht empfangenen Nachrichten,
die wir entsprechend also jetzt dazupacken und sagen, okay,
das wurde ja unterschlagen.
Leute, das geht nicht. Ihr müsst also noch
sagen, was sozusagen dort losgeschickt wurde
Jetzt kommen wir zum nächsten Problem. Damit lösen wir das Problem natürlich,
wenn wir die Sachen mitschicken, alle gesehen, kriegen wir unsere 60 raus. Jetzt haben wir das Problem,
dass wir zu einem Zeitpunkt T was verlangen und lokal ist das einfach so,
dass der jetzt da hinten bei seiner Tee-Geschichte liegt und ich schicke auch mit,
was ich verschickt habe, aber das kann auftreten,
dass ich jetzt sozusagen der 23 angib,
statt meiner 20, weil der eine hat gesagt,
der hat das verschickt und der andere sagt, ja,
ich habe hier jetzt so 23 in der Tasche.
Und dann kommt es halt zu den entsprechenden 63 Geldeinheiten,
die wir da haben. Das liegt daran,
dass das sozusagen die entsprechende Historie von dieser Zeit aus ist und dass
die Vergangenheit für diese lokale Geschichte Die Nachricht kommt aber irgendwie, woher?
Aus der Zukunft. Weil eigentlich war klar, dass das eine
so davor liegt und geschickt und dann dadurch die Problematik drin.
Und irgendwie ist also das unschöne,
dass dort Nachrichten aus der Zukunft in die Vergangenheit geschickt werden.
Was unglücklich ist. Möchten wir es auch nicht haben.
Ich muss überlegen, wie das sozusagen gelöst wird.
Und jetzt kommt man auf die delogische Uhren einzuführen,
die irgendwie da reingepackt werden. So,
wir haben weithin unser 4-1-4-4-4
-4-4-2 und daraus soll eben folgern,
dass diese Logical Time, logische Uhr,
entsprechend auch entsprechend umgeschoben sodass ich da etwas zu richtig hinpacke.
Zualysierung führt also jede Funktionseinheit, eine Variable, die eben
die lokale Zeit hat. Am Anfang stehen sie auf null
. Und die Nachricht hat eben noch einen weiteren Zeitstempel.
Jetzt kommen wir zum Stempelverfahren, jede Nacht, die wir jetzt losschicken,
steht Zeit drauf, wann wir es losgeschickt haben.
Und wenn also so ein Ereignis ankommt, nimmt man also
den maximalen Wert von seiner eigenen Uhr und der Uhrzeit,
die einem geschickt wird.
Das ist sozusagen die banale Lösung dazu. So,
und damit kriegen wir das Ganze dann ganz gut im Griff
Wenn das Vieh jetzt so ein Ereignis von PI ist,
dann haben wir eben dieses Logical Time von Vieh und entsprechenden Wert dazu.
So. Für die entsprechenden Ereignisse, können wir jetzt sagen,
wenn das Vieh eins vor dem FI2 liegt,
dann ist auch die logische Uhr entsprechend gesetzt.
Das ist das, was wir davon ausgehen können,
dass die logische Uhr immer entsprechend kleiner sein muss als dieses
logische Uhr von dem Zwei, weil eins vor zwei liegt.
Und wir haben ja gerade gesagt,
wenn wir so einen Zeitstempel da irgendwie haben,
so eine Zeitlokale Zeit haben, dann sagt unser Stempel,
wir wenden das Maximum und dadurch muss das natürlich klar sein.
So, jetzt gibt es ein Verfahren der Bandleitung,
können wir sich mal angucken, was wir so genau treiben.
Wir haben also irgendwie logische Uhren,
man legt so einen Zeitpunkt hier gleich null fest und jetzt muss man
sozusagen einmal alles runterprogrammieren und dann hat man so eine logische Uhr implementiert.
Das haben die also auch damals gemacht. Für jede Funktionsunheit
haben wir also so einen entsprechenden Bezug auf die lokale Zeit mit
dem 4 und 4 Strich und wir haben eben auch die logische Uhr,
logische Zeit, dass wir das LTV, ist kleiner als T und das andere,
falls T nicht vor dem ersten Ereignis von PI liegt.
So, jetzt haben wir das CI,
das haben wir jetzt auf diesen Wert zwischen diesem entsprechenden Vieh- und Viehstrich oder auf dem Anfangswert,
falls das Tee eben vor dem ersten Ereignis liegt.
Das ist das, was wir da hinpacken. So,
und dann senden wir das Ganze an die Leitung mit dem entsprechenden CI.
Und wenn du den Wert jeder Geldsendung an die Leitung,
die Abviehstrich ankommt, aber einen Zeitstempel hat,
der entsprechend kleiner im L4 ist.
So, das Verfahren könnt ihr euch noch genauer angucken,
wie das sozusagen genauer durchläuft
Also wichtig ist,
dass wir dadurch sozusagen den konsistenten Schnitt erreichen,
was wir jetzt haben als ein Beispiel,
wir haben dieses P1,5, machen wir so mittendrin,
so einen Schnitt und wir gucken uns jetzt an,
was da ist und wir sehen halt,
dass dieses 1 in 4-4 ankommt und dass 2 in 4-6 später auch ankommt und das entsprechend dann berücksichtigt wird.
Und wer dadurch also auch mitkriegen,
welche Summe dann insgesamt im System eigentlich vorliegt,
weil wir den Schnitt entsprechend über diese Sachen legen und wir
die Sachen ausrechnen können und die Bankleitung kann es ausrechnen aufgrund
der Mitgeteilten Zeitstempel,
die da entsprechend vorliegen
So. Das Ganze wird jetzt bei Tannenbaum nochmal sozusagen nett beschrieben.
Könnt ihr so mal nachlesen. Die Bücher liegen ja zuhauf
in der Bibliothek. Da kann man sich schon mehr jetzt nachlesen.
Es gibt noch ein paar andere Bücher, die ihr euch anschauen könnt.
Die sind ja entsprechend im Skript angegeben. Da sollt ihr einfach
ein bisschen nachlesen, weil das ist einfach jetzt etwas,
was man für die Entwicklung von verteilten Systemen ganz gut gebrauchen kann,
sodass ihr da mal einen Blick drauf werfen könnt, je nachdem.
So, was hat der Lampodt jetzt eigentlich gemacht?
Der hat also die Idee, dass wir jeweils hier drei Prozent Prozesse haben,
die eine entsprechende eigene Uhr haben, die hier so runterläuft.
Und jetzt gibt es hier die entsprechenden Zahlen drauf. Und das Spannende ist,
dass jetzt die entsprechende Uhr, die wir hier haben,
mit dem 60 eine Nachricht schickt und dann hier im Grunde bei der 56 ankommt.
So, unsere Forderung ist halt, das ist unschön.
Das war genau unser Beispiel,
was wir gerade hatten mit dieser Vergangenheit und der Zukunft,
was so ein bisschen unglücklich ist. Lösung dazu ist einfach,
naja, wenn das Ding hier ankommt und wir wissen,
das ist 60, dann muss die Antwort hier drüben ankommen,
mindestens 61 sein.
Das fragen wir auch so entsprechend ein und machen das.
Entsprechend mit dem Ursprung. Was da läuft,
schicken wir die nächsten Ursachen und wenn das hier ankommt,
muss ja mindestens die 70
erreicht sein
Das andere, was wir vorher hatten,
als Problem war eben halt diese 64 oder 54,
sodass es quasi in die Vergangenheit relativ in Vergangenheit bezüglich der lokalen Uhr reingekommen ist.
So, und naja, wenn man den Text halt durchliest,
dann wird es halt lustig, ist halt der anschaulich geschrieben,
der Text, kann man also relativ locker weglesen.
Dann kommt es eben genau zu diesem Problem und die Lösung besteht eben genau darin,
dass man die Forderung aufstellt, diese Uhrzeit entsprechend draufzulegen.
So, was haben wir jetzt damit erreicht?
Wir haben also jetzt irgendwie so die Möglichkeit, Dieses Problem,
dieser Nachrichten aus der Zukunft in die Vergangenheit zu erledigen,
war die lokalen Uhr mitgeschrieben werden müssen.
Die Zeit wird vorgeschoben, sodass wenn ich mal einen Schnitt
mache, ich entsprechend konsistente Schnitte erreiche.
So, damit haben wir schon eine Menge erreicht.
Was ich aber immer noch nicht erreicht habe, ist,
dass ich so eine Umkehrung habe, wenn ich also diese Schnitte mir angucke,
dass ich dann auch andersrum auf die anderen Sachen zurückschließen kann.
Das werden wir gleich nochmal sehen, was da bei spannend ist. Typisches Beispiel ist jetzt,
dass man sich mit Datenkonsistenz beschäftigt und man geht hin und sagt,
okay, ich habe eine Datenbank,
einmal mache ich sozusagen so eine Addition von 1000 Dollar,
packe ich Hunde dazu und bei dem anderen mache ich 10 Prozent drauf und je nachdem,
ob ich das eine oder das andere zuerst mache,
habe ich natürlich einen unterschiedlichen Betrag in meinen Konten.
Wenn ich meine Konten verteilt, also ausführe,
in dem Augenblick, wenn ich das dort lokal,
die Operation in der falschen Reihenfolge bei so einem verteilt ein Datenbank-Teil ab,
so ein Vater ist abdeckt, mache,
dann habe ich einen inkonsistenten globalen Zustand, weil es nicht genauso entspricht.
Wenn ich also die Operationen nachführe, das ist das,
was man sich halt so vorstellen kann,
es gibt eine Aktualisierung, die wird lokal rauf geschrieben,
die andere auch und dann gibt es auch andere Probleme wie,
wer schreibt zuerst oder überschreibt das andere das oder wird das übertragen.
Da muss man also genauer aufpassen, wie man das sozusagen hinbekommt,
was man jetzt haben möchte, ist,
einen konsistenten Zustand zu erreichen, das im ganzen System das Gleiche vorliegt.
Wenn ich also, wenn New York mein Konto,
aber man konnte was einzahlen und zu Hause möchte ich gerne in Hamburg die entsprechenden Zinsen gut geschrieben bekommen,
dann soll das eine Möglichkeit so definiert sein,
dass es nicht davon abhängt,
ob sich das um 10 Uhr 1 oder 10 Uhr 2 eingezahlt habe,
sondern das war sozusagen ja tageweise entsprechend berechnet werden.
Und die Bäcker haben dafür sich schon die richtige Lösung gefunden,
um das genau auch abzurechnen und die entsprechenden Sachen zu
bestimmten Zeitpunkten gut zu schreiben für bestimmte Dinge.
So, da gibt es eine ganze Menge zu und er werdet
auch bei Datenbanken noch eine Menge zugehört haben oder noch zu hören,
je nachdem,
wie das ausschaut
Nachlesen für Datenkonsistenz, könnt ihr in den alten FG2-Skripten,
wen das interessiert, schemasche Auftragssysteme, auch in Rechensystemebuch.
Davon gibt es auch XX-Emplare in der Bibliothek.
Also da könnt ihr nochmal andere Verfahren euch angucken,
die recht auch so stark sind und die man für Datenbanken
und für konsistente Daten auch sehr gut gebrauchen kann.
Gut, die Idee ist jetzt, dass wir irgendwie so
ein vollständig sortiertes Multicast uns angucken wollen aus diesem Beispiel.
Die Zeitschirm von Lampard können wir also genutzt werden,
um so ein vollständiges Multicast auf völlig verteilte Weise entsprechend zu
implementieren,
Quintessenz von dem ganzen Teil
So, jetzt kommen wir zu Vektor-Zeitstempeln und diese Vektor-Zeitstempel sind jetzt
nochmal ein Schrittchen weiter. Wenn jetzt da irgendwie so eine
lokale Uhr und jetzt schiebt man das irgendwie so mit.
Und ja, das, was jetzt noch spannend wird,
ist Tausalität sozusagen noch mit reinzubekommen, was vorher nämlich nicht geht.
So, und die Anwendung benötigen oft so eine totale Ordnung,
genau das, was wir jetzt gerade eben so diskutiert haben mit
diesem Kram fürs Update von unserer Einzahlung und der Zimpfberechnung.
Und das möchten wir gerne irgendwie haben.
Ich möchte aus einer Striktordnung von unserem Prozess per Zeitstempel
eine totale Ordnung auf den Prozess erreichen
So, einfache Lösung. Die Zentrale steht in Frankfurt
und alles muss in Frankfurt gemacht werden und schön zentralisiert.
Es ist unschön sowas. Möchte man nicht. Muss man sich noch
ein paar andere Sachen zu überlegen, das immer alles zu sequenzialisieren.
Wenn man sich für alle Bankeinzahlungen der Welt eine Sequenzialisierung vorstellen
möchte, wäre es auch ein bisschen komisch. So,
es gibt also etwas anderes Verfahren und was man braucht,
sind so lokale Uhren für jedes Konto.
Jeder Prozessor ist jedes Konto sozusagen ein Prozessor und der hat
seine lokalen Dinge und es gibt eine Auszahlung in verschiedenen Orten
und das muss irgendwie alles konsistent gehalten werden und so weiter
So, was wir deinem jetzt haben, ist,
dass wir so Logical Time mit dem Vieh einführen und noch unseren Prozessor mit einführen.
Was bringt uns das? Naja,
unsere Prozessoren sind ja quasi geordnet, was wir jetzt also haben,
ist, dass wir so eine Möglichkeit haben,
damit darüber was zu unterscheiden.
Also wir gehen davon aus, dass jeder Prozessor noch in
irgendeiner Weise eine Kontonummer hat und die ist geordnet.
Es gibt immer eine kleinste und eine größte
und das ist eine Priorisierung oder eine Symmetriebrechung
Das gilt genau dann, wenn also diese logische Time für das 4
-1 und das 4-2 wieder so schlimm,
wie wir es vorher schon kennen. Und wenn,
oder, wenn die gleich sind, dann gucken wir mal,
ob das i kleiner ist als das J. Das heißt,
wir gucken uns dann die Prozessorennummern an und können dadurch eine Ordnung sozusagen herstellen.
Das ist sozusagen die Tie-Break-Rule oder Symmetriebrechung, wem es möchte.
Ein typisches Lösungsverfahren, wenn man irgendwie Schwierigkeiten hat im verteilten
System, irgendwas auf die Reihe zu bekommen.
Auch teilweise zwingend notwendig. Beispiel dazu sind eben,
dass man jetzt diese Drei kleiner als zwei kleiner als drei,
also das zwei liegt vor dem Drei, da gilt sozusagen die Geschichte, das ist in Ordnung.
Zwei größer als zwei, warum kommt das so? Naja,
wir haben jetzt hier entsprechend den Prozessor 5 und Prozessor 2
und dadurch wird das als größer definiert. Und ja,
das andere ist natürlich andersrum, dass wir halt die entsprechende,
das ist jetzt bei größerer Prozessornummer mit dem P8,
wenn das P4 ist eben das Ausschlaggebende.
So, das ist Lampods Arbeit und einer seiner zentralen Beiträge
in diesem Bereich. Wer im Glockium war,
hat es
ja gehört
So, es gibt dir entsprechende Lampard-Ordnung, die wir dann darauf definieren.
So, was wir jetzt machen, ist ein Senden mit
logischem Zeitstempel oder logischen Zeitstempeln, die wir jetzt da drauf packen.
So, jetzt wird hier nummeriert, 1-0,
1-2. Ja, also wir haben also irgendwie die Einzige,
das Vieh, und das ist zwei für unseren jeweiligen Prozessor, schieben wir mit.
Da oben haben wir so 2-0,
wenn wir 2-1 da unten, warum?
Naja, zwei, weil die Eins oben sozusagen da,
wenn wir einen drauf addieren müssen, weiterschalten und die einen steht halt entsprechend für den Prozessor.
So, jetzt geht's weiter, dann haben wir unsere 3-1,
weil das Signal danach kommt und wir müssen gleich zwei weitergehen.
Das sind also nichts von der 1-1 weiterzugehen,
weil die lokale Uhr ja auch schon da war und wir erzählen trotzdem immer einen obendrauf,
damit wir eine vernünftige Ordnung für die Ereignisse bekommen,
weil wir wissen ja,
dass das 4-4 vor dem 4-5 liegt,
also müssen wir da einen drauf addieren.
So, dann haben wir unser 3-2 da unten.
Warum? Na gut, weil von oben die 2 kommt,
2-0. Unten sind wir auch schon wieder so,
das heißt, wir haben die entsprechende Zeit.
Dann haben wir die 4-1, weil das 4-6 da drin liegt.
Wir haben das 4-2, weil das nach der 3 kommt. Wir haben ein 5-1,
weil wir nach der Vier kommen,
dann haben wir 5-2 da unten,
das ergibt sich gerade zufällig so,
wir haben das 6-1 und 7-0. So,
damit kriegen wir jetzt sozusagen unsere Ordnung rein und dann kann man sich dann angucken,
wie wir da so eine gewisse Reihenfolge reinbringen können in dieses Teil,
sodass man da so eine entsprechende sequenzielle Betrachtung sozusagen hat,
eine kausale Abhängigkeit hat, die man jetzt da drauf liegen kann.
Wobei die 5-1-5-2-Sache natürlich dann
eine Geschichte ist,
die entsprechend aufgrund des kleineren Prozesses
da drin steckt
So, wir haben also gesehen, dass das so gilt,
das 4-1-4-4-2 impliziert,
also die logische Logical Time entsprechend.
Und jetzt ist die Frage gestellt, die Relation kleiner,
die Vorrelation exakt da oder gilt auch die folgende Umkehrung?
Kann man das auch umkehren? Warum nicht? Naja,
wenn wir die beiden hier angucken, das funktioniert nicht.
Klappt nicht an der Stelle. Gut, was machen wir
jetzt? Wir wollen gerne dieses rote Teil da haben,
das hätten wir gerne. Und jetzt kommen wir auf die
Idee, mit Unabhängigkeiten zu arbeiten. Das heißt,
wir müssen jetzt noch die Dinge irgendwie auf die Reihe bekommen,
wie wir unabhängige Sachen in die Relation mit reinnehmen,
wenn es geregelt ist, dann wird das Ganze schön.
Und dann kommen wir nämlich quasi wieder zu den Petrinetzen,
wir zurück, auch zu unseren Prozessideen und so weiter,
ohne dass wir es jetzt noch weiter vertiefen werden hier
Das 4-1 heißt also unabhängig von 4-2 beziehungsweise 4-1.
Und heißt nebenläufig, was wir entsprechend durch diese beiden Balken hier entsprechend schreiben. Und das sind ein paar Lederberater kennt ihr ja schon. So,
falls Folgendes jetzt gilt, wenn das Ding parallel ist,
ist es, das ist genau dann der Fall,
wenn nicht 4-1,
4-4-2 und nicht 4-2,
4-1 liegt, was sozusagen genau das Ding vorhin war,
dass wir unsere Nebenläufigkeit hatten in unseren Prozessen,
wenn zwei Transitionen, nicht die eine,
vor der eine oder die Anrufe da einlicht sozusagen,
das hatten wir genau bei diesem P1 P2 Beispiel,
dass die beiden unabhängig waren, wenn die Nebenbedingungen nicht da waren,
indem wir wohl die Nebenbedingungen eingeführt hatten mit dem P,
hatten wir sie entweder vor 4-1 vor T1 vor T2 oder umgekehrt das T2 vor T1.
So, und genau das ist jetzt sozusagen das,
was wir jetzt hier auch wiederfinden und was
dort sozusagen dann automatisch Eingang gefunden hat,
dass wir da sozusagen unsere Unabhängigkeit drin haben und die
auch noch gerne mit wiederfinden möchten
Jetzt machen ist, wir wollen so eine Striktordnung haben,
ist mir so eine Idee gekommen,
das Ganze sozusagen nochmal genauer anzugucken und was wir jetzt tun ist,
wir packen jetzt einfach Vektoren da rein und gucken uns die
jeweiligen lokalen Zeiten komplett an und wir schicken auch die lokalen Zustände quasi entsprechend so dabei mit.
Also vektuellen Zeitstempel für die Funktionseinheiten und wir inkrementieren immer unseren eigenen Stempel entsprechend mit dem,
was wir gerade an neuem Wissen haben,
aber wir schicken unseren eigenen Stempel auch entsprechend mit und die anderen,
wenn sie das bekommen
, müssen dementsprechend wieder einen hochzählen. Das ist sozusagen die Idee dabei,
den formaleren Teil dazu Könnt ihr euch selbst nochmal angucken.
Ich will jetzt einfach nur nochmal sagen, wofür es,
worum es geht. Und die Details guckt ihr euch dann
für die Hausaufgabe entsprechend selbst nochmal genauer an.
Geht also darum, dass man auf verschiedene Stempel jetzt zusammenlaufen haben
kann und sich darum kümmern muss, wie man das auflöst.
So, das Beispiel kommt auch wieder für die Hausaufgaben.
Deswegen ist das nochmal das, was ich gerne nochmal erzählen möchte.
Wir haben also am Anfang unsere 000.00. Das heißt,
lokal wissen wir, die anderen sind in null.
Wir sind im Zustand null. Das ist sozusagen der Anfangszustand.
Ein sauberer Schnitt am Anfang für die Anfangsmarkierung des Systems,
wie es aufgesetzt wird. Dann geht es entsprechend weiter,
wenn ich also das Vieh ein sozusagen um ausführe,
erzähle ich meinen eigenen Zähler sozusagen um einen hoch
Schickt ihn runter zu dem entsprechenden 4-1. Was ich jetzt mache,
ich fange da nicht an, auch noch hochzuzählen, sondern ich sage,
okay, ich sage nur, eins ist im Zustand eins.
Ich sage nicht mehr, dass ich meine eigene Uhr hochzählen muss,
sondern ich muss meine eigene Urne hochzählen,
weil ich jetzt sozusagen beim ersten Ereignis bei mir selber bin.
Und dann sehe ich also entsprechend das 1-1-0,
eins-2-1, 1-3-1,
4-3 und 1-5-3,
also entsprechend Ereignisse, sage ich, meine interne Ordnung ist 1,
2, 3, 4, 5.
Das Gleiche gilt unten, da habe ich eben 0-1, 2, 3, 4.
Und oben habe ich diese entsprechende Ordnung mit 0-1,
2, 3. Das Interessante ist,
dass jetzt so ein bisschen durchgeschoben wird und wie wir jetzt hier sehen,
Steht da so eine 1-4-3.
Und das ist natürlich schriech. Eigentlich weiß ich ja von der Information her,
dass hier unten eine 2-0-3 ist.
Und das muss also entsprechend eingebaut werden,
sodass ich also hingehe und das Ganze korrigiere und auf die Idee komme,
da 2-4-3 reinzuschreiben und 2-5
-3 und entsprechend oben die Informationen auch mit weiter Durchschiebe.
So, dadurch habe ich jetzt sozusagen die komplette Ordnung für
diese Sache geschaffen und habe jetzt aufgrund dieser entsprechenden Definition,
die wir jetzt noch hier stehen haben, Möglichkeiten des Vergleichs.
Wir können entsprechend auch Dinge als unvergleichbar bezeichnen,
in dem Augenblick, wo wir nicht irgendwas haben,
dass die nicht diese beiden Bedingungen mit vor und vor jeweils erfüllen.
Bei den Lektoren heißt es entsprechend unvergleichbar,
wenn sie entsprechend die beiden entsprechenden Komponenten an den Vektoren sozusagen nicht vergleichbar sind,
weil die eine ist größer als das und die andere ist
größer als die andere und dann klappt das halt nicht.
So, unabhängig heißt also,
entsprechend nebenläufig wird auch so aufgeschrieben und es ist genau das,
was man jetzt hier sozusagen intuitiv auch mitnehmen möchte für diese Relation,
solange die nicht voreinander liegen, sind sie halt nebenläufig.
Das ist die entsprechende Quintessenz, die wir da drin haben und
Letztlich haben wir damit dann genau das, was wir gerne haben möchten.
Nämlich die Äquivalentsrelation zwischen dem Vektor und dem Vieh,
sodass die entsprechend als unvergleichbar sind. Das entspricht dem,
dass wir sozusagen die Sachen als nebenläufig damit drin haben.
Das ist die zentrale Aussage an dieser Stelle. Und wenn
man sich jetzt die Boxen anguckt, dann gibt es die unterschiedlichen Zeiten.
Und jetzt kann ich da drinnen dann die entsprechenden Pfeilchen einzeichnen,
von denen ich weiß, wer vor wem liegt.
Und da, wo keine Pfeile zwischen sind,
wo ich keinen Pfad sozusagen,
kein Linki drin drüber legen kann,
die sind sozusagen unabhängig und damit
nebenläufig zueinander
Jo, gut, die entsprechende Bankleitungsproblematik ist dann eine der
kleinen Hausaufgaben, die euch nochmal überlegen sollte,
die in der Übungsgruppe besprochen werden sollte.
Ob das jetzt nun wie gelöst wird und ob das wirklich
alles Probleme dieser Bankenwelten dann so löst.
Und zum Abschluss gibt es dann halt eben noch die entsprechenden Schnitte,
die man in den jeweiligen Systemen dann finden kann,
die sich genau entsprechend darstellen und auch eben nach diesem entsprechenden nebenläufigen System halt entsprechend liegen.
Gut, okay, noch irgendeine Frage von eurer Seite
Da habe ich mit dem Teil durch, die synchronen Produkte könnt
ihr euch selber angucken. Das sind halt drei Seiten im Skript,
die werde ich beim nächsten wahrscheinlich nicht erzählen,
auf besonderen Wunsch kann ich sie am Ende der Veranstaltung nochmal mit aufgreifen,
wenn ihr das wünscht.
Zum Verständnis ist das sozusagen der Übergang zwischen dem,
wie man mit einem sozusagen Produktautomaten nochmal ein bisschen umgeht,
aber das sollte ja aus FG1 eigentlich noch kennen,
deswegen würde ich das gerne überspringen und beim nächsten Mal dann mit Assembler-Programmierung weitermachen.
Das heißt, mit Dram und Peram und da dann drauf
schauen, wie das weitergeht.
Gut, vielen Dank und bis zum nächsten Mal