Orsakskonsistens
Causal konsistens är en konsistensmodell som inte kräver att alla processer ser samma sekvens av poster i minnet, och skiljer mellan potentiellt beroende (en post av en kan bero på resultatet av att läsa en annan cell) och potentiellt oberoende (parallella) skrivoperationer [ 1] .
Ett system uppnår kausal överensstämmelse om minnesoperationer som är potentiellt kausalt relaterade beaktas av alla noder i systemet i samma ordning. Samtidiga skrivoperationer (det vill säga de som inte är kausalt relaterade) kan betraktas i en annan ordning av olika noder. Denna typ av konsistens är svagare än sekventiell konsistens , vilket kräver att alla noder ser alla poster i samma ordning [2] , men starkare än PRAM-konsistens , där endast poster gjorda av en nod skulle vara synliga i samma ordning av någon annan nod [3] .
Kausalitetssamband mellan operationer (händelser) för distribuerade delade minnessystem kan definieras enligt följande [4] :
- Sekvensen av läsningar och skrivningar på en nod bestämmer den lokala kausala ordningen.
- En skrivoperation föregår kausalt en läsoperation på en annan nod om läsningen returnerar värdet som skrivits av den skrivoperationen. Detta är en beställningsrelation mellan processer.
- Och slutligen anses kausalordningen vara transitiv : det vill säga om operation A (kausalt) följer B, och B - före C, är A i kausalitetsordningen före C. Det vill säga den transitiva stängningen av relationerna mellan lokala och interprocessorder bestämmer den globala orsaksordningen.
Fördelar och nackdelar
Genom att behålla egenskapen för garanterade operationer med låg latens, är orsakskonsistens bättre än slutlig konsekvens för både användare och programmerare. Den tar hänsyn till orsak-och-verkan-relationerna mellan operationer och säkerställer att varje nod ser operationerna i angiven ordning. Orsaksöverensstämmelse gör också programmering lättare genom att eliminera behovet av att överväga irrelevanta operationer [5] .
Men kausal överensstämmelse har också några nackdelar [5] :
- inte alla orsakssamband kan fastställas inom systemet,
- det är inte alltid möjligt att kräva uppfyllandet av globala invarianter ,
- logiken för att implementera samtidiga skrivningar kan vara svår att implementera.
I synnerhet krävs det att fastställa om en enkel överskrivning av gamla data är tillräcklig eller om separata mekanismer för att lösa motstridiga poster krävs.
Anteckningar
- ↑ Odintsov I. O. Professionell programmering. Systemansats. - 2:a. - St Petersburg. : BHV-Petersburg, 2004. - S. 520-521.
- ↑ Vijay K. Garg Concurrent and Distributed Computing in Java. John Wiley & Sons, 28 jan 2005 - Datorer - 336 sidor. p60
- ↑ Kshemkalyani, Singhal, 2011 , s. 420-423.
- ↑ Kshemkalyani, Singhal, 2011 , 12.2.3 Orsakskonsistens.
- ↑ 1 2 Wyatt Lloyd, Michael J. Freedman, Michael Kaminsky, David G. Andersen. A Short Primer on Causal Consistency ;inloggning: The USENIX Magazine, Vol 38, nummer 4, augusti 2013.
Litteratur
- Kryukov V. A. Föreläsningskurs "Distribuerade operativsystem" 6. Distribuerat delat minne
- Pradeep K. Sinha. Causal Consistency Model // Distribuerade operativsystem: koncept och design . — PHI Learning Pvt. Ltd., 1998. - S. 239-240. — 761 sid. — ISBN 9788120313804 .
- Kshemkalyani, AD och Singhal, M. Distributed Computing: Principles, Algoritms, and Systems. - Cambridge University Press, 2011. - ISBN 9781139470315 .
- M. Ahamad, G. Neiger, J.E. Burns, P. Kohli och P. Hutto. Kausalminne: Definitioner, implementering och programmering. Distributed Computing, 9(1), 19
- Bailis, Peter och Ghodsi, Ali och Hellerstein, Joseph M. och Stoica, Ion (2013). Bolt-on kausal konsistens . Proceedings of 2013 ACM SIGMOD International Conference on Management of Data . SIGMOD '13. New York, New York, USA: ACM. pp. 761-772. DOI : 10.1145/2463676.2465279 . Hämtad 2013-12-06 .