JPaxos

Transkrypt

JPaxos
JPaxos
Java library for state machine replication
Przygotowane przez
Jan
Tomasz
We współpracy z
Nuno
Kierownik zadania
dr. hab Paweł T.
Kończak
Żurkowski
Santos (EPFL)
Wojciechowski
Plan prezentacji
1
Replikacja
2
JPaxos
3
Wymagania
4
API
5
DEMO
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
2 / 31
Replikacja
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
3 / 31
Replikacja
Replikować!
Co replikować?
Po co replikować?
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
4 / 31
Co replikować
Jak wygląda typowa aplikacja?
Czy da się zreplikować?
Użytkownik
× Nie
używa
Komputera (urządzenie)
× Nie
uruchamia
Aplikacji lokalnej
× Nie
(korzysta z)
Usługa / aplikacja zdalna
Jan Kończak, Tomasz Żurkowski ()
XTak
JPaxos
12 kwietnia 2011
5 / 31
Po co replikować
Możliwe cele
Tolerancja błędów
Trwałość danych
Replikacja
Lepsza wydajność
Większa dostępność
Oczywiście...
Jednocześnie nie da się spełnić wszystkich
“wybierz sobie dwa...”
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
6 / 31
Podejścia do replikacjii
Replikacja
Aktywna
Pasywna
I
Każda replika wykonuje
każdą operacje
I
Jedna replika wykonuje
operacje
I
Transparentna
I
Świadoma
Jan Kończak, Tomasz Żurkowski ()
Klient
Klient
Replika 0
Primary
Replika 1
Backup
JPaxos
12 kwietnia 2011
7 / 31
Operacje zapisu i odczytu
Operacja write
Wpływa na następne operacje
Operacja read
Nie zmienia stanu repliki
Dlaczego lubimy operacje read
Nie trzeba ich uzgadniać
Mogą być wykonane tylko na jednej replice
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
8 / 31
Problemy!
Spójność
O co chodzi?
Punkt widzenia użytkownika
Korzystam z aplikacji.
Chcę dostawać logiczne wyniki!
Główna cecha spójności
W Y D AJNO
Jan Kończak, Tomasz Żurkowski ()
ŚĆ
JPaxos
SP
ÓJ
NO
ŚĆ
12 kwietnia 2011
9 / 31
Spójność - modele, przykład
Przykładowy podział na modele spójności
atomowa (liniowość) czas rzeczywisty
sekwencyjna globalna kolejność (silna spójność)
przyczynowa uporządkowanie przyczynowe
procesorowa Połączenie FIFO i koherentności
FIFO (PRAM) kolejność z jednego źródła (od klienta)
podręczna (koherentna) kolejność w ramach zasobu
Praktyczne przykłady
Czy na sali jest flipchart?
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
10 / 31
Silna spójność
Silna spójność
Gwarantuje zachowanie równoważne sekwencyjnemu wykonaniu
Cechy
I
Nie ma potrzeby rollbacku ani kompensacji
I
Programista nie musi się przejmować problemami braku spójności
I
Wymaga dostępności większości replik
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
11 / 31
Awarie
Awarie się zdarzają. Oczywiście w najmniej odpowiednim momencie.
Miękkie? Twarde? Bizantyjskie? Jednolite?
Czy sprzęt może ulec sprzęt?
Czy proces może się zachowywać niepoprawnie?
Czy proces może się zachowywać złośliwie?
Ile awarii można przeżyć?
Równoczesnych?
Następujących po sobie?
Automatyczne odtwarzanie
System może sam wrócić do sprawności
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
12 / 31
IT-SOA
O projekcie
Projekt dotyczy współczesnych technologii informacyjnych opartych
na paradygmacie SOA (ang. Service Oriented Architecture).
Projekty
I
I
I
I
I
JPaxos - Zreplikowana maszyna stanów
PaxosSTM - Rozproszona pamięć transakcyjna
RESTGroup - Komunikacja grupowa dla usług sieciowych REST
MProxy - Modularny serwer pośredniczący
FADE - Failure Detection Service
Więcej informacji
http://www.soa.edu.pl
http://www.it-soa.pl
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
13 / 31
LSR @ EPFL
Summer@EPFL
Praktyki letnie dla studentów - na uczelni EPFL (École Polytechnique
Fédérale de Lausanne)
LSR
LSR oznacza Laboratorium Systemów Rozproszonych (Laboratoire de
Systèmes Répartis).
Współpraca z:
André Schiper
Nuno Santos
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
14 / 31
JPaxos
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
15 / 31
Model systemu
Żądanie, odpowiedź i zrzut stanu traktowane są jako byte[]
Typowa usługa
Usługa zreplikowana przez JPaxos
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
16 / 31
Przykład użycia
Usługa Echo
klient wysyła ciąg znaków
usługa zamienia małe litery na duże
usługa odpowiada klientowi
Demonstracja
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
17 / 31
Replikacja a Konsensus
Konsensus?
Każdy z procesów wybiera tę samą wartość spośród proponowanych
przez wszystkie procesy
Replikacja → total order reliable broadcast
Aby zrealizować replikację, wystarczy mieć dostęp do
uporządkowanego b-castu
Total order reliable broadcast → konsensus
Aby zrealizować uporządkowany b-cast, wystarczy rozwiązać
konsensus
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
18 / 31
ck
s)
Paxos
ut
ed
Ri
ng
Pa
x
os
(d
ist
rib
le
m
2000
og
Go
Pa
rtt
Pa
xo
s
im
e
ad
e
Pa
rli
m
sim
pl
e
en
t
lo
Krótka historia
2005
2010
Kto zainwestował w implementację Paxos
I
Google – Chubby distributed lock service
I
IBM – SAN Volume Controller
I
Microsoft - Autopilot cluster management (Bing)
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
19 / 31
Wymagania
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
20 / 31
Wymagania
Środowisko
Java JRE 1.5 or later
Determinizm
Usługa musi zaczynając od tego samego stanu początkowego
generować na dany ciąg zapytań zawsze identyczne odpowiedzi
Grupy statyczne
Lista replik musi być znana podczas uruchamiania systemu
Nie jest możliwe zmienianie liczby ani położenia replik
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
21 / 31
Zapis stanu (snapshotting)
Motywacja
Jak uaktualnić stan repliki R3? Wybór:
I
Trzymać wszystkie decyzje
I
Zapewnić mechanizm transferu stanu
Wymaganie #3
Usługa musi:
I
Przekazywać regularnie zrzut stanu
I
Umieć odtworzyć się ze zrzutu stanu (innej repliki)
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
22 / 31
Decyzja o poziomie odporności na awarie
Dostępność
Usługa jest dostępna wtedy i tylko wtedy gdy większość replik jest
poprawna
Kompromis wydajność – tolerowane awarie
Istnieje możliwość tolerowania awarii nawet wszystkich replik kosztem
znacznie zmniejszonej wydajności
Wymaganie #4
Użytkownik musi wybrać czy system ma tolerować awarię wszystkich
replik i działać wolno, czy ma działać szybko tolerując awarię nie
więcej niż połowy replik
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
23 / 31
Gwarancje maszyny stanów
Żądania (operacje) wysłane przez klientów (użytkowników) będą
wykonane na każdej replice w tej samej kolejności
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
24 / 31
API
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
25 / 31
API (1)
Client
Client class
void connect()
byte[] execute(byte[])
SerializableClient class
void connect()
Object execute(Object)
Replica
Replica class
Replica(Configuration config, int localId,
Service service)
void start()
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
26 / 31
API (2)
SimplifiedService class
I
I
I
byte[] execute (byte[] value)
byte[] makeSnapshot ()
void updateToSnapshot (byte[] snapshot)
SerializableService class (extends SimplifiedService)
I
I
I
Object execute (Object value)
Object makeSnapshot ()
void updateToSnapshot (Object snapshot)
AbstractService class (implements Service)
I
I
I
I
I
I
byte[] execute (byte[] value, int executeSeqNo)
void askForSnapshot (int lastSnapshotNextRequestSeqNo)
void forceSnapshot (int lastSnapshotNextRequestSeqNo)
void fireSnapshotMade(int nextRequestSeqNo, byte[] snapshot,
byte[] response)
void updateToSnapshot (int requestSeqNo, byte[] snapshot)
void recoveryFinished()
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
27 / 31
API (3)
Plik konfiguracyjny paxos.properties
process.0 = localhost:2021:3001
process.1 = localhost:2022:3002
process.2 = localhost:2023:3003
CrashModel = EpochSS
LogPath = jpaxosLogs
WindowSize = 2
BatchSize = 65507
MaxBatchDelay = 10
Network = TCP
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
28 / 31
DEMO
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
29 / 31
Pytania i dyskusja
http://www.it-soa.pl/jpaxos
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
30 / 31
Kontakt
Kontakt
Jan Kończak - [email protected]
Tomasz Żurkowski - [email protected]
Download
http://www.it-soa.pl/download/resp/jpaxos/
Jan Kończak, Tomasz Żurkowski ()
JPaxos
12 kwietnia 2011
31 / 31

Podobne dokumenty