… og læsninger kan være forkerte. 1) kontoA.hævBeløb(500); 1.000 kr. -> 500 kr. 1) kontoAogB.læsBeløb(); 1.500 kr. 1) kontoB.sætInd(500); 1.000 kr. -> 1.500 kr. (Bemærk: vi er ved at flytte penge mellem to konti. Derfor forsvinder de 500 kr. jo ikke bare - de er ved at blive flyttet.)
say that an interleaving of two blocks is serially equivalent, if the result is equivalent to an execution in which one block was executed entirely before the other.
fra før 1) beløb = kontoA.læsBeløb(); ! 2) kontoB.sætInd(beløb * 1.1); 1.000 kr. ! 1.100 kr. 3) beløb = kontoA.læsBeløb(); ! 4) kontoC.sætInd(beløb * 1.1); 1.100 kr. ! 1.210 kr.
Bestilling af flybilletter Du vil gerne til San Francisco. Du beder et rejsebureau om at arrangere din tur. De fortæller at du skal over Chicago. De booker først en billet til Chicago, og finder så ud af at der ikke er flere pladser i flyet derfra til San Francisco - og du ærgrer dig.
til konflikter Operationer i to transaktioner Konflikt Årsag læs læs Nej Effekten af to læse-operationer er ikke afhængig af deres rækkefølge læs skriv Ja Effekten af en læs- og skriv- operationer er afhængig af deres rækkefølge skriv skriv Ja Effekten af en skriv- og skriv- operation er afhængig af deres rækkefølge
databaser. ACID i en database Atomicity Enten virker hele molevitten eller også bliver det droppet. Consistency Sørger for at data er korrekte, fx at en ny række har en primærnøgle. Isolation Sætter lighedstegn mellem samtidig og seriel kørsel af transaktioner. Durability Hvis nu serveren eksploderer, så skal transaktioner kunne overleve - typisk ved at være gemt på disken.
opklarende tabel Læse-operation Skrive-operation Hvis der ikke er nogen lås OK OK Hvis læse-lås på værdien OK Vent Hvis skrive-lås på værdien Vent Vent
ikke godt Transaktion 1 Transaktion 2 Operationer Låse Operationer Låse kontoA.sætInd(100); skrive-lås på kontoA kontoB.sætInd(200); skrive-lås på kontoB kontoB.læsBeløb(); (venter på skrive- låsen på kontoB) kontoA.læsBeløb(); (venter på skrive- låsen på kontoA)
locking Hvis en værdi ikke allerede er låst, så lås den. Hvis værdien har en lås i forvejen, der er i konflikt med operationen, så vent til låsen fjernes. Hvis værdien har en lås i forvejen, der ikke er i konflikt, så fortsæt som planlagt. Hvis værdien allerede er låst i samme transaktion, så forfrem den eventuelt og fortsæt som planlagt.
control Det er en antagelse om at flere forskellige transaktioner kan gennemføres uden at påvirke hinanden. Når en transaktion bliver kørt, så foregår det uden brug af locking. Når en transaktion committes, så undersøges hvorvidt de data, den har læst, er blevet ændret i mellemtiden. Hvis ja, så forsøges transaktionen gentaget.
transaktion må ikke gemme en værdi, der er blevet læst på et senere tidspunkt af en anden transaktion. En transaktion må ikke gemme en værdi, der er blevet gemt på et senere tidspunkt af en anden transaktion. En transaktion må ikke læse en værdi, der er blevet gemt på et senere tidspunkt af en anden transaktion.
en leder Der skal være en, der styrer slagets gang. Det skal ikke være den samme altid - turen skal gå på skift. Det kaldes blandt andet for en coordinator role, en log leader eller generelt set log election. Husk at transaktioner skal persisteres og kunne genskabes - det gøres via en log over hvad der er sket.
tilbage med grønt lys, så bliver transaktionen gennemført (commit). Hvis ikke alle melder positivt tilbage, så bliver transaktionen afbrudt (abort/rollback). Hvis en deltager har meldt positivt tilbage og ikke hører mere fra lederen, så er deltageren i en uncertain state.
fundamental problem in distributed computing is to achieve overall system reliability in the presence of a number of faulty processes. This often requires processes to agree on some data value that is needed during computation. Examples of applications of consensus include whether to commit a transaction to a database, agreeing on the identity of a leader, state machine replication, and atomic broadcasts.
opstår løbende, er essentiel. Hvis det hele går sydpå Transaktioner skal som udgangspunkt være persisteret, altså gemt et sted, så de kan genskabes om nødvendigt. Hvis en server ikke svarer, så kan der indføres en timeout, som opgiver at få svar efter noget tid. Ergo: et distribueret system skal som minimum kunne håndtere forsinkelser (latency) og nedbrud (failures).
Flertallet bestemmer Et quorum er et udtryk for et givent flertal, der skal til for at et distribueret system kan overleve nedbrud. Et quorum på to tredjedele betyder at et system med alle noder intakte kan overleve at en tredjedel af dem dør på grund af systemfejl eller lignende. Et quorum kan samtidig anvendes til at løse konflikter omkring data i systemer, der er eventually consistent.
udbedring. BitTorrent Forbinder til andre klienter via et distribueret hash table, en slags kort der kan slås op i. En torrent indeholder et hash af de data, som den består af. Når klumper af data er downloadet, så sammenlignes de med hash-værdierne - og hvis de ikke stemmer overens, så smides data ud igen.
form. Bitcoin Består af en block chain, der indeholder alle transaktioner som er foretaget i netværket. Information om block chain’en bliver sendt ud til alle noder via flooding, som vi talte om til sidste forelæsning. Block chain’en har en Genesis Block, og derfra følger en lang række blocks, der indeholder alle handler - dermed kan hele Bitcoin-forløbet genskabes fra start tilslut.
af clocks gør det muligt at opstille en samlet rækkefølge over begivenheder i et distribueret system. a 㱺 b Ci(a) < Cj(b) eller Ci(a) = Cj(b) og Pi ≺ Pj hvis
opstillet en samlet rækkefølge for begivenheder i et distribueret system, så kan hver node vedligeholde en liste over hvilke ressourcer, der er ledige hvornår - og sørge for at sende forespørgsler på ressourcer når der er behov for det. (Det kræver dog at alle noder kender til hinanden i det distribuerede system.)
få adgang til en ressource når den har en forespørgsmål på en ressource i sin liste, og den forespørgsel kommer før andre forespørgsler i henhold til den samlede rækkefølge: a 㱺 b
tid Altså rigtig tid. I stedet for en værdi, der stiger løbende, så kan der anvendes rigtige ure til at afgøre den reelle rækkefølge af begivenheder i et distribueret system.
et kryptisk citat One of the mysteries of the universe is that it is possible to construct a system of physical clocks which, running quite indepedently of one another, will satisfy the Strong Clock Condition.