Modeli porazdeljenih sistemov

Povezave v omrežju

  • povezava s sprejemljivimi izgubami (UDP): sporočila se lahko izgubijo in podvajajo najprimernejši
  • zanesljiva povezava (TCP): sporočila dostavljena točno enkrat
  • overovljena zanesljiva povezava (TLS): nadgradnja z mehanizmi overovitve pošiljatelja

Obnašanje procesov

  • binazntinski model / model z napako: predpostavlja nepričakovano obnašanje (hrošči, napake, zlonamerni posegi, …)
  • neobnovljivi proces: predpostavlja pravilno obnašanje, a se ob sesutju ne vzpostavi nazaj
  • obnovljivi proces: predpostavlja pravilno obnašanje, a se ob sesutju ponovno zažene (vseeno izgubimo vsebino pomnilnika) najprimernejši

Modeliranje časa

  • sinhroni model: posredvanje sporočila se vedno zaključi v danem časovnem okvirju nerealistično
  • asinhroni model: posredovanje sporočila lahko traja neomejen čas robustnost, a ni zmeraj možen
  • delno sinhronski model: predpostavlja večinoma sinhrono delovanje z možnostjo zakasnitev najprimernejši

Zaznavanje napak

Posredovanje sporočila sporočilo ne prispe do prejemnika / prejemnik ga ne obdela / potrditev ne pride do pošiljatelja
Pošiljatelj po določenem času predpostavi nedostopnost prejemnika zaključi z napako / ponovi posredovanje sporočila

Čas v porazdeljenih sistemih

Fizične ure

Merijo realni / procesorski čas
Večina OS pozna monotono uro: relativni čas od dogodka (npr. zagona), a neuporabna pri primerjavi dogodkov

Kvarčni kristal

Zaniha -krat na sekundo =mikrosekunde na sekundo
Problem: kristali niso iste oblike zamiki potrebna sinhronizacija

Atomska ura

Cezij zaniha ~-krat na sekundo natančnost na 1s v 3M letih
TAI (Time Atomic International): povprečje >300 atomskih ur

Astronomska ura

Gibanje zemlje manj natančno potrebno usklajenvanje s prestopnimi sekundami
UTC: Linux - sekunde od 1.1.1970 / Windows - sekunde od 1.1.1601

Sinhronizacija ur po protokolu NTP (Network Time Protocol)

Strežniki (atomska ura / sprejemnik GPS) sporoča usklajen čas
Odjemalci morajo upoštevati zamike ob zahtevi: čas potovanja zahteve, procesiranja in potovanja odgovora

Izračun zamika ure:

Izboljšana natančnost: povprečimo večkratne odgovore enega/več strežnikov
Popravljanje ure:

  • odjemalec uro počasi sprotno popravlja
  • odjemalec uro takoj nastavi na novo vrednost
  • odjemalec zazna napako in ne naredi ničesar

Logične ure

Merjenje časa v dogodkih: ob dogodku algoritem določi logični časovni žig
Dogodek se je zgodil pred dogodkom :

  • in tečeta na istem procesu in se je zgodil pred
  • je pošiljanje sporočila in je prejemanje sporočila
  • obstaja dogodek , ki se je zgodil po in pred

Lamportova ura

Sinhronizacijska točka: pošiljanje sporočila - dogodki pred sinh. točko so se zgodili pred dogodki za sinh. točko

Vsak proces ima svoj števec dogodkov, ob vsakem dogodku števec++

  • pošiljanje sporočila: števec++, števec pripnemo sporočilu
  • prejem sporočila: števec=max(števec, števec_iz_sporočila), števec++
    Dva nepovezana dogodka imata lahko isti časovni žig ne moremo določiti vzročne povezanosti vseh dogodkov ali zaznati sočasnosti dogodkov

Vektorska ura

Vsak proces ima svojo tabelo števcev, ob vsakem dogodku števci[moj]++

  • pošiljanje sporočila: števci[moj]++, tabelo števcev pripnemo poročilu
  • prejem sporočila: za vse števce števci[i]=max(števci[i], števci_iz_sporočila[i]), števec[moj]++

se je zgodil pred , če:

  • vsi števci tabele istoležni števci tabele
  • vsaj en števcev tabele < istoležni števec tabele

Protokoli za razširanje sporočil

Dostava po najboljših močeh

Sporočilo na nivoju omrežne opreme (IP multicast) pošljemo vsem vozliščem
Zagotavlja, da sporočila dobijo vsa delujoča vozlišča

Zanesljiva dostava sporočil

Sporočilo pošljemo vsakemu procesu posebej, ob napaki ga pošljemo ponovno

Nestrpno razširjanje

Proces prvič prejme sporočilo prepošlje ga vsem ostalim procesom
Neučinkovito: vsak izmed procesov prejme enakih sporočil -

Razširanje z govoricami

Proces prvič prejme sporočilo prepošlje podanemu številu naključnim procesom
Verjetnost za zgrešitev zelo majhna, a

Vrstni red dostave

Razširjanje FIFO

Sporočila posameznega procesa morajo biti dostavljena v enakem vrstnem redu, kot so bila poslana (vrstni red sporočil različnih procesov je poljuben)

Popolnoma urejeno razširjanje

Sporočila so vsem procesom dostavljen v enakem vrstnem redu, ki pa je lahko poljuben

Popolnoma urejeno FIFO razširjanje

Zlitje popolnoma urejenega in FIFO razširjanja

Vzročno razširjanje

Sporočila različnih procesov morajo biti dostavljena v enakem vrstnem redu, kot so bila poslana (vrstni red sporočil v primeru istočasnega pošiljanja je poljuben)