programų sistemų inžinerija - dma.vgtu.ltdma.vgtu.lt/psi/psi_7.pdf · • rpc paslėpia visus...
TRANSCRIPT
Programų sistemų inžinerija
8 paskaita
Paskirstytų sistemų architektūros
Tikslai
Paaiškinti paskirstytų sistemų architektūros
privalumus bei trūkumus
Paaiškinti skirtumus tarp kliento-serverio ir
paskirstyto objekto architektūros
Išnagrinėti objekto užklausos tarpininkus ir
pagrindinių CORBA (Common Object Requesting
Broker Architecture) standartų principus
Paaiškinti lygiaverčių ryšių (peer-to-peer) ir į
paslaugas orientuotas architektūras (SOA) kaip naujus
paskirstytų skaičiavimų modelius.
Nagrinėjamos temos
Kliento-serverio architektūra
Paskirstytų objektų architektūra
RPC
DCOM
CORBA (Common Object Request Broker Architecture)
Programų sistemų tipai
Personalinės sistemos, kurios nėra paskirstytos ir
yra suprojektuotos veikti personaliniame
kompiuteryje ar darbo stotyje
Įterptinės sistemos, kurios veikia viename
procesoriuje ar integruotoje procesorių grupėje
Paskirstytos sistemos, kur sistemos programinė
įranga veikia laisvai integruotoje grupėje
bendradarbiaujančių procesorių, sujungtų tinklu
Paskirstytos sistemos
Iš esmės, dabar visos didelės kompiuterinės sistemos
yra paskirstytos sistemos.
Informacijos apdorojimas yra paskirstytas keletui
kompiuterių, o ne vienai mašinai.
Paskirstytos programinės įrangos inžinerija dabar yra
labai svarbi.
Paskirstytų programų sistemų pavyzdžiai: • E-paštas (klientas – MS Outlook, serveris – MS Exchange)
• WEB (klientas – IE, Firefox, serveris – Apache, TomCat)
• IS (klientas – klientinė programa, serveris MS SQL, Oracle, DVB2)
Paskirstytų sistemų privalumai
Resursų dalijimasis
Atvirumas
Lygiagretiškumas
Išplečiamumas
Klaidos toleravimas
Skaidrumas
Paskirstytų sistemų trūkumai
Sudėtingumas
Saugumas
Valdymo problemos
Nenuspėjamumas
Paskirstytų sistemų architektūra
Kliento-serverio architektūra
• Paskirstyti servisai yra iškviečiami klientų. Serveriai,
kurie tiekia servisus yra traktuojami skirtingai nei
klientai, kurie naudojasi servisais.
Paskirstytų objektų architektūra
• Nėra skirtumo tarp klientų ir serverių. Bet kuris objektas
sistemoje gali tiekti ir naudotis servisus iš kitų objektų.
Tarpinė programinė įranga (Middleware)
Programinė įranga kuri valdo ir palaiko skirtingus
paskirstytos sistemos elementus. Iš esmės, ji “sėdi”
sistemos viduryje ir tarpininkauja.
Tarpinės programinės priemonės yra paprastai
standartizuotos, o ne specialiai sudaryta programinė
įranga.
Pavyzdžiai • GRID tarpinė programinė įranga (gLite, Unicore)
• Kompiuterių klasterio tarpinė įranga (Rocks Cluster, Oscar, SGE)
Kliento-serverio architektūra
Taikomoji programa yra sumodeliuota kaip serverių
teikiamų paslaugų ir vykdančių užduotis aibė ir jas
naudojančių klientų aibė. Klientai siunčia užklausą
su prašymu suteikti paslaugą ir apdoroja gautus
rezultatus (formatuoja rezultatus, GUI).
Klientai žino apie serverius, bet serveriai nebūtinai
žino apie klientus.
Klientai ir serveriai yra loginiai procesai.
Kliento-serverio sistema
s 1
s 2 s 3
s 4 c 1
c 2 c 3 c 4
c 5
c 6 c 7 c 8
c 9
c 1 0
c 1 1
c 1 2
Serverio procesas
Kliento procesas
1
2
Kliento-serverio sistema
MS AD DB serveris Failų serveris
Klientas Klientas
Klientas siunčia užklausą serveriui, gavęs rezultatus juos
formatuoja ir pateikia vartotojui. Kliento įvedami
duomenys siunčiami serveriui, kuris įvykdo pakeitimus.
Lengvi (thin) ir sunkūs ( fat) klientai
Lengvo kliento modelis
• Lengvo kliento modelyje visų programų vykdymas ir duomenų
valdymas yra vykdomas serveryje. Klientas yra atsakingas tik
už atvaizdavimo programinės įrangos veikimą.
(Naršklė – WEB serveris, RDP – MS Windows OS)
Sunkaus kliento modelis
• Šitame modelyje serveris yra atsakingas tik už duomenų
valdymą. Kliento programinė įranga įgyvendina taikymus ir
sąveiką su sistemos vartotoju. (Outlook – Exchange, Excel – MS SQL)
Lengvi ir sunkūs klientai
Klientas
Klientas
Serveris
Serveris
Lengvo klientomodelis
Sunkaus klientomodelis
Atvaizdavimas
Taikomosios programos vykdymas
Duomenųvaldymas
Taikomosios programos vykdymas
Atvaizdavimas
Duomenųvaldymas
Lengvo kliento modelis
Naudojamas, kai sistemos yra perkeliamos į kliento
serverio architektūrą. • Tokia sistema veikia kaip serveris su grafine sąsaja, kuri yra
realizuota kliente
Pagrindinis trūkumas yra tas, kad labai apkraunamas
serveris ir tinklas.
Sunkaus kliento modelis
Daugiau skaičiavimų yra pavesta klientui, kai
programos vykdymas atliekamas lokaliai
Tinkamiausias naujoms kliento/serverio sistemoms,
kur kliento sistemos galimybės yra žinomos iš anksto
Sudėtingesnis nei lengvo kliento modelis, ypač
valdyme. Naujos programos versijos turi būti įdiegtos
visuose klientuose
Kliento-serverio architektūra banko
automatų sistemoje
ATM
ATM
ATM
ATM
Sąskaitos serveris
Duomenųapdorojimomonitorius
Klientosąskaitosduomenys
Programų sistemų sluoksnių
architektūra
Atvaizdavimo sluoksnis
• skirtas sistemos vartotojų skaičiavimo rezultatų
atvaizdavimui ir vartotojo duomenų įvedimui
Taikomosios programos vykdymo sluoksnis
• Skirtas programos specifiniam funkcionalumui, pvz.,
banko sistemoje, tokios banko funkcijos kaip sąskaitos
atidarymas, sąskaitos uždarymas ir t.t.
Duomenų valdymo sluoksnis
• Skirtas sistemos duomenų bazių valdymui
Trijų lygių architektūra
Trijų lygių architektūroje, kiekvienas iš programos
architektūros sluoksnių gali būti vykdomas atskirame
procesoriuje.
Leidžia pasiekti didesnį našumą, nei lengvo kliento metodas ir
yra lengviau valdomas nei sunkaus kliento metodas.
Labiau plečiama architektūra – padidėjus poreikiui, gali būti
prijungiami papildomi serveriai
Trijų lygių kliento/serverio
architektūros schema
Atvaizdavimas
Klientas
Serveris Serveris
Taikomosios programos vykdymas
Duomenųvaldymas
Internetinė bankinė sistema
SQL
Klientas
Klientas
Klientas
Klientas
HTTP s sajaą
SQL užklausaTinklo serveris Duomenų bazė
Sąskaitų paslaugųteikimas
Kliento sąskaitosduomenys
N-lygių kliento serverio modelis
Didžioji dalis šiuolaikinių programų sistemų yra N lygių.
N-lygių sistema – tai tipinė žiniatinklio sistema, kur užklausos persiunčiamos į visą eilę įvairias paslaugas teikiančius serverius.
Klientas w
eb
serv
eris
Jav
a ap
lika
cijų
se
rver
is
apkr
ovos
bal
ansa
s
fire
wal
l
fire
wal
l
Duomenų bazė
Objektų saugykla
Kliento-serverio architektūros
naudojimas
Architektūra Taikymas
Dviejų lygių K/S architektūra su lengvais klientais
Liktinės sistemos, kuriose atskirti taikomuosius skaičiavimus ir duomenų valdymą yra nepraktiška. Tai intensyvių skaičiavimų taikymai, tokių kaip kompiliatoriai be arba su labai mažu duomenų valdymu (duomenys atmintyje). Taip pat užklausų ir paieškų taikymai beveik be taikomųjų skaičiavimų.
Dviejų lygių K/S architektūra su sunkiais klientais
Taikymai, kur taikomieji skaičiavimai atliekami kliente, užbaigtų sistemų pagalba (COTS), kaip Microsoft Exel. Taip pat taikymai, kur reikia intensyvių skaičiavimų duomenų apdorojimui, kaip duomenų avaizdavimui arba kur yra stabilios, gerai apibrėžtos galinio vartotojo funkcijos.
Trijų lygių arba daugelio lygių K/S architektūra
Didelės apimties taikymai su šimtais ar tūkstančiais klientų , kai nepastovūs duomenų bei taikymų skaičiavimai, kai integruojami duomenys iš daugelio šaltinių.
Paskirstytų lygiaverčių objektų
architektūra
Paskirstytų lygiaverčių objektų architektūroje tarp klientų ir
serverių nėra skirtumų (pvz. P2P)
Kiekviena paskirstoma esybė yra objektas, kuris tiekia
servisus kitiems objektams ir priima servisus iš kitų objektų
Objektai bendrauja per tarpines programines priemones,
vadinamas objekto užklausos tarpininku (ORB)
Tai sudėtingiau projektuojam nei kliento serverio sistemas.
Lygiaverčių ryšių architektūros
Lygiaverčių ryšių (P2P) sistemos yra decentralizuotos
sistemos, kur skaičiavimai gali būti vykdomi bet kuriame
tinklo mazge.
Tokia sistema skirta efektyviai išnaudoti daugelio tinklo
kompiuterių skaičiavimų resursus.
Dauguma P2P sistemų buvo personalinės sistemos, bet ši
technologija vis labiau plinta ir verslo sistemose.
P2P sistemose nereikalingas centralizuotas valdymas ir
kontrolė.
Paskirstytų objektų architektūra
o1 o2 o3 o4
o5 o6
S (o1) S (o2) S (o3) S (o4)
S (o5) S (o6)
Programinės įrangos magistralė
Privalumai
Paskirstytų lygiaverčių objektų architektūra leidžia
sistemos projektuotojui neapibrėžti kur ir kaip
paslaugos turėtų būti teikiamos
Tai labai atvira sistemos architektūra, kuri leidžia
prijungti naujus resursus pagal reikalavimus
Sistema yra lanksti ir išplečiama
Įmanoma dinamiškai keisti sistemos konfigūraciją su
objektais migruojančiais per tinklą.
Komunikacijos principai
Tinkle programų sistemos komunikuoja siųsdamos viena kitai
pranešimus (messages). Pranešimų kontekste programos gali būti:
Siuntėjas – programa, kuri suformuoja ir išsiunčia pranešimą.
Gavėjas – programa, kuriai skirtas pradinio siuntėjo
suformuotas pranešimas.
Tarpininkas – programa, kuri persiunčia pranešimą galutiniam
gavėjui arba sekančiam tarpininkui.
Tarpininkas paprastai nekeičia paties pranešimo turinio, tačiau
gali keisti jo meta-duomenis, įdėti jį į eilę, valdyti transakcijas.
Komunikacijos sluoksniai
Nuotolinis procedūrų kvietimas (RPC)
Paskirstytos sistemos turi sąveikauti t.y. apsikeiti pranešimais, duomenimis ir t.t..
Žemo lygio tinklo specifikacijos turi būti paslėptos nuo programų, todėl naudojami API.
Nuotolinis procedūrų kvietimas (RPC) – tai komunikacinė technologija, skirta komunikacijoms tarp procesų užtikrinti, kurios pagalba galima iškviesti funkciją nutolusiame kompiuteryje.
Programuotojas rašo tokį pat kodą, lyg dirbtų su lokalia funkcija.
Įprastinis procedūros kvietimas
Įprastinis procedūros kvietimas programose atliekama
naudojant call & return veiksmus. Nors kompiliatorius
realiai atlieka tokius veiksmas:
• Parametrų perdavimą
• Lokalių kintamųjų deklaravimą
• Duomenų grąžinimą
Pavyzdys: x = skaičiuok (a, “testas”, 5);
Kompiliatorius sugeneruoja tokį kodą:
a. Patalpina reikšmę 5 į steką
b. Patalpina eilutės „testas“ adresą į steką
c. Patalpina kintamojo a reikšmę į steką
d. Generuoja funkcijos skaičiuok() kvietimą
RPC paskirtis
RPC tikslas – simuliuoti lokalios procedūros kvietimą panaudojant API.
RPC nepriklauso nuo kompiuterio architektūros ar OS.
Toks požiūris leidžia RPC būti pogramavimo kalbos lygmens konstrukcija vietoj OS lygio konstrukcija.
RPC nauda
Realizuojama įprastinė procedūrų kvietimo sąsaja.
Paskirstytų programų kūrimas supaprastinas
• RPC paslėpia visus tinklinius procesus API
• Programuotojas nesirūpina apie lizdus, portų numerius,
bitų sekasi r t.t.
RPC priskiriamas prezentacijų lygmeniui OSI
modelyje.
RPC programavimas
Programavimo kalbos
• Dauguma programavimo kalbų (C, C++, Java, …) neturi realizuotų RPC procedūrų – tai reiškia, kad šių kalbų kompiliatoriai negeneruoja kliento ir serverio programų automatiškai
Sprendimas:
• Naudoti atskirą kompiliatorių (pre-compiler), kuris atliktų šiuos veiksmus.
Sąsajos apibrėžimo kalba (Interface Definition Language)
IDL leidžia programuotojui apibrėžti RPC sąsają (vardus, parametrus, grąžinamas reikšmes)
C++ like sintaksė
Pre-kompiliatorius gali būti naudojamas generuojant kliento ir serverio programų dalis.
Pre-kompiliatorius veikia panašiai kaip klasių šablonai ar funkcijų prototipai
Suderinamumas (mappings): • C, C++, Java, COBOL, Smalltalk, ADA, Lisp, Python
RPC kompiliavimas
IDL RPC
compiler
Kliento kodas (main)
Serverio funkcija
kliento dalis
antraštės
serverio šablonas
duomenų konvert.
duomenys. compiler
compiler Serveris
Klientas
Programuotojo kodas
RPC kompiliatoriaus kodas
IDL pavyzdys CORBA
IDL pavyzdys
IDL pavyzdys
Kodas sugeneruotas, idl2java kompiliatoriaus:
RPC implementacijos
DCE RPC
DCOM
CORBA
Java RMI
XML RPC,
SOAP /.NET,
AJAX, REST
RPC – populiari paradigma kliento serverio architektūrai kurti.
Žemiau pateikti įvairios RPC principų realizacijos:
DCOM
Pagrindinės savybės • DCOM - tik Microsoft palaikomas RPC sprendimas
• Palaiko lygiagrečiai daug klientų
• Suderintas su DCE RPC
• Reikalauja specialios ugniasienės konfigūracijos, nes pranešimai siunčiami
dvejetainiame formate, todėl ugniasienė tai laiko kenkėjiška veikla.
Distributed Component Object Model (DCOM) – tai Microsoft
technologija, skirta komunikacijoms tarp programinių komponentų,
paskirstytų tinkle realizuoti.
Tradiciniai COM komponentai gali realizuoti komunikacijas tarp
procesų, dirbančių vienos mašinos rėmuose.
DCOM konifgūravimas
dcomcnfg.exe komandos langas
CORBA
CORBA (Common Object Request Broker Architecture)
yra tarptautinio standarto objekto užklausų tarpininkas –
tarpinė programa, skirta bendravimo tarp paskirstytų
objektų valdymui,
CORBA apibrėžė Objektų Valdymo Grupė (OMG)
CORBA – tai OMG sukurtas nuo gamintojo
nepriklausoma specifikacija skirta apibrėžti
komunikacijų architektūrą naudojamą paskirstytose
tinklinėse aplikacijose.
Alternatyva - Microsoft DCOM.
CORBA
CORBA – tai priemonė (specifikacija), kurios pagalba
galima užtikrinti, jog bet kokio gamintojo programų
sistemos, veikiančioms bet kurioje operacinėje
sistemoje, parašytomis bet kuria programavimo kalba
veikti drauge (komunikuoti) panaudojant CORBA
sąsajas, sukurtas bet kurio gamintojo, parašytas bet kuria
kalba ir veikiančias bet kurioje operacinėje sistemoje.
CORBA logika
Objektas Klientas
ORB
CORBA veikimo schema
Client
App. / Applet
IDL
Stub
ORB
Servant
(Server)
Skeleton
ORBIIOP
POA
Client Call
Return Value
CORBA sudėtiniai elementai
IDL
• Interface Definition Language
Kliento - serverio CORBA objektai
• Abstraktūs objektai, kuriami konkrečioms objektų
implementacijos
ORB (Object Request Broker)
• valdo prašymus skirtus objektų servisams
GIOP / IIOP
• General and Internet Inter-Object Protocols
CORBA architektūra
CORBA objektai
CORBA objektai yra palyginami su C++ ir Java
objektais
Jie privalo turėti skirtingus sąsajos apibrėžimus,
išreiškiamus naudojant bendrą kalbą (IDL)
Objektai, aprašyti skirtingomis programavimo kalbomis,
gali tarpusavyje bendrauti, nes naudojama IDL.
Objektų užklausų brokeris (ORB)
ORB valdo objektų bendravimą. Jis žino visus sistemos
objektus ir jų sąsajas. • Suranda reikiamus objektus
• Persiunčia užklausą ir gautus rezultatus
• Informuoja kitus ORB apie savo veiksmus
Naudojant ORB, kviečiantis objektas pririša IDL „kelmą”
(“stub”), nustatantį kviečiamo objekto sąsają.
Rezultatas gaunamas kreipiantis į ORB, kuris kviečia
reikalaujamą objektą per paskelbtą IDL šabloną
(skeleton) ir susieja sąsaja su serviso realizavimu.
ORB objektų bendravimas
Išorinis-ORB bendravimas
ORB dažniausiai nėra atskiros programos, o yra
objektų rinkinys bibliotekoje, kuris susiejamas su
kuriama programa.
ORB valdo bendravimą tarp objektų naudojamų
tame pačiame mechanizme.
Gali būti prieinami keletas ORB ir kiekvienas
kompiuteris paskirstytoje sistemoje turės savo ORB
Išorinio ORB bendravimai yra naudojami paskirstytų
objektų kvietimams.
Išorinis-ORB bendravimas
o 1 o 2
S ( o 1 ) S ( o 2 )
I D L I D L
o 3 o 4
S ( o 3 ) S ( o 4 )
I D L I D L
Objektų užklausos
tarpininkas (ORB)
Objektų užklausos
tarpininkas (ORB)
Tinklas
DCOM ir CORBA
DCOM palaiko OO modelį, nors nepalaiko tokių
savybių kaip polymorfizmo. Paslaugos teikiamos per
keletą skirtingų sąsajų.
CORBA – tai atvira OMG specifikacija, palaikoma
skirtingų gamintojų.
CORBA gali būti naudojama žymiai platesnėje
aplinkoje, nes priešingai nei DCOM palaikoma
visose operacinėse sistemoje, tuo tarpu DCOM
naudojama tik Windows aplinkoje.
Paskirstytos žiniatinklio sistemos
Paskirstytose žiniatinklio (web) programų sistemose
naudojami (pvz. web clawler, monitoringo sistemos)
naudojami kiti programų sistemų modeliai:
SOA (service oriented architecture) – grindžiama
veiksmų atlikimu.
ROA (resources oriented architecture) – grindžiama
duomenų apdorojimu.
SOA (service oriented architecture)
SOA – tai naujas programinės įrangos architektūros
modelis, pagrįstas paslaugų teikimu.
Paslauga – tai standartizuota pasikartojanti verslo užduotis,
pvz., patikrinti, ar prekė yra sandėlyje, arba prekės
pardavimo procedūra. Kiekviena didesnė įmonė turi
daugybę tokių sukurtų paslaugų, ir visos jos turi
„bendradarbiauti“ tarpusavyje.
SOA pagrindas - standartizuotas centrinis modulis (Enterprise
service bus), per kurį jungiami visi kiti moduliai. Šis modulis
užtikrina, kad visos paslaugos naudotų vienodus standartus,
jungia ir transformuoja skirtingus standartus ir sumažina jungčių
skaičių. Visos paslaugos yra derinamos tik prie centrinio
modulio, todėl jas lengva pakeisti kitomis.
ROA (resources oriented architecture)
ROA – tai programinės įrangos architektūros
modelis, grindžiamas resursais ir jų apdorojimu.
ROA naudoja 4 pagrindines operacijas resursams
apdoroti: GET, PUT, POST ir DELETE
ROA remiasi REST (representational state transfer)
arba HTTP servisais
REST principai
REST architektūros principais:
Konkretų resursą identifikuoja URI, kuriuo kreipiamasi į web
servisą
HTTP GET užklausa naudojama paimti resurso turiniui, kuris
grąžinamas HTTP atsakyme
HTTP PUT arba POST užklausa naudojama resursui keisti
arba naujam resursui sukurti. Užklausos kūne nurodomas
naujasis resurso turinys
HTTP DELETE užklausa naudojama resursui trinti
Pranešimų turinys dažniausiai koduojamas XML, Jason
formatu
Komunikacijoms naudojamas HTTP protokolas
REST privalumai
Paprastumas
Komunikacijai naudojamas vienintelis HTTP protokolas
Pakanka keturių operacijų: GET, POST, PUT ir DELETE
Universalumas
HTTP protokolą supranta bet kokia tinklo programinė įranga, jį
palaiko praktiškai visi programavimo karkasai
Web servisą galima iškviesti su bet kuria naršykle, įrašius jo
atstovaujamo resurso URL į adresų lauką
Prieinamumas
Jei REST publikuojama XML informacija, ji tampa pasiekiama
HTML puslapiuose (per nuorodas) ir XML dokumentuose.
Paskirstytos sistemos remia resursų dalinimą, atvirumą,
lygiagretiškumą, išplečiamumą, klaidų toleranciją ir
permatomumą.
Kliento-serverio architektūra apima serverių teikiamus
servisus programoms, veikiančioms kliento pusėje.
Vartotojo sąsajos programinė įranga visada veikia pas klientą
ir duomenys valdomi serveryje. Taikomosios programos gali
būti pas klientą arba serveryje.
Paskirstytų lygiaverčių objektų architektūroje nėra skirtumo
tarp klientų ir serverių.
Santrauka
Santrauka
Paskirstytų objektų sistemos reikalauja tarpinių programinių
priemonių objektų bendravimui.
CORBA standartai yra tarpinių programinių priemonių aibė,
kuri remia paskirstytų objektų architektūras.
Paskirstytų žiniatinklio programų sistemoms dažnai
naudojama SOA ir ROA architektūros modeliai.