Magazynowanie obiektów jako usługa w chmurze

Ukończone

Teraz przyjrzymy się specjalnej klasie systemów pamięci masowej, które projektuje się jako usługę w chmurze udostępnianą przez Internet. W kontekście naszej dotychczasowej dyskusji dotyczącej magazynów w chmurze, magazyny obiektów w chmurach mogą być traktowane jako specjalny przypadek magazynów z kluczami-wartościami, udostępnianych jako usługa przez Internet.

Zapewnianie klientom magazynów jako usług przez Internet wymaga abstrakcji źródłowych informacji o implementacji magazynu oraz udostępnienia prostego i schludnego interfejsu, który może być używany w aplikacjach. Firmy stosujące rozwiązania w chmurze coraz częściej wybierają magazyny z modelem obiektów w chmurze.

Dzięki koncepcji obiektów systemy magazynów oparte na obiektach abstrahują istniejące podejście w systemie plików na wyższy poziom. Systemy magazynów oparte na obiektach są zazwyczaj nakładane na istniejące systemy plików. W systemach magazynów opartych na obiektach nie istnieje pojęcie hierarchii. Zamiast tego stosowane jest płaskie środowisko danych.

Obiekt może być traktowany jako kontener ogólny, który może przechowywać dowolny typ informacji. Projektowanie interfejsów dla takich dowolnych danych może być trudne, ale w języku magazynów podstawowy zestaw operacji można łatwo zdefiniować dla dowolnego obiektu. Są to operacje tworzenia, odczytu, aktualizacji i usuwania (CRUD), które są zwykle udostępniane za pośrednictwem pewnego interfejsu API, do którego można uzyskać dostęp za pośrednictwem protokołu HTTP lub innych protokołów sieciowych wykorzystujących wywołania w stylu REST lub SOAP.

REST

Representational State Transfer (REST) opiera się na bezstanowym i możliwym do buforowania protokole komunikacyjnym klient-serwer i jest zazwyczaj wdrażany przy użyciu protokołu HTTP. Protokół bezstanowy traktuje każde żądanie jako niezależną operację, a każda komunikacja pomiędzy klientem a serwerem jest traktowana jako niezależna para żądań i odpowiedzi.

REST to stylu architektury projektowania aplikacji sieciowych i nie odnosi się do pojedynczego protokołu. REST to strategia projektowania komunikacji pomiędzy różnymi jednostkami w aplikacji sieciowej. Chodzi w niej o to, aby używać prostego mechanizmu zamiast CORBA, WSDL czy RPC w celu łączenia i przesyłania informacji pomiędzy maszynami w sieci. Każdy interfejs korzystający z zasad REST jest nazywany interfejsem RESTful.

Interfejs RESTful używa żądań HTTP do publikowania (tworzenia i/lub aktualizowania), odczytywania (wykonywania zapytań i uzyskiwania informacji) oraz usuwania danych. Interfejsu RESTful można więc używać w przypadku operacji CRUD.

Interfejs RESTful składa się z następujących składników:

  • Identyfikatora Uniform Resource Identifier (URI), takiego jak adres URL HTTP, za pośrednictwem którego można uzyskać dostęp do usługi.
  • Typu nośnika internetowego do danych obsługiwanych przez usługę (zazwyczaj XML lub JSON).
  • Zestawu operacji obsługiwanych przez usługę sieci Web przy użyciu metod HTTP (GET, PUT, POST i DELETE).
  • Interfejsu API opartego na protokole HTTP.

Więc program, który musi nawiązać połączenie z usługą za pomocą interfejsu RESTful, może używać standardowych żądań HTTP GET, PUT, POST i DELETE. Wkrótce omówimy przykład żądania REST.

Główne zalety REST są następujące:

  • Niezależne od platformy podejście, które doskonale nadaje się do rozwiązań internetowych.
  • Interfejs niezależny od języka, ponieważ wszystkie instrukcje są przesyłane przez protokół HTTP tak, aby na przykład klient C# mógł komunikować się z serwerem Python.
  • Komunikacja oparta na standardach, ponieważ jest uruchamiana w oparciu o protokół HTTP.
  • Działa w obecności zapór, tak długo, jak ruch HTTP lub HTTPS nie jest filtrowany.

Aby dowiedzieć się więcej na temat używania interfejsu REST do uzyskiwania dostępu do danych przechowywanych w chmurze i zarządzania nimi, zobacz Projekt internetowego interfejsu API RESTful.

Systemy magazynowania obiektów

Usługa Azure Blob Storage jest przykładem magazynu opartego na obiektach w chmurze. Blob Storage umożliwia użytkownikom przechowywanie obiektów w kontenerach. Każdy obiekt można utworzyć, odczytać i usunąć. Pomimo że w modelu Blob Storage nie ma żadnej natywnej metody aktualizacja-obiekt, można w nim usunąć i ponownie utworzyć cały obiekt, podobnie jak w przypadku zastąpienia pliku.

Oto przykład wywołania HTTP RESTful do usługi Azure Blob Storage w celu utworzenia kontenera o nazwie mycontainer. Wywołanie HTTP zawiera informacje o autoryzacji dające klientowi dostęp do zasobnika.

PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container HTTP/1.1  
  
Request Headers:  
x-ms-version: 2011-08-18  
x-ms-date: Sun, 25 Sep 2011 22:50:32 GMT  
x-ms-meta-Name: StorageSample  
Authorization: SharedKey myaccount:Z5043vY9MesKNh0PNtksNc9nbXSSqGHueE00JdjidOQ=

Usługa Blob Storage może przetworzyć żądanie i wyśle z powrotem odpowiedź HTTP podobną do następującego przykładu:

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
Date: Sun, 25 Sep 2011 23:00:12 GMT  
ETag: "0x8CB14C3E29B7E82"  
Last-Modified: Sun, 25 Sep 2011 23:00:06 GMT  
x-ms-version: 2011-08-18  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

W odpowiedzi platforma Azure potwierdziła żądanie, co oznacza, że żądanie powiodło się (z komunikatem „201 Created”) i zwróciło pewne informacje dotyczące żądania.

Aby uzyskać informacje na temat korzystania z usługi REST w usłudze Azure Blob Storage, zobacz Interfejs API REST usługi Blob Storage.

Standardy magazynu obiektów w chmurze: CDMI

Brak wspólnego standardu to problem dotykający wiele magazynów obiektów w chmurze.

Stowarzyszenie Storage Network Industry Association (SNIA) promuje otwarty standardu dotyczący obiektów w chmurze o nazwie Cloud Data Management Interface (CDMI).

CDMI.

Rysunek 22. CDMI

CDMI definiuje obiekty i kontenery danych z oznakowanymi metadanymi (jako pary kluczy-wartości) i korzysta z interfejsów RESTful. Formatem wymiany danych jest JSON. CDMI może służyć do uzyskiwania dostępu do danych i zarządzania nimi w chmurze magazynu (rysunek 22). Przykład interakcji klienta z chmurą magazynową przy użyciu CDMI przedstawiono na rysunku 23.

CDMI client interacting with a CDMI storage cloud.

Rysunek 23. Klient CDMI współdziałający z chmurą magazynu CDMI

Klient CDMI może w wydawać żądania za pośrednictwem protokołu HTTPS. Atrybut MimeType wskazuje typ zasobu CDMI, z którym klient wchodzi w interakcję (obiekt, kontener) i zwraca standardowe kody stanu HTTP, wskazujące stan żądania.

Model CDMI przedstawiono na rysunku 24. Zasób CDMI istnieje w lokalizacji głównej, wskazanej przez główny identyfikator URI: https://<offering>. Przykład zawiera dwa kontenery, A i B, zawierające po jednym obiekcie. Należy pamiętać, że każda jednostka CDMI może obsługiwać metadane, na co wskazują tagi kluczy-wartości skojarzone z każdą jednostką.

CDMI data model.

Rysunek 24. Model danych CDMI

Ponadto CDMI obsługuje następujące typy zasobów:

  • cdmi-capability: specjalna jednostka, która opisuje możliwości tego konkretnego magazynu w chmurze. Ta jednostka jest ważna i może służyć do odnajdywania możliwości chmury (na przykład tworzenia kopii zapasowych i replikacji).
  • cdmi-domain: umożliwia tworzenie domen (na przykład grup użytkowników z uprawnieniami dostępu do obiektów).
  • cdmi-queue: umożliwia tworzenie kolejek obiektów, które działają w pierwszej kolejności na początku (FIFO). Aplikacje mogą używać takich kolejek do wdrażania systemów powiadomień lub komunikatów.

Usługa CDMI oferuje następujące korzyści:

  • Niezależna od dostawcy specyfikacja systemu magazynowania obiektów w chmurze pozwala na prostsze migrowanie danych między chmurami.
  • Umożliwia komunikację równorzędną między chmurami. Jest to pojęcie, zgodnie z którym można łączyć zasoby z różnych chmur, aby umożliwić bezproblemowe udostępnianie danych między chmurami.
  • Jest zgodny z takimi obowiązującymi standardami, jak interfejsy RESTful, w celu dostępu do danych. Może też działać z wieloma źródłowymi abstrakcjami magazynów, na przykład wspólnymi i sieciowymi systemami plików.
  • Jest to dopracowany standard z implementacją referencyjną i standaryzacją ISO.

Wadą CDMI jest to, że jego wdrożenie jest jeszcze niewidoczne. Standard CDMI jest wspierany przez wiele firm magazyny danych, ale większość dostawców jeszcze nie obsługuje go oficjalnie, a jego powodzenie jest jeszcze nieznane.