infoshare 2014: marek landowski, architektura swift obiektowego przechowywania danych
Post on 21-Oct-2014
185 views
DESCRIPTION
TRANSCRIPT
‘Architektura SWIFT obiektowego przechowywania danych’
Marek Landowski
SII
Twierdzenie Brewera
Stanowi, iż w rozproszonych systemach przetwarzania danych nie jest możliwe jednoczesne utrzymanie trzech właściwości:• spójności (consistency) oznaczającej że wszystkie węzły mają
jednoczesny dostęp do jednakowych danych,• dostępności (availability) oznaczającej, że każde żądanie doczeka się
odpowiedzi,• odporności na rozbicie (partition tolerance) oznaczającej, że system
potrafi działać pomimo utraty części komunikatów lub uszkodzenia niektórych węzłów.
Dlaczego SWIFT?
Wybrane cechy SWIFTa
• 5% rozwiązania wchodzącego w OpenStack,• Dostęp do danych jest za pomoca protokołu HTTP (REST API) • Obiekty sa zapisywane do kilku lokalizacji, gdzie software odpowiada
za replikację. Gdy zdarzy się, że węzał przestanie działać, automatycznie tworzona jest kopia utraconych danych z wersji przechowywanych na innych węzłach,
• SWIFT jest skalowalny horyzontalnie (na poziomie proxy serwerów oraz na poziomie węzłów przechowujących dane),
• Nie wymaga dedykowanego sprzętu.
OpenStack
Działanie SWIFTa na przykładzie uploadu
ZONE 3ZONE 2ZONE 1
StorageServer
StorageServer
StorageServer
StorageServer
StorageServer
StorageServer
StorageServer
StorageServer
StorageServer
REST API Proxy Server
Ring
Uploadobject
Proxy Server
• Odpowiedzialny za komunikację z resztą architektury SWIFTa,• Zapis lub odczyt każdorazowo przechodzi przez proxy server, który
komunikuje się z pierścieniem w celu odnalezienia fizycznej lokalizacji,
• Gdy węzeł do którego powinien być wykonany zapis nie jest dostępny, proxy server odpyta pierścień w celu ustalenia nowej lokalizacji dla obiektu,
• W rozwiązaniu możliwe jest zastosowanie wielu proxy serwerów, jednakże potrzeby jest wtedy dodatkowy element w architekturze, który będzie wybierał do którego proxy ma być skierowane zapytanie.
Storage server
• Węzły przechowują partycje przypisane do róznych lokalizacji,
• Account oraz container to indywidualne bazy danych SQLite, które są rozproszone w SWIFTcie,
• Baza danych account zawiera listę kontenerów, natomiast baza danych container zawiera listę obiektów,
PA
RTI
TIO
N Accountdatabase
Containerdatabase
Containerdatabase
Object
Object
Object
Object
ObjectContainerdatabase
Ring
• Jest odpowiedzialny za mapowanie pomiędzy nazwami danych przechowywanych w SWIFTcie a ich fizyczna lokalizacją w klastrze,
• Każda partycja jest domyślnie replikowana 3 krotnie,• Gregory Holt (http://greg.brim.net/page/building_a_consistent_hashing_ring.html)
Partition
Partition
Partition
Ring
StorageServer
Horizon
REST API GET Container
REST API GET Object