SOA, WebServices i systemy gridowe

Transkrypt

SOA, WebServices i systemy gridowe
Sieciowe programowanie rozproszone – SOA, WebServices i systemy gridowe
Krzysztof Banaś
Systemy rozproszone
1
Technologie WWW
➔
Nowszymi sposobami organizacji i technologiami w dziedzinie obliczeń rozproszonych (będącymi wciąż w fazie rozwoju) są:



architektura usługowa (Service Oriented Architecture ­ SOA) – sposób organizacji systemów rozproszonych, w którym rozważa się każdy system poprzez pryzmat świadczonych przez niego usług
Web Services – technologia przetwarzania rozproszonego oparta o technologie WWW
systemy gridowe – systemy, w których rozproszone zasoby udostępniane są w sposób niezależny od fizycznej realizacji
Krzysztof Banaś
Systemy rozproszone
2
SOA – Service Oriented Architecture
➔
Termin “Service Oriented Architecture” jest określeniem architektury systemów rozproszonych, w których wyróżnia się:



➔
➔
usługobiorcę – klienta korzystającego z usług
dostawcę usług – usługą jest realizacja pewnego przetwarzania z wykorzystaniem dostarczonych danych
rejestr usług – miejsce, gdzie klient uzyskuje informacje o potrzebnych mu usługach
Podstawą SOA jest wykorzystanie przesyłania komunikatów do wymiany informacji między uczestnikami przetwarzania
Architektury usługowe odróżnia się od architektur obiektowych i architektur komponentowych
Krzysztof Banaś
Systemy rozproszone
3
SOA – Service Oriented Architecture
➔
➔
Dostarczając usługę w ramach architektury usługowej należy w ogólnie znanym i dostępnym rejestrze dokonać zgłoszenia:

miejsca dostępności usługi

sposobu korzystania z usługi
Klient chcący korzystać z określonej usługi:

wyszukuje w ogólnie znanych i dostępnych rejestrach opisy świadczonych usług

wybiera najbardziej mu odpowiadającą

kontaktuje się z serwerem usługi w celu realizacji przetwarzania Krzysztof Banaś
Systemy rozproszone
4
SOA – Service Oriented Architecture
➔
➔
➔
Sposób korzystania z usługi jest równoważny interfejsowi oprogramowania realizującego usługę
Interfejs taki powinien być napisany w sposób niezależny od:

języka programowania

systemu operacyjnego

sprzętu realizującego obliczenia
Sposób powiązania usługodawcy z usługobiorcą za pomocą tak określonych interfejsów określa się jako luźny (loosely coupled)
Krzysztof Banaś
Systemy rozproszone
5
SOA – Service Oriented Architecture
➔
➔
➔
Usługi zgłoszone w systemach SOA mogą być jednocześnie klientami innych usług
W ten sposób można tworzyć złożone schematy przetwarzania (workflows) składające się z wielu, odpowiednio zorganizowanych usług
Architektura usługowa (SOA) jest w tym ujęciu przeciwstawiona architekturze komponentowej (CBD)



ten sam cel ­ ponowne wykorzystanie oprogramowania
SOA ­ realizacja za pomocą organizacji usług sieciowych
CBD ­ lokalne komponowanie dostarczonych fragmentów oprogramowania Krzysztof Banaś
Systemy rozproszone
6
SOA – Service Oriented Architecture
➔
Problemami, które musza być rozwiązane przy realizacji systemów SOA są:



wydajność (ale wydajność komunikacji rośnie w ostatnich latach szybciej niż wydajność przetwarzania przez systemy komputerowe)
niezawodność bezpieczeństwo (tutaj pomocne może być wykorzystanie technologii WWW, w których od lat próbuje się rozwiązać problemy bezpieczeństwa) Krzysztof Banaś
Systemy rozproszone
7
Web Services (usługi internetowe)
➔
➔
➔
Nazwą Web Services określa się dziś jedną z możliwych realizacji modelu SOA, umożliwiającą wykorzystanie istniejącej infrastruktury internetowej (protokół HTTP, przeglądarki)
Web Services oznaczają oprogramowanie dostępne poprzez sieć zbudowane zgodnie z określonymi standardami
Organizacjami rozwijającymi standardy Web Services są między innymi:


W3C – World Wide Web Consortium
OASIS ­ Organization for the Advancement of Structured Information Standards
Krzysztof Banaś
Systemy rozproszone
8
Web Services (usługi internetowe)
➔
Web Services wykorzystują następujące specyfikacje, aby przystosować przetwarzanie rozproszone do standardowego środowiska internetowego:



XML – język, który może być przetwarzany przez maszyny
SOAP – protokół przesyłu danych wykorzystujący XML
WSDL – język opisu usług wykorzystujący XML
Krzysztof Banaś
Systemy rozproszone
9
WebServices
Krzysztof Banaś
Systemy rozproszone
10
XML
➔
➔
➔
XML (eXtensible Markup Language)– główną cechą języka XML jest możliwość rozszerzania go o nowe konstrukcje, dzięki czemu może służyć do opisu coraz to innych dziedzin
W ramach konkretnych dziedzin, w których stosuje sie XML wypracowywane są standardy opisu dziedziny za pomocą XML i na ich podstawie programy przetwarzające teksty w XML
Sam standard definiujący XML nie jest rozbudowany, natomiast istnieje już wiele rozległych standardów wykorzystania XML w konkretnych dziedzinach
Krzysztof Banaś
Systemy rozproszone
11
SOAP
➔
➔
➔
➔
SOAP jest standardem wymiany komunikatów zapisanych w XML Komunikaty SOAP można wymieniać za pomocą różnych środków transmisji, choć najpopularniejszymi i preferowanymi są protokoły HTTP lub HTTPS
SOAP został zaprojektowany ze szczególnym uwzględnieniem wymiany komunikatów w ramach zdalnego wywołania procedur
W ramach środowisk programowania istnieją narzędzia, które projektują postać komunikatów SOAP dla konkretnych wywołań procedur zdalnych
Krzysztof Banaś
Systemy rozproszone
12
SOAP ­ żądanie
POST /webservices/tempconvert.asmx HTTP/1.1
Host: www.w3schools.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<FahrenheitToCelsius xmlns="http://tempuri.org/">
<Fahrenheit>string</Fahrenheit>
</FahrenheitToCelsius>
</soap12:Body>
</soap12:Envelope>
Krzysztof Banaś
Systemy rozproszone
13
SOAP ­ odpowiedź
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<FahrenheitToCelsiusResponse xmlns="http://tempuri.org/">
<FahrenheitToCelsiusResult>string</FahrenheitToCelsiusResult>
</FahrenheitToCelsiusResponse>
</soap12:Body>
</soap12:Envelope>
Krzysztof Banaś
Systemy rozproszone
14
WSDL
➔
WSDL jest językiem opisu usług sieciowych podobnym w funkcji do IDL CORBY
➔
WSDL nie posługuje się modelem obiektowym
➔
WSDL zapisywany jest w XML
➔
➔
W przeciwieństwie do IDL opis interfejsu usługi w WSDL zazwyczaj nie jest tworzony przez programistę, ale przez środowisko programowania rozproszonego
Opis w WSDL zawiera informację o formie wymiany komunikatów przy wywoływaniu zdalnych procedur
Krzysztof Banaś
Systemy rozproszone
15
WSDL
➔
Dokument WSDL (napisany w XML) zawiera następujące elementy:





<interface> ­ odpowiednik interfejsu IDL lub definicji klasy abstrakcyjnej w obiektowych językach programowania; element <interface> zawiera elementy <operation> opisujące pojedyncze procedury
<message> ­ opisuje wymianę komunikatów związaną z wywołaniem procedury (argumenty wejścia i wyjścia)
<types> ­ typy danych użytych jako argumenty
<binding> ­ sposób realizacji wywołania, użyty protokół, itp.
<service> ­ połączenie interfejsu, sposobu realizacji wywołania i adresu internetowego dla uzyskania ostatecznej definicji usługi
Krzysztof Banaś
Systemy rozproszone
16
WSDL – opis prostej funkcji
<definitions targetNamespace="http://endpoint.helloservice/" name="HelloService">
<types>
<xsd:schema>
<xsd:import namespace="http://endpoint.helloservice/" schemaLocation="http://localhost:8080/helloservice/hello?xsd=1"/>
</xsd:schema>
</types>
<message name="sayHello">
<part name="parameters" element="tns:sayHello"/>
</message>
<message name="sayHelloResponse">
<part name="parameters" element="tns:sayHelloResponse"/>
</message>
<portType name="Hello">
<operation name="sayHello">
<input message="tns:sayHello"/>
<output message="tns:sayHelloResponse"/>
</operation>
</portType>
Krzysztof Banaś
Systemy rozproszone
17
WSDL – opis prostej funkcji
<binding name="HelloPortBinding" type="tns:Hello">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="sayHello">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="HelloService">
<port name="HelloPort" binding="tns:HelloPortBinding">
<soap:address location="http://localhost:8080/helloservice/hello"/>
</port>
</service>
</definitions>
Krzysztof Banaś
Systemy rozproszone
18
Web Services i CORBA
➔
➔
➔
Web Services realizują podobny model przetwarzania rozproszonego jak CORBA
Zaletą Web Services jest korzystanie z technologii WWW (HTTP), posiadających m.in. rozwinięte mechanizmy zabezpieczeń (HTTPS)
Web Services nie dorównują (jeszcze...) systemom CORBY w dziedzinach:


➔
wsparcia modelu obiektowego
bogactwa dodatkowych usług związanych z przetwarzaniem
Systemy CORBY mogą stać się dostawcami usług Web Services, istnieje standard przekładu języka IDL na WSDL
Krzysztof Banaś
Systemy rozproszone
19
Porównanie technologii
Technology
Connect
time
Send string
(21,000
characters)
Receive
string
(22,000
characters)
Send 5,000
integers
Client
LOC
Server
LOC
Actual
Actual
message message
size
size
sending
sending
1,000
100
characters integers
Raw
sockets
0.002242
0.001377
0.001359
6.740674
57
25
2,279
85,863
CORBA
0.000734
0.004601
0.002188
1.523799
37
18
2,090
27,181
XML-RPC
0.007040
0.082755
0.050199
100.337219
29
17
4,026
324,989
SOAP
0.000610
0.294198
0.279341
1,324.296742
32
10
4,705
380,288
źródło: http://www.ibm.com/developerworks/webservices/library/ws-pyth9/
Krzysztof Banaś
Systemy rozproszone
20
Systemy gridowe
➔
➔
➔
Nazwa systemów gridowych wywodzi się od nazwy sieci elektroenergetycznej w USA – Power Grid i od idei korzystania z zasobów obliczeniowych podobnie jak z zasobów energii elektrycznej
W wizji tej pojedynczy użytkownik po podłączeniu do sieci (i uiszczeniu odpowiednich opłat) uzyskuje dostęp do mnogości usług w jednolity sposób i niezależnie od konkretnego sposobu implementacji tych usług oraz stosowanego sprzętu
Idea systemów gridowych narodziła się w środowiskach naukowych i wspierana jest przez koncepcję e­Nauki
Krzysztof Banaś
Systemy rozproszone
21
Wizja E-nauki
2100
2100
2100
2100
2100
2100
2100
Współpraca
Przechowanie danych
Laboratoria i instrumenty
Obliczenia
Krzysztof Banaś
2100
E-naukowiec
Systemy rozproszone
Wizualizacja
22
Systemy gridowe (Grids)
➔
➔
➔
➔
Początkowo systemy gridowe rozwijane były w ramach programów badawczych ukierunkowanych na zastosowania naukowe (projekty Condor, Globus)
Z czasem idee systemów gridowych i stosowane narzędzia zaczęły przenikać się z ich odpowiednikami w obszarze zastosowań biznesowych czy popularnych
Specyfikacje systemów gridowych opracowywane są przez organizacje (głównie grupy robocze GGF – Global Grid Forum) w postaci rekomendacji
Rekomendacje GGF ukierunkowane są na wszystkie obszary zastosowań
Krzysztof Banaś
Systemy rozproszone
23
Systemy gridowe (Grids)
➔
➔
➔
W systemach gridowych rozważa się dostęp do zasobów i ich wykorzystanie poprzez pewien jednolity system
Jednolitość systemu ma być zapewniona poprzez wirtualizację zasobów, tzn. każdy zasób jest przedstawiany jako pewien możliwy do zrealizowania zestaw usług
Ze względu na oparcie systemów gridowych na usługach ostatnie specyfikacje GGF wskazują na Web Services jako podstawę realizacji
Krzysztof Banaś
Systemy rozproszone
24
Systemy gridowe (Grids)
➔
➔
Zasoby informatyczne tworzące systemy gridowe są ze swej natury heterogeniczne i rozproszone
Stanowią je:


➔
urządzenia (procesory, dyski, drukarki, urządzenia pomiarowe, wyposażenie laboratoriów, urządzenia sieciowe, itp.)
programy, bazy danych, pliki
Ideą jest tworzenie systemów gridowych i współdzielenie zasobów przez różne podmioty, geograficznie rozproszone, tworzące tzw. wirtualne organizacje (VO)
Krzysztof Banaś
Systemy rozproszone
25
Systemy gridowe (Grids)
➔
Jednymi z podstawowych zadań jakie muszą zostać rozwiązane w ramach systemów gridowych są:


bezpieczeństwo – m.in. jak połączyć bezpieczne korzystanie z rozproszonych zasobów z ideą traktowania systemu gridowego jako jednolitej całości (a więc np. z tylko jednym logowaniem do całego systemu)
wydajność – jak zagwarantować maksymalna wydajność całości systemu rozproszonego, m.in. jak równoważyć obciążenie całości systemu (może to wymagać migracji zadań pomiędzy poszczególnymi zasobami)
Krzysztof Banaś
Systemy rozproszone
26
Systemy gridowe (Grids)
➔
➔
➔
Systemy gridowe poprzez oparcie na usługach mogą być organizowane zgodnie z typowym standardem SOA (usługobiorca, usługodawca, rejestr)
Wartością dodaną związaną z systemami gridowymi jest rozbudowana warstwa usług związanych z zarządzaniem zasobami
Systemy gridowe mogą także udostępniać swoje usługi na zewnątrz w ramach szerszego systemu zorganizowanego zgodnie z zasadami SOA
Krzysztof Banaś
Systemy rozproszone
27
Systemy gridowe (Grids)
➔
➔
➔
Systemy gridowe z założenia mają być budowane w oparciu o standardy
Liczba tych standardów ciągle rośnie, wraz z rozszerzaniem obszarów stosowania systemów gridowych
Podstawowym standardem GGF jest OGSA (Open Grid Software Architecture) – specyfikacja określająca ogólna budowę systemów gridowych
Krzysztof Banaś
Systemy rozproszone
28
Systemy gridowe (Grids)
➔
➔
➔
Systemy gridowe mają swoje realizacje publicznie dostępne w ramach otwartego oprogramowania (wciąż podstawową jest Globus Toolkit, obecnie w wersji 4)
Wielu producentów sprzętu (Sun, IBM, HP i inni) oraz oprogramowania (Sun, Oracle, Microsoft) dostarcza także swoje komercyjne wersje systemów gridowych (często będące rozwinięciami lub modyfikacjami systemów publicznie dostępnych)
Twórcy oprogramowania dostarczają także platformy i środowiska do tworzenia oprogramowania gridowego Krzysztof Banaś
Systemy rozproszone
29
Globus Toolkit version 4
Krzysztof Banaś
Systemy rozproszone
30

Podobne dokumenty