You are on page 1of 35

Programowanie rozproszone

Semestr letni 2013/2014


Piotr Kalita
kalita@ii.uj.edu.pl
Wykad 1

Plan kursu
1. Algorytmy rozproszone (ok. 4/5 wykadow).

2. Wybrane biblioteki (dla jzyka Ruby) i narzdzia do programowania


rozproszonego (ok. 4/5 wykadw).
3. Wzorce projektowe programowania rozproszonego (2 wykady)
3. Cloud Computing (MapReduce, Hadoop, Google App Engine, Amazon
Web Services) (ok. 4/5 wykadw).

Literatura (cz I wykadu)


A.D. Kshemkalyani, M.
Singhal, Distributed
Computing, Principles,
Algorithms and
Systems, Cambridge
University Press, 2008

Literatura (cz I wykadu) c.d.

Wiley Interscience 2007

System rozproszony
Definicja (Kshemkalyani): zbir niezalenych
autonomicznych jednostek wsppracujcych ze
sob dla osignicia celu, ktrego nie rozwizaaby
samodzielnie adna z nich.

Inne definicje
Leslie Lamport: wiesz, e uywasz systemu
rozproszonego gdy awaria komputera o ktrym nigdy
nie syszae sprawia, e nie moesz pracowa

Tannenbaum: Zbir niezalenych komputerw ktre


wydaj si uytkownikowi stanowi jeden spjny
komputer.

Przez co jest scharakteryzowany


system rozproszony??
1. Brak wsplnego zegara fizycznego.
2. Brak wsplnej pamici (do komunikacji uywana jest
wymiana komunikatw, lub technologia wyszej
warstwy korzystajca z wymiany komunikatw).
3. Rozproszenie geograficzne.
4. Niejednorodno (np. rne procesory, rny sprzt,
rne systemy operacyjne).

Procesory, sie komunikacyjna

Po co uywa systemu
rozproszonego?
1. Zadania maj rozproszono w swojej naturze (np
przelew z banku do banku).
2. Zasoby (np. dane, urzdzenia, biblioteki) nie mog
by zreplikowane w wielu miejscach (koszty). Nie
mog tez by w jednym miejscu (obcienie).
3. Rozproszono zwiksza dostpno i
niezawodno.
4. Zwikszony stosunek wydajno/koszt.

Podstawowe operacje w
systemie rozproszonym
Send() wysanie komunikatu, potrzeba poda odbiorc
i sam komunikat,
Receive() odebranie komunikatu, mona poda
nadawc, komunikat jest zwracany,
Send buforowane kopiuje komunikat z pamici
procesu do pamici jdra, nastpnie jest on wysyany.
Send niebuforowane wysya komunikat bezporednio
z pamici procesu.
Receive buforowane wymagany jest bufor w jdrze bo
komunikat moe przyby bez receive,

Send i receive c.d.


Send moe by synchroniczne (czeka na wywoanie i
zakoczenie receive odbiorcy handshake) lub
asynchroniczne (wysya komunikat i nie czeka na
odebranie, czeka tylko na skopiowanie z bufora
procesu do bufora w jdrze).
Operacja receive musi by sychroniczna (handshake
z send nadawcy).
Obie operacje mog by blokujce (wykonanie ich
zawiesza proces/wtek) lub nieblokujce (zwracaj
uchwyt, ktry mona wykorzysta do czekania).

System rozproszony
System bdziemy reprezentowa jako graf
G=(V,E)
V zbir wzw obliczeniowych
E zbir krawdzi, krawd midzy dwoma wzami
oznacza, e jest bezporednia moliwo komunikacji
midzy nimi,
Bdziemy zakada, e graf jest nieskierowany, tzn.
kady kana komunikacyjny jest dwukierunkowy.
Bdziemy rwnie zakada, e graf jest spjny.
Taki graf nazywany jest topologi systemu
rozproszonego.

Oznaczenia
n(G) =|V| - ilo wzw
m(G) = |E| - ilo krawdzi
d(G) rednica grafu czyli najwiksza moliwa
dugo najkrtszej cieki midzy dwoma
wierzchokami
N(x) zbir wzw poczonych krawdzi z
wzem x (neighborhood). Wze x zna swoich
ssiadw. Moe po nich iterowa (np. celem
wysyania do nich wiadomoci).

Status, zdarzenie, akcja


Kady element V (oznaczymy go x) ma swj status.
Status wza x traktujemy jako jego zmienn lokaln
(mona j dowolnie definiowa, moe ona ulega
zmianie w trakcie dziaania algorytmu).
W algorytmach bdziemy uywa notacji:
status * zdarzenie -> akcja
Zdarzenie to np. przybycie komunikatu. Zdarzenie
startowe bdzie oznaczane symbolem i.
Akcja to dowolna linia kodu (moe by pusta akcja
czyli nil).

Broadcast
Jeden wze obliczeniowy x ma komunikat, ktry chce
rozesa do wszystkich wzw. Nie moe zrobi tego
bezporednio bo zna dostp tylko do swoich ssiadw
N(x). Ci ssiedzi mog z kolei wysa komunikat dalej
itd.
Zakadamy, e mamy dwa moliwe statusy:
inicjator, pozostay. Pocztkowo jeden wze (ten ktry
wysya wiadomo) ma status inicjatora.

Broadcast: podejcie 1.
inicjator * i -> {for y in N(x) send(message, y)}
pozostay * i -> nil
inicjator * receive(message) -> nil
pozostay * receive(message) -> {for y in N(x)
send(message,y)}

Broadcast: krytyka podejcia 1


Inicjatorem jest
x
Algorytm nigdy
si nie
zakoczy na
wzach y i z.

Broadcast: podejcie 2.
Wprowadzamy trzeci status (done). Pocztkowo mamy
jednego inicjatora i wszystkich pozostaych.
inicjator * i -> {status = done;
for y in N(x)
send(message, y);}
pozostay * i -> nil
done * i -> //nie zdarzy si
inicjator * receive(message) -> //te si nie zdarzy
pozostay * receive(message) -> { status = done;
for y in N(x)
send(message,y);}
done * receive(message) -> nil

Broadcast: podejcie 3
inicjator * i -> {status = done;
for y in N(x)
send(message, y);}
pozostay * i -> nil
done * i -> //nie zdarzy si
inicjator * receive(message) -> //te si nie zdarzy
pozostay * receive(message) -> { status = done;
for y in N(x) - sender
send(message,y);}
done * receive(message) -> nil

Diagram czas - zdarzenie

Dugo najduszej cieki na takim diagramie to zoono czasowa algorytmu (bdziemy j oznacza
przez T), a ilo strzaek, to ilo komunikatw (bdziemy j oznacza przez M).

Zoono algorytmu broadcast 3


Dla grafu z lewej mamy:
T=2
M=4
Oglnie
M=2mn+1
T <= d+1

System rozproszony: wiedza


p fakt
p LK(x,t) fakt p jest znany w wle x w chwili t
(local knowledge)
W zbir wzw W E
p IK(W,t) iff istnieje x W taki, e p LK(x,t)
p EK(W,t) iff dla kadego x W mamy p LK(x,t)
Implicit Knowledge, Explicit Knowledge

Wiedza wsplna
Common Knowledge
p CK(W,t) iff dla kadego i = 1 .. zachodzi pi EK(W,t)
gdzie p1 = p
p2 = [p1 EK(W,t)]
pn+1 = [pn EK(W,t)]
p1 fakt p
p2 wszyscy wiedz, e p
p3 wszyscy wiedz, e wszyscy wiedz, e p
. (po skoczonej ale by moe duej iloci nie wnosi ju

Problem cudzoocych
ludoercw cz 1
W pewnej spoecznoci ludoercw skadajcej si z 44
maestw zdarzaj si czasem ony, ktre cudzoo.
Jeli ona cudzooy to wiedz o tym wszyscy mczyni
poza jej mem.
Jeli pewnego dnia m dowie si, e jego ona
cudzooy, zabija j nastpnego dnia rano.

Problem cudzoocych
ludoercw cz 2
Do naszej spoecznoci ludoercw przyby misjonarz
ktry zosta natychmiast ugotowany i zjedzony.
Jego ostatnie sowa brzmiay: wrd was, s kobiety,
ktre cudzoo!!.
Po 44 dniach wszyscy ludoercy zabili swoje ony.
Co si stao? Ile on cudzooyo.

Rozumowanie indukcyjne
(wzgldem iloci cudzoocych
on)
k = 1 zdradzony m zabija on w pierwszy dzie
Zaoenie: dla i = 1k jeli dokadnie i mw jest
zdradzanych to kady z nich zabija on w i-ty dzie.
Teza: zaoenie zachodzi dla i = 1 k+1
Dowd ..

Wake-up problem
W systemach rozproszonych moemy spotka si z
nastpujcym problemem:
wrd n wzw mamy pewien podzbir wzw
aktywnych, pozostae wzy s upione; w obliczeniu
maj wzi udzia wszystkie wzy wic te aktywne
powinny wysa komunikaty do tych upionych;
wze aktywny nie wie ile poza nim jest wzw
aktywnych a ile upionych; wie tylko e sam jest
aktywny; na koniec aden wze nie moe by
upiony

Broadcast a wake-up

Algorytm analogiczny jak dla


broadcast
active * i -> { for y in N(x)
send(message, y);}
asleep * i -> nil //pi wic nic nie zrobi
active * receive(message) -> nil
asleep * receive(message) -> { status = active;
for y in N(x) - sender
send(message,y);}
2m >= M >=2m n + 1

T<=d+1

Traversal problem
Mamy komunikat zwany tokenem. Token
pocztkowo znajduje si w jednym, ustalonym
wle. Celem algorytmu jest doprowadzenie do tego,
by token odwiedzi wszystkie wzy.
Algorytm bazuje na algorytmie DFS.

Algorytm traversal-DFS: idea


1. Wze x po otrzymaniu tokena zapamituje
ktry z ssiadw go przysa. Robi zbir
pozostaych ssiadw i wysya token do
pierwszego z nich (nazwijmy go y).
2. Jeli y by ju odwiedzony, to odsya token do x.
Jeli nie, to wywouje procedur rekurencyjnie.
3. Wze x wysya token do kolejnych ssiadw.
4. Po wyczerpaniu ssiadw wze x odsya token
do tego, od kogo go sam otrzyma.

Traversal - DFS

Traversal DFS II
M=T=2m

Traversal DFS - poprawa


Mona poprawi algorytm: wze po otrzymaniu tokena
wysya do wszystkich ssiadw komunikat Visited.
Nastpnie czeka a od kadego ssiada otrzyma
potwierdzenie Ack. Wysya token tylko do tych
sasiadw od ktrych nie otrzyma wczeniej Visited.
Czas Ack i Visited wynosi w sumie 2 bo komunikacja
odbywa si wsplbienie.
W ten sposb nie bdzie komunikatw Backedge.
T = 2n + 2(n -1) (dlaczego?)

M = 4m

You might also like