OdpornoÅÄ na bÅÄdy bizantyjskie w systemach peer-to-peer - Instytut ...
OdpornoÅÄ na bÅÄdy bizantyjskie w systemach peer-to-peer - Instytut ...
OdpornoÅÄ na bÅÄdy bizantyjskie w systemach peer-to-peer - Instytut ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
68 Rozdział 4. Tolerowanie bizantyjskich uszkodzeń<br />
men<strong>to</strong>wano częściowo algorytm SC-ABC. OceanS<strong>to</strong>re zbudowane jest używając<br />
Tapestry - warstwy komunikacyjnej <strong>peer</strong>-<strong>to</strong>-<strong>peer</strong>, która zdaje się mieć słabszą<br />
wydajność w przekazywaniu komunikatów niż Pastry, jed<strong>na</strong>k gwarantuje większą<br />
niezawodność [LKRG03, ZHS + 03, RD01b]. Projek<strong>to</strong>wany system będzie<br />
realizował <strong>na</strong>stępujące, podstawowe operacje:<br />
insert (id, creds, object) - wprowadza obiekt identyfikowany przez globalnie<br />
unikalny identyfika<strong>to</strong>r id do systemu wraz z uprawnieniami creds 6 .<br />
lookup (id, creds, object*) - zwraca obiekt zidentyfikowany przez id weryfikując<br />
operację przy użyciu uprawnień creds.<br />
invoke (id, creds, operation, params, results*) - wywołuje operację <strong>na</strong><br />
obiekcie identyfikowanym przez id pod warunkiem poprawnej weryfikacji<br />
uprawnień creds. Wynik operacji zwracany jest w zmiennej results.<br />
remove (id, creds) - usuwa obiekt z systemu o identyfika<strong>to</strong>rze id pod<br />
warunkiem poprawnej identyfikacji uprawnień creds.<br />
Podział <strong>na</strong> wyżej wymienione me<strong>to</strong>dy wynika z ich różnorakiej obsługi przez<br />
grupę replikującą. Operacja insert rozpoczy<strong>na</strong> działanie pro<strong>to</strong>kołu <strong>na</strong> rzecz<br />
konkretnego obiektu. Usługa powin<strong>na</strong> stać się dostęp<strong>na</strong>, gdy będzie wiadomo,<br />
że obiekt został umieszczony w przy<strong>na</strong>jmniej 2f +1 replikach. Na rysunku<br />
4.3 pokazano różne możliwe typy zachowania klienta i grupy replik podczas<br />
wprowadzania obiektu. W pierwszym przypadku (a) klient stara się wprowadzić<br />
obiekt do systemu, jed<strong>na</strong>k replika, do której wysłał zlecenie jest nieuczciwa i nie<br />
wypycha kopii obiektu do innych replik; (b) klient rozsyła wiadomość do kilku<br />
replik i czeka <strong>na</strong> odpowiedzi; (c) klient ponownie wysyła komunikat do jednej<br />
z replik i czeka <strong>na</strong> odpowiedź od różnych replik, gdy otrzymają one obiekt.<br />
Gdy obiekt zostanie poprawnie umieszczony w systemie, <strong>to</strong> grupa replik<br />
może zacząć przetwarzanie <strong>na</strong>pływających zleceń. Rozpatrując operację lookup,<br />
łatwo moż<strong>na</strong> zauważyć, że nie modyfikuje o<strong>na</strong> stanu obiektu i może zostać obsłużo<strong>na</strong><br />
<strong>na</strong>wet przez jedną replikę, jed<strong>na</strong>k wymaga również rozpatrzenia kilku<br />
przypadków, gdyż klient może np. wymagać potwierdzenia stanu odebranego<br />
obiektu od większości replik w grupie. Wywołanie invoke jest operacją modyfikującą<br />
stan obiektu, dlatego konieczne jest ustalenie kolejności realizacji zleceń<br />
przez repliki i zatwierdzenie stanu końcowego. Tu niezbędnym jest wprowadzenie<br />
pro<strong>to</strong>kołu uzgadniającego stan. Zakończenie działania pro<strong>to</strong>kołu <strong>na</strong> rzecz<br />
obiektu zachodzi, gdy zostanie odebrane zlecenie remove. Usunięcie obiektu<br />
6 Mechanizm zarządzania i weryfikacji uprawnień został <strong>na</strong>szkicowany w <strong>na</strong>stępnym rozdziale,<br />
który dotyczy projektu systemu Pas<strong>to</strong>r. Na chwilę obecną wystarczy założyć, że uprawnienia<br />
jednoz<strong>na</strong>cznie określają, k<strong>to</strong> i jakie operacje może wyko<strong>na</strong>ć.