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] :

  1. Sekvensen av läsningar och skrivningar på en nod bestämmer den lokala kausala ordningen.
  2. 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.
  3. 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] :

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

  1. Odintsov I. O. Professionell programmering. Systemansats. - 2:a. - St Petersburg. : BHV-Petersburg, 2004. - S. 520-521.
  2. Vijay K. Garg Concurrent and Distributed Computing in Java. John Wiley & Sons, 28 jan 2005 - Datorer - 336 sidor. p60
  3. Kshemkalyani, Singhal, 2011 , s. 420-423.
  4. Kshemkalyani, Singhal, 2011 , 12.2.3 Orsakskonsistens.
  5. 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