Paskirstytųjų sistemų architektūros - KTU

Download Report

Transcript Paskirstytųjų sistemų architektūros - KTU

LYGIAGREČIOSIOS
SISTEMOS
7 rinkinys
PASKIRSTYTIEJI
SKAIČIAVIMAI
Paskaitoje:

Paskirstytųjų skaičiavimų ir sistemų kūrimo tikslai

Paskirstytųjų sistemų tipai







Paskirstytosios skaičiavimų sistemos
Paskirstytosios informacinės sistemos
Komunikavimo tarpinė programinė įranga
Paskirstytųjų sistemų architektūros
Centralizuotos architektūros
Decentralizuotos architektūros
Klientai ir serveriai
Lygiagrečiosios sistemos
© S.Maciulevičius
2
Paskirstytųjų skaičiavimų tikslai

Paskirstytųjų skaičiavimų ir sistemų kūrimas ir
panaudojimas atitinka tokius keturis tikslus:





paskirstytoji sistema turi duoti lengvai pasiekiamus
resursus;
ji turi maskuoti, kad resursai yra paskirstyti tinkle;
ji turi būti atvira;
ji turi būti nesunkiai plečiama (scalable)
Apie kiekvieną iš jų trumpai pakalbėsime
Lygiagrečiosios sistemos
© S.Maciulevičius
3
Lengvai pasiekiami resursai


Pagrindinis paskirstytosios sistemos tikslas –
sudaryti sąlygas vartotojams (ir taikomosioms
programoms) lengvai pasiekti nutolusius
resursus ir jais bendrai naudotis valdomu ir
efektyviu būdu
Resurso sąvoka čia plati, tačiau tipiniai jų
pavyzdžiai – kompiuteriai, išorinės atminties
įtaisai, spausdintuvai, duomenys, failai
Lygiagrečiosios sistemos
© S.Maciulevičius
4
Lengvai pasiekiami resursai


Resursų bendro naudojimosi tikslai įvairūs – ir
ekonomiškumas, ir nuosavų įsigijimo
netikslingumas, ir bendras darbas bei
keitimasis informacija
Plečiantis bendram naudojimuisi resursais ir
Interneto naudojimui didėja saugumo svarba,
nes komunikacijos yra mažiau apsaugotos nuo
informacijos sekimo ir pavogimo
Lygiagrečiosios sistemos
© S.Maciulevičius
5
Paskirstymo maskavimas



Kitas svarbus paskirstytosios sistemos tikslas
– nuslėpti nuo vartotojų faktą, kad resursai ir
procesai fiziškai išsklaidyti po nutolusius
kompiuterius
Kai paskirstytoji sistema vartotojams ir
procesams prisistato kaip paprasta
kompiuterinė sistema, tai vadinama
skaidrumu
Kokio tipo skaidrumas sutinkamas
paskirstytose sistemose?
Lygiagrečiosios sistemos
© S.Maciulevičius
6
Paskirstytųjų sistemų skaidrumas
Skaidrumas
Apibūdinimas
Kreipties
Paslepia duomenų atvaizdavimo skirtumus ir
kaip resursai pasiekiami
Vietos
Paslepia kur resursai yra
Migravimo
Paslepia resurso perkėlimą į kitą vietą
Perkėlimo
Paslepia resurso perkėlimą į kitą vietą darbo
metu
Replikavimo Paslepia resurso replikavimą
VienaPaslepia naudojimąsi resursu kelių vartotojų
laikiškumo
Gedimų
Paslepia gedimą resurse ir resurso atstatymą
Lygiagrečiosios sistemos
© S.Maciulevičius
7
Paskirstytųjų sistemų skaidrumas


Kreipties skaidrumas paslepia mašinų architektūrų
skirtumus, duomenų atvaizdavimo skirtumus įvairiose
mašinose ir operacinėse sistemose (pavyzdžiui, failų
vardų suteikimo principus)
Vietos skaidrumas reiškia, kad vartotojas nežino,
kur fiziškai randasi konkretus resursas. Tai gali būti
pasiekiama resursams suteikiant loginius vardus
(nors šie gali sufleruoti resurso vardą: pvz.,
www.ktu.lt/index.html mums rodo, kam priklauso šis
web serveris)
Lygiagrečiosios sistemos
© S.Maciulevičius
8
Paskirstytųjų sistemų skaidrumas


Tačiau URL nieko nesako, ar index.html visada buvo
dabartinėje vietoje, ar ką tik buvo čia įkeltas.
Paskirstytos sistemos, kuriose resursų perkėlimas
neturi įtakos prieigai, vadinamos skaidriomis
migravimui
Dar sudėtingesnė situacija yra tuomet, kai resursas
gali būti perkeltas neinformuojant apie tai vartotojų ar
procesų. Tokios paskirstytos sistemos vadinamos
skaidriomis perkėlimui (pavyzdžiui, nešiojamo
kompiuterio vartotojas gali keisti buvimo vietą
nenutraukdamas ryšio su Internetu)
Lygiagrečiosios sistemos
© S.Maciulevičius
9
Paskirstytųjų sistemų skaidrumas



Minėjome, kad svarbus paskirstytųjų sistemų tikslas
– bendras resursų naudojimas
Daugumoje atvejų tai daroma juos naudojant
kolektyviai, tačiau sutinkami ir konkurencijos atvejai
(pavyzdžiui, du vartotojai gali laikyti savo failus tame
pačiame failų serveryje arba kreiptis į tą pačią lentelę
bendroje DB)
Tokiu atveju svarbu, kad vartotojas nepastebėtų, jog
kitas taip pat naudoja tą patį resursą. Toks reiškinys
vadinamas vienalaikiškumo skaidrumu. Svarbu,
kad resursas išliktų vientisas (consistent)
Lygiagrečiosios sistemos
© S.Maciulevičius
10
Paskirstytųjų sistemų skaidrumas



Dar vienas svarbus paskirstytųjų sistemų
projektavimo uždavinys – galimybė dirbti esant
gedimams (fault tolerancy)
Sistemoje realizuoti skaidrumą gedimams reiškia,
kad vartotojas nepastebėtų, jog resursui sugedus ar
dirbant nekorektiškai sistema yra atstatoma
Klaidų maskavimas paskirstytose sistemose yra
vienas iš sudėtingiausių uždavinių, nes sunku
nustatyti, ar resursas sugedęs, ar dirba lėtai
(prisiminkime serverio “taimautus”)
Lygiagrečiosios sistemos
© S.Maciulevičius
11
Paskirstytųjų sistemų skaidrumas



Resursų replikavimas svarbus paskirstytose
sistemose. Tai gali būti daroma siekiant padidinti
prieinamumą (availability) ar darbo našumą,
perkeliant kopiją arčiau prieigos vietos
Replikavimo skaidrumas reiškia, kad nuo vartotojo
slepiamas faktas, kad yra kelios resurso kopijos.
Tam reikia, kad visos replikos būtų tuo pačiu vardu
Sistema, palaikanti replikavimo skaidrumą, bendruoju
atveju turi palaikyti ir vietos skaidrumą, nes priešingu
atveju būtų neįmanoma kreiptis į skirtingose vietose
esančias replikas
Lygiagrečiosios sistemos
© S.Maciulevičius
12
Paskirstytųjų skaičiavimų
atvirumas



Trečioji svarbi paskirstytųjų skaičiavimų ir sistemų
savybė – atvirumas
Atviroji paskirstytoji sistema yra tokia, kuri savo
paslaugas teikia pagal standartines taisykles,
aprašančias servisų sintaksę ir semantiką.
Pavyzdžiui, kompiuterių tinkluose taisyklės apibrėžia
siunčiamų ir gaunamų pranešimų formatus, turinius ir
prasmę
Paskirstytose sistemose paslaugos paprastai
aprašomos per sąsajas, kurios specifikuojamos
naudojant kalbą Interface Definition Language (IDL)
Lygiagrečiosios sistemos
© S.Maciulevičius
13
Paskirstytųjų skaičiavimų
atvirumas



Naudojant IDL pateiktas sąsajos apibrėžimas beveik visuomet
apima tik servisų sintaksę. Kitaip tariant, jis tiksliai nusako
funkcijų pavadinimus kartu su parametrų tipais, grąžinamas
reikšmes, galimas išskirtines situacijas ir pan.
Kur kas sunkiau tiksliai apibrėžti, ką tas servisas atlieka, t.y.
sąsajų semantiką. Praktiškai toks apibrėžimas atliekamas
neformaliai, naudojant paprastą kalbą
Turint tiksliai apibrėžtą sąsają, bet kuris ją naudojantis
procesas gali kreiptis į kitą procesą, turintį tą pačią sąsają. Ir
gali būti skirtingos tos pačios sąsajos realizacijos, įgalinančios
dvi atskiras paskirstytas sistemas dirbti tuo pačiu būdu
Lygiagrečiosios sistemos
© S.Maciulevičius
14
Paskirstytųjų skaičiavimų
atvirumas


Kitas svarbus atviros paskirstytos sistemos tikslas - ji
turi būti lengvai konfigūruojama, nors ir sudaryta iš
skirtingų (gamintojų) komponentų
Taip pat turi būti lengva pridėti naujus komponentus
ar pakeisti buvusius, nepaliečiant kitų sistemos
komponentų. Kitaip tariant, ji turi būti nesunkiai
plečiama
Lygiagrečiosios sistemos
© S.Maciulevičius
15
Paskirstytųjų skaičiavimų
plečiamumas

Sistemos plečiamumas gali būti matuojamas bent
trimis aspektais:




Sistema gali būti plečiama dydžio atžvilgiu, prie jos
prijungiant daugiau vartotojų ir resursų
Sistema gali būti plečiama geografiniu atžvilgiu, kai
atstumai tarp vartotojų ir resursų yra (labai) dideli
Sistema gali būti plečiama administravimo atžvilgiu, kai ją
valdyti yra gan nesunku, nors ji apima didelį administraciniu
požiūriu nepriklausomų organizacijų skaičių
Vienok sistemos plečiamumas vienu ar keliais
aspektais sąlygoja jos našumo sumažėjimą
Lygiagrečiosios sistemos
© S.Maciulevičius
16
Paskirstytųjų skaičiavimų
plečiamumas

Kai sistemą reikia plėsti, tenka spręsti įvairias
problemas. Pavyzdžiui, ją plečiant dydžio
atžvilgiu, dažnai susiduriama su centralizuotų
servisų, duomenų ir algoritmų apribojimais:
Kas
centralizuota
Servisai
Duomenys
Algoritmai
Lygiagrečiosios sistemos
Pavyzdžiai
Vienas serveris visiems vartotojams
Viena tinklinė duomenų bazė ar DNS
lentelė
Maršrutizavimas naudojant pilną
informaciją apie mašinas ir linijas
© S.Maciulevičius
17
Paskirstytųjų skaičiavimų
plečiamumas



Kartais tikslinga turėti vieną serverį. Pavyzdžiui, turime tokią
labai konfidencialią informaciją, kaip medicininė informacija
(pacientų sveikatos kortelės)
Gerai būtų ją laikyti saugioje patalpoje ir gerai apsaugotą nuo
įsibrovimų per tinklą. Serverio informacijos kopijavimas į kelias
vietas padidintų sistemos našumą, tačiau sumažintų saugumą
Panašiai ir su duomenų centralizavimu. Tarkime, didelės
šalies telefono abonentų informacija nesunkiai tilptų viename
disko skyriuje, tačiau prieiga būtų labai komplikuota.
Analogiška situacija ir su vienintele DNS lentele. Kiekvienas
kreipinys į URL būtų peradresuojamas į vienintelį DNS serverį
Lygiagrečiosios sistemos
© S.Maciulevičius
18
Paskirstytųjų skaičiavimų
plečiamumas



Geografinis plečiamumas turi savų problemų
Viena iš pagrindinių yra ta, kad pradžioje paskirstytos
sistemos buvo kuriamos LAN’ams, kurie rėmėsi
sinchronizuotais ryšiais. Šiuo atveju serviso prašantis
(paprastai vadinamas klientu) blokuojamas, iki negaus
atsako
LAN’e tai tinka, nes atsako laikas neviršija milisekundės.
Tačiau dideliame tinkle komunikacijos laikas gali būti
didesnis tūkstančiais kartų, todėl interaktyvių sistemų
kūrimas kelia didelių rūpesčių
Lygiagrečiosios sistemos
© S.Maciulevičius
19
Paskirstytųjų skaičiavimų
plečiamumas


Kita problema - dideliame tinkle komunikacijos
patikimumas žymiai mažesnis, o ryšys nustatomas tarp
dviejų mazgų (point-to-point). Tuo tarpu LAN
patikimumas aukštas ir jiems būdinga transliacija
(broadcasting), kas palengvina paskirstytų sistemų
kūrimą
Pavyzdžiui, imkime serviso vietos nustatymą. LAN’e
procesas transliuoja pranešimą visoms mašinoms
klausdamas, kurioje iš jų servisas teikiamas. Jį teikianti
mašina atsako, pridėdama savo adresą
Lygiagrečiosios sistemos
© S.Maciulevičius
20
Paskirstytųjų skaičiavimų
plečiamumas



Tokia vietos nustatymo schema dideliame tinkle negalima
– įsivaizduokime, kaip tai atrodytų didelėje šalyje ar
Internete. Serviso vietos nustatymui reikia sukurti
specialų servisą, kuris turėtų būti paskleistas po visą
pasaulį ir galėtų aptarnauti milijonus vartotojų
Todėl geografinis plečiamumas yra ribotas dėl našumo ir
patikimumo problemų, iškylančių dideliuose tinkluose
Kita vertus, centralizacija iššaukia tinklo resursų
švaistymą. Tarkime, didelėje šalyje būtų vienas pašto
serveris. Tuomet kaimynui adresuotas laiškas taip pat
keliautų per jį
Lygiagrečiosios sistemos
© S.Maciulevičius
21
Paskirstytųjų skaičiavimų
plečiamumas



Daugeliu atvejų sunku paskirstytąją sistemą plėsti
per keletą nepriklausomų administracinių domenų
Čia susiduriama su tokiomis problemomis, kaip
resursų išnaudojimas ir atsiskaitymas už tai
(apmokėjimas), valdymas, sauga
Pavyzdžiui, viename domene esantys vartotojai juo
pasitiki, nes administratorius gali įdiegti papildomas
priemones saugai užtikrinti. Tačiau išeinant už šio
domeno ribų pasitikėjimas krinta, ir reikia imtis
papildomų priemonių
Lygiagrečiosios sistemos
© S.Maciulevičius
22
Paskirstytųjų skaičiavimų
plečiamumas


Pirma, paskirstytąją sistemą reikia apsaugoti nuo
kenkėjiškų atakų iš kito domeno pusės. Pavyzdžiui, tai
pasiektume kito domeno vartotojams suteikę tik failų
skaitymo teisę arba jiems neleidžiant naudotis
našiausiais domeno kompiuteriais
Antra, kitas domenas savo ruožtu turi imtis priemonių,
kad apsisaugotų nuo kenkėjiškų atakų iš paskirstytosios
sistemos pusės. Būdingas pavyzdys – tokių programų
kaip įskiepiai (applets) parsisiuntimas naudojant interneto
naršyklę
Lygiagrečiosios sistemos
© S.Maciulevičius
23
Klaidos



Akivaizdu, kad paskirstytosios sistemos yra žymiai
sudėtingesnės nei paprastos, nes jų komponentai yra
išbarstyti tinkle
Išbarstymo nepaisymas sistemos projektavimo metu
gali duoti blogus rezultatus – bereikalingą
sudėtingumą, klaidas, kurias teks vėliau ištaisyti
Sun Microsystems specialistas Peter Deutsch
suformulavo tokias daugelio pradedančiųjų daromas
klaidingas prielaidas:
Lygiagrečiosios sistemos
© S.Maciulevičius
24
Klaidos








Tinklas yra patikimas
Tinklas yra saugus
Tinklas yra homogeniškas
Tinklo topologija yra nekintama
Vėlinimas tinkle yra nulinis
Tinklo pralaidumas yra begalinis
Transportavimo išlaidos yra nulinės
Tinkle yra vienas administratorius
Lygiagrečiosios sistemos
© S.Maciulevičius
25
Paskirstytųjų sistemų tipai

Tanenbaumas skiria tris paskirstytųjų sistemų tipus:




Paskirstytosios skaičiavimų sistemos
Paskirstytosios informacinės sistemos
Paskirstytosios įterptinės sistemos
Paskirstytosios skaičiavimų sistemos skirtos labai
našiems skaičiavimams. Čia skiriamos dvi grupės:


Klasterinės skaičiavimų sistemos
Gridas
Lygiagrečiosios sistemos
© S.Maciulevičius
26
Klasterinės skaičiavimų sistemos

Apie klasterius jau esame kalbėję. Klasterinės
sistemos pavyzdys:
Valdymo
programa
Lygiagr.
bibliotekos
Lygiagr.
taikomosios
programos
komponentas
Lygiagr.
taikomosios
programos
komponentas
Lygiagr.
taikomosios
programos
komponentas
Lokali OS
Lokali OS
Lokali OS
Lokali OS
Nuotolinės
prieigos
tinklas
Lygiagrečiosios sistemos
Standartinis tinklas
Didelės spartos tinklas
© S.Maciulevičius
27
Grido architektūra

Fosteris pateikia tokią grido architektūrą:
Taikomosios programos
Apjungimo lygmuo
(Collective layer)
Sujungimo lygmuo
(Connectivity layer)
Resursų lygmuo
(Resource layer)
“Gamybos” lygmuo
(Fabric layer)
Lygiagrečiosios sistemos
© S.Maciulevičius
28
Grido architektūra

Grido architektūroje skiriami keturi lygmenys:

Žemiausiame “gamybos” lygmenyje (fabric layer)
yra sąsajos su to mazgo vietiniais resursais. Jo
sukurtos taip, kad virtualioje organizacijoje būtų
galima bendrai naudoti resursus. Paprastai jos
realizuoja resursų būsenos ir jų galimybių
užklausas, kartu įgalindamos ir gauto resurso
valdymą
Lygiagrečiosios sistemos
© S.Maciulevičius
29
Grido architektūra



Sujungimo lygmenyje (connectivity layer) yra ryšio
protokolai, palaikantys grido tranzakcijas, apimančias
kelių resursų naudojimą (pavyzdžiui, duomenų
persiuntimo tarp resursų protokolai)
Šiame lygmenyje yra ir saugos protokolai,
užtikrinantys vartotojų ir resursų autentifikavimą
Resursų lygmuo (resource layer) atsako už atskiro
resurso valdymą. Jis naudoja sujungimo lygmens
teikiamas funkcijas ir kreipiasi į sąsajas, esančias
žemiausiame lygmenyje. Pavyzdžiui, šis lygmuo
duoda priemones resurso konfigūracijos informacijai
gauti arba vykdyti tokias operacijas, kaip proceso
sukūrimas ar duomenų skaitymas
Lygiagrečiosios sistemos
© S.Maciulevičius
30
Grido architektūra


Apjungimo lygmuo (collective layer) tvarko prieigą
prie įvairių resursų; jį paprastai sudaro servisai
resursų suradimui, jų vietos nustatymui, duomenų
replikavimui ir pan.
Skirtingai nuo sujungimo ir resursų lygmenų,
kuriuos sudaro palyginus nedideli standartiniai
protokolų rinkiniai, apjungimo lygmenį gali sudaryti
daug skirtingų įvairiems tikslams skirtų protokolų,
atitinkančių platų virtualiosios organizacijos
servisų spektrą
Lygiagrečiosios sistemos
© S.Maciulevičius
31
Grido architektūra


Galiausiai taikomųjų programų lygmenį (application
layer) sudaro virtualiojoje organizacijoje
naudojamos taikomosios programos, kurios ir
įgalina vartotojus naudotis grido aplinka
Paprastai apjungimo, sujungimo ir resursų
lygmenys sudaro vadinamąjį grido tarpinės
programinės įrangos sluoksnį (grid middleware
layer). Šie lygmenys kartu sudaro sąlygas naudotis
per daug mazgų pasklidusiais resursais ir juos
valdyti
Lygiagrečiosios sistemos
© S.Maciulevičius
32
Paskirstytosios informacinės
sistemos


Paskirstytosios informacinės sistemos
sutinkamos organizacijose, kurios susiduria su
daugybe tinklinių programų, reikalaujančių tampraus
tarpusavio ryšio
Daugelis esamų tarpinės programinės įrangos
sprendimų yra darbo su infrastruktūra, kurioje buvo
geriau integruoti taikomąsias programas į visos
įmonės informaciną sistemą, rezultatas
Lygiagrečiosios sistemos
© S.Maciulevičius
33
Paskirstytosios informacinės
sistemos




Galime išskirti keletą lygmenų, kuriuose vyko integracija
Daugeliu atvejų tinklinę taikomąją programą sudaro tą
programą (dažnai kartu su duomenų baze) vykdantis
serveris, sudarantis galimybę pasiekti ją nuotoliniu būdu
vadinamajam klientui
Tokie klientai gali siųsti serveriui užklausą vykdyti
specialią operaciją, kurios rezultatai išsiunčiami atgal
klientui
Integracija žemiausiu lygmeniu leistų klientams apjungti
keletą užklausų, skirtų (galbūt) skirtingiems serveriams,
į vieną didesnę užklausą, kuri būtų vykdoma kaip
paskirstyta tranzakcija
Lygiagrečiosios sistemos
© S.Maciulevičius
34
Paskirstytosios informacinės
sistemos


Kai taikomosios programos tapo sudėtingesnės ir
palaipsniui buvo atskirti nepriklausomi jų
komponentai (ypač duomenų bazė nuo apdorojimo
komponentų), tapo aišku, kad integracija taip pat
turėtų vykti leidžiant užklausoms tiesiogiai bendrauti
tarpusavyje
Tai sudarė sąlygas vystytis didžiulei pramonei, kuri
koncentravosi ties organizacijų taikomosios
programinės įrangos integracija (Enterprise
Application Integration – EAI)
Lygiagrečiosios sistemos
© S.Maciulevičius
35
Tranzakcijų apdorojimo sistemos



Imkime taikomąsias programas, susijusias su
duomenų bazėmis. Praktiškai operacijos čia
atliekamos tranzakcijų pavidalu
Jų programavimui reikalingi specialūs primityvai,
kuriuos gali duoti arba žemiau esanti paskirstytoji
sistema, arba vykdymo sistema (runtime system)
Pavyzdžiui, pašto sistemoje tokiais primityvais yra
laiško siuntimas, laiško gavimas ar laiško
peradresavimas
Lygiagrečiosios sistemos
© S.Maciulevičius
36
Tranzakcijų apdorojimo sistemos

Būdingi tranzakcijų pavyzdžiai:
Primityvas
Jo aprašas
BEGIN_TRANSACTION
Pradėti tranzakciją
END_TRANSACTION
Užbaigti tranzakciją
ABORT_TRANSACTION Nutraukti tranzakciją ir atstatyti
buvusias reikšmes
READ
Skaityti duomenis iš failo, lentelės ir
pan.
WRITE
Įrašyti duomenis į failą, lentelę ir pan.
Lygiagrečiosios sistemos
© S.Maciulevičius
37
Tranzakcijų apdorojimo sistemos



BEGIN_TRANSACTION ir END_TRANSACTION
naudojamos tranzakcijai atriboti - tarp jų užrašytos
operacijos sudaro tranzakcijos kūną
Būdinga tranzakcijos savybė yra tai, kad arba visos
šios operacijos yra vykdomos arba nė viena iš jų
nėra vykdoma
Tai gali būti sistemos iškvietimai, bibliotekos
procedūros, kalbos bloką išskiriantys operatoriai (tai
priklauso nuo realizacijos)
Lygiagrečiosios sistemos
© S.Maciulevičius
38
Tranzakcijų apdorojimo sistemos


Ši savybė (viskas arba nieko) yra viena iš keturių jų
charakteristikų.
Tranzakcijos yra:




atominės (atomic): išoriniam pasauliui jos nėra matomos
darnios (consistent): tranzakcija nepažeidžia sistemos
izoliuotos (isolated): vienu metu vykdomos tranzakcijos
neįtakoja viena kitos
ilgalaikės (durable): kai tranzakcija įvykdoma, pokyčiai
išlieka visam laikui
Lygiagrečiosios sistemos
© S.Maciulevičius
39
Tranzakcijų apdorojimo sistemos



Pirmoji savybė (atomiškumas) reiškia, kad
tranzakcija arba įvykdoma pilnumoje, arba
nevykdoma iš viso; jei ji įvykdoma, tai atliekama kaip
nepastebimas ir momentinis veiksmas
Kol tranzakcija vykdoma, kiti procesai negali matyti
jokios tarpinės būsenos
Antroji savybė (darnumas) reiškia, kad sistema po
tranzakcijos turi išlikti tokioje pačioje būsenoje (gal
būt, vienoje iš kelių galimų), kurioje buvo prieš
tranzakciją
Lygiagrečiosios sistemos
© S.Maciulevičius
40
Tranzakcijų apdorojimo sistemos

Trečioji savybė (izoliuotumas) reiškia, kad jei dvi ar
daugiau tranzakcijų vykdomos vienu metu, galutinis
rezultatas yra toks, lyg tranzakcijos būtų vykdomos
nuosekliai viena po kitos tam tikra (priklausančia nuo
sistemos) eilės tvarka

Ketvirtoji savybė (ilgalaikiškumas) reiškia, kad
tranzakciją pradėjus ji vykdoma iki galo, ir jos
rezultatai išlieka visam laikui
Lygiagrečiosios sistemos
© S.Maciulevičius
41
Taikomosios programinės įrangos
integracija



Kuo daugiau programų tapo atsietos nuo duomenų
bazių, kurioms jos buvo sukurtos, tapo akivaizdu, kad
programas reikia integruoti nepriklausomai nuo jų
duomenų bazių
Visų pirma, programų komponentai turėtų tiesiogiai
bendrauti vienas su kitu ir ne tik tranzakcijų
apdorojimo sistemų remiamu užklausos/atsako
mechanizmu
Pagrindinė idėja buvo ta, kad esamos programos
galėtų tiesiogiai keistis informacija:
Lygiagrečiosios sistemos
© S.Maciulevičius
42
Tarpinė programinė įranga
komunikavimui
Kliento
taikomoji
programa
Kliento
taikomoji
programa
Komunikavimo tarpinė programinė įranga
Serverinė
taikomoji
programa
Lygiagrečiosios sistemos
Serverinė
taikomoji
programa
© S.Maciulevičius
Serverinė
taikomoji
programa
43
Komunikavimo tarpinė programinė
įranga

Yra keli komunikavimo tarpinės programinės įrangos
tipai

Naudojant nutolusių procedūrų iškvietimą (remote
procedure calls - RPC), programinės įrangos
komponentas gali efektyviai siųsti kitam programinės
įrangos komponentui užklausas lokalios procedūros
iškvietimo pavidalu; tai reiškia, kad užklausa bus
sudėta į paketą ir nusiųsta kviečiamajam. Analogišku
būdu bus persiųsti ir darbo rezultatai
Lygiagrečiosios sistemos
© S.Maciulevičius
44
Komunikavimo tarpinė programinė
įranga



Išaugus objektinių technologijų populiarumui, buvo
sukurtas kitas nutolusių objektų iškvietimo metodas,
žinomas remote method invocations – RMI – vardu
RMI iš esmės nuo RPC skiriasi tik tuo, kad čia
naudojant Java programavimo kalbą operuojama
objektais, o ne taikomosiomis programomis
RMI ir RPC turi tą trūkumą, kad kviečiantysis ir
kviečiamasis komunikacijos metu abu turi būti “gyvi”.
Be to, jie turi tiksliai žinoti, kaip kreiptis į vienas kitą
Lygiagrečiosios sistemos
© S.Maciulevičius
45
Komunikavimo tarpinė programinė
įranga

Todėl buvo sukurta nutolusių objektų iškvietimo
tarpinė programinė įranga, orientuota į pranešimų
perdavimą (message-oriented middleware -
MOM).


Čia taikomoji programa paprasčiausiai siunčia
pranešimą kontaktiniam taškui
Taikomosios programos gali parodyti, kad jos domisi
tam tikro tipo pranešimais; tuomet komunikavimo
tarpinė programinė įranga pasirūpins, kad toks
pranešimas būtų nusiųstas tai taikomajai programai
Lygiagrečiosios sistemos
© S.Maciulevičius
46
Paskirstytųjų sistemų architektūros



Paskirstytosios sistemos remiasi programine įranga,
kurios komponentai paskleisti tinkle daugelyje
mašinų
Galima įvairiai žiūrėti į paskirstytųjų sistemų
organizavimą, tačiau reikia skirti jų programinės
įrangos komponentų loginę organizaciją nuo fizinės
organizacijos
Paskirstytosios sistemos programinės įrangos
architektūra, dar vadinama sistemos architektūra,
mums rodo, kaip organizuoti įvairūs programinės
įrangos komponentai ir kaip jie bendrauja tarpusavyje
Lygiagrečiosios sistemos
© S.Maciulevičius
47
Paskirstytųjų sistemų architektūros

Specialistai identifikuoja keletą paskirstytųjų
sistemų architektūros stilių, iš kurių
svarbiausieji yra:




Sluoksninės (Layered) architektūros
Objektinės (Object-based) architektūros
Bendros duomenų (Data-centered) architektūros
Įvykiais grįstos (Event-based) architektūros
Lygiagrečiosios sistemos
© S.Maciulevičius
48
Architektūros stiliai
Sluoksninis

n-asis lygmuo
(n-1)-asis lygmuo
Užklausų
srautas
Atsakų
srautas

2-asis lygmuo

1-asis lygmuo
Lygiagrečiosios sistemos
Šio stiliaus idėja paprasta –
komponentai išdėstomi
sluoksniais, kur n-ojo sluoksnio
komponentas gali kreiptis tik į
(n-1)-jo sluoksnio komponentą
Šis modelis plačiai naudojamas
tinklo bendruomenėje
Tad valdymas eina iš viršaus
žemyn, o rezultatai keliauja
priešinga kryptimi
© S.Maciulevičius
49
Architektūros stiliai
Objektinis
Objektas

Objektas

Objektas
Objektas

Objektas
Lygiagrečiosios sistemos
Čia turime kur kas
laisvesnę organizaciją
Iš esmės objektai atitinka
komponentus, ir šie
komponentai susieti
naudojant (nutolusių)
procedūrų iškvietimo
mechanizmą
Tai atitinka kliento-serverio
modelį
© S.Maciulevičius
50
Architektūros stiliai

Bendros duomenų erdvės
Komponentas
Publikuoti
Komponentas
Duomenų
pateikimas

Bendra duomenų
erdvė
Lygiagrečiosios sistemos
© S.Maciulevičius
Šio tipo architektūros
pagrindas – procesų
komunikavimas
naudojant bendrą
saugyklą (repositorijų)
Tokia paskirstytų
sistemų architektūra
yra lygiai taip pat
svarbi, kaip
sluoksniuota ir
objektais pagrįsta
architektūros
51
Architektūros stiliai

Įvykiais grįstas
Komponentas
Komponentas
Įvykio
pateikimas
Publikuoti
Komponentas
Lygiagrečiosios sistemos

Čia procesai pagrindinai
komunikuoja tarpusavyje
per įvykių sklidimą (kartu
gali būti perduodami ir
duomenys)
Paskirstytose sistemos
įvykių sklidimas daugiausia
asocijuojasi su vadinamuoju
publikavimu/prenumeravimu
– įvykis pateikiamas tik
tiems procesams, kurie jo
laukia
© S.Maciulevičius
52
Centralizuotos architektūros

Pagrindiniame kliento-serverio modelyje
paskirstytosios sistemos procesai skiriami į dvi
grupes (jos gali ir persidengti):


Serveris – procesas, realizuojantis tam tikrą servisą
(paslaugą), pavyzdžiui, failų sistemos servisą (paslaugą);
Klientas – procesas, kuris kreipiasi į serverį, kad šis
suteiktų tam tikrą servisą (paslaugą), ir laukiantis, iki šis
servisas jam bus suteiktas:
Laukia rezultatų
Klientas
Užklausa
Atsakas
Serveris
Teikia servisą
Lygiagrečiosios sistemos
© S.Maciulevičius
Laikas
53
Kliento ir serverio bendravimas



Kliento ir serverio bendravimas gali būti realizuotas
naudojant paprastą protokolą, jei tinklas patikimas
(pvz., lokalus)
Tokiais atvejais, kai klientas prašo paslaugos, jis
paprasčiausiai suformuoja paketą, nurodydamas
pageidaujamą servisą kartu su būtinais įvesties
duomenimis
Pranešimas yra siunčiamas į serverį. Pastarasis
visada laukia ateinančios užklausos, gavęs ją
apdoroja ir suformuoja rezultatų paketą, kurį kaip
atsaką siunčia klientui
Lygiagrečiosios sistemos
© S.Maciulevičius
54
Kliento ir serverio bendravimas




Jei tinklas nėra labai patikimas, pranešimas
gali būti iškreiptas ar prarastas
Tokiais atvejais klientas gali pakartoti
užklausą, jei nesulaukia atsako iš serverio
Tačiau kaip nustatysime, ar pradinis
pranešimas buvo prarastas, ar tik atsako
siuntimas sutriko?
Pastaruoju atveju pakartota užklausa gali
iššaukti ir pakartotinę operaciją (pvz., pinigų
pervedimą į nurodytą sąskaitą (!?))
Lygiagrečiosios sistemos
© S.Maciulevičius
55
Kliento ir serverio bendravimas


Kaip alternatyvą daugelis kliento-serverio
sistemų naudoja patikimą ryšio protokolą.
Nors šis sprendimas nėra visiškai tinkamas
vietiniame tinkle dėl palyginti mažo
efektyvumo, ji puikiai veikia plačiajame tinkle
(WAN), kuriame ryšis iš esmės yra mažiau
patikimas
Pavyzdžiui, beveik visi Interneto programų
protokolai yra grindžiami patikimais TCP/IP
ryšiais
Lygiagrečiosios sistemos
© S.Maciulevičius
56
Kliento ir serverio bendravimas



Tokiu atveju, kai klientas nori siųsti užklausą, ji
pirmiausia nustato ryšį su serveriu
Serveris paprastai naudoja tą patį ryšį
siųsdamas atsaką, po kurio siuntimo ryšys yra
nutraukiamas. Bėda ta, kad ryšio nustatymas ir
jo nutraukimas yra santykinai brangus, ypač kai
užklausa ir atsakas yra trumpi
Dėl to kliento-serverio modelis iššaukė daug
diskusijų
Lygiagrečiosios sistemos
© S.Maciulevičius
57
Kliento ir serverio sistema


Viena iš to priežasčių – kaip nustatyti aiškią ribą
tarp kliento ir serverio
Pavyzdžiui, imkime paskirstytos duomenų bazės
serverį. Jis gali nuolat veikti kaip klientas, nes jis
teikia užklausas skirtingiems failų serveriams,
atsakingiems už duomenų bazės lentelių
saugojimą. Tokiu atveju duomenų bazės serveris
iš esmės, apdorodamas užklausas, pats
generuoja kitas užklausas
Lygiagrečiosios sistemos
© S.Maciulevičius
58
Programų sluoksniavimas

Todėl daugelis pasisako už trijų lygmenų išskyrimą
(kas iš esmės atitinka sluoksniuotos architektūros
stilių):
1. Vartotojo sąsajos lygmuo
2. Apdorojimo lygmuo
3. Duomenų lygmuo

Vartotojo sąsajos lygmenyje yra viskas, ko reikia
vartotojui, pavyzdžiui, ekrano valdymas. Apdorojimo
lygmenyje paprastai yra taikomosios programos.
Duomenų lygmenyje tvarkomi faktiniai duomenys
Lygiagrečiosios sistemos
© S.Maciulevičius
59
Pavyzdys – Inteneto paieškos
sistema
Vartotojo
sąsajos
lygmuo
Vartotojo sąsaja
Raktiniai žodžiai
HTML puslapis
su sąrašu
HTML
generatorius
Užklausos
generatorius
DB užklausa
Rikiuotas puslapių
sąrašas
Rangavimo
algoritmas
Web puslapių
duomenų bazė
Lygiagrečiosios sistemos
Apdorojimo
lygmuo
Web puslapių
antraštės
su metaduomenimis
© S.Maciulevičius
Duomenų
lygmuo
60
Serveris veikia kaip klientas
Vartotojo
sąsaja
Laukia rezultatų
Operacijos
užklausa
Taikomosios
programos
serveris
Grąžinamas
rezultatas
Laukia duomenų
Duomenų
užklausa
Grąžinami
duomenys
DB
serveris
Laikas
Lygiagrečiosios sistemos
© S.Maciulevičius
61
Decentralizuotos architektūros



Dažnai turime kelių lygių kliento-serverio
architektūras. Tokio tipo sistemas dar vadina
sistemomis su vertikaliu paskirstymu
Toks vertikalus paskirstymas gaunamas loginiu
požiūriu skirtingus komponentus realizuojant
skirtingose mašinose
Sutinkamos ir kitokios kelių lygių klientoserverio architektūros, vadinamos sistemomis
su horizontaliu paskirstymu
Lygiagrečiosios sistemos
© S.Maciulevičius
62
Decentralizuotos architektūros


Toks horizontalus paskirstymas gaunamas
skirtingose mašinose realizuojant loginiu
požiūriu ekvivalenčius komponentus, kurių
kiekvienas apdoroja savą duomenų poaibį,
tokiu būdu subalansuojant apkrovą
Viena iš tokių horizontalų paskirstymą turinčių
sistemų klasė vadinama lygiarangėmis
(peer-to-peer) sistemomis
Lygiagrečiosios sistemos
© S.Maciulevičius
63
Hibridinės architektūros




Dar vienas paskirstytųjų sistemų tipas vadinamas
kraštinių serverių (edge-server) sistemomis
Čia serveriai yra Interneto “pakraščiuose”
Galiniai vartotojai arba klientai jungiasi prie
Interneto per kraštinį serverį
Pagrindinė kraštinio serverio paskirtis – tiekti
turinį (content), kartais po jo filtravimo ir
perkodavimo
Lygiagrečiosios sistemos
© S.Maciulevičius
64
Edge-Server sistemos
Klientai
Turinio tiekėjas
ISP
ISP
Internetas
Edge serveris
Lygiagrečiosios sistemos
Organizacijos tinklas
© S.Maciulevičius
65
Edge-Server sistemos



Kraštinių serverių grupė gali būti panaudota
turinio ir taikomųjų programų paskirstymui
optimizuoti
Tam vienas kraštinis serveris daromas
pagrindiniu, kuriame laikomi viso turinio originalai.
Šis serveris kitus naudoja turinio replikoms
saugoti
Toks metodas taikomas Web turiniui laikyti
Lygiagrečiosios sistemos
© S.Maciulevičius
66
Klientai


Pagrindinė kliento mašinos paskirtis – suteikti
vartotojui galimybę bendrauti su nutolusiais
serveriais
Galimi du tokio bendravimo palaikymo būdai:


Kiekvienam nutolusiam servisui kliento mašina turi
atskirą “partnerį” ryšiui su servisu per tinklą
Kliento mašina turi tiesioginį ryšį su nutolusiu servisu
panaudodama patogią sąsają
Lygiagrečiosios sistemos
© S.Maciulevičius
67
Klientai
Kiekvienam nutolusiam servisui - atskiras
“partneris” ryšiui su servisu per tinklą
Kliento mašina
Serverio mašina
Taikomoji programa
Tarpinė
programinė įranga
Taikomoji programa
Specifinis
taikomosios
programos
protokolas
Lokali OS
Lygiagrečiosios sistemos
Tarpinė
programinė įranga
Lokali OS
© S.Maciulevičius
Tinklas
68
Klientai
Kliento mašina turi tiesioginį ryšį su
nutolusiu servisu:
Kliento mašina
Serverio mašina
Taikomoji
programa
Taikomoji
Taikomojiprograma
programa
Tarpinė
programinė įranga
Taikomoji
programa
Taikomoji
Taikomojiprograma
programa
Universalus
protokolas
Lokali OS
Lygiagrečiosios sistemos
Tarpinė
programinė įranga
Lokali OS
© S.Maciulevičius
Tinklas
69
Klientai



Šiuo atveju kliento mašina naudojama kaip
paprasčiausias terminalas, netgi neturintis
lokalios atminties
Viskas yra apdorojama ir saugoma serveryje
Toks klientas vadinamas plonuoju (thin-client); jo
panaudojimas naudingas didėjant Interneto ryšio
galimybėms, plečiantis mobiliųjų įtaisų spektrui
Lygiagrečiosios sistemos
© S.Maciulevičius
70
Serveriai

Serveris – procesas, realizuojantis tam tikrą servisą
nutolusių kliento mašinų pavedimu
Iš esmės visi serveriai dirba vienodu būdu – jie
laukia nutolusio kliento užklausos, ją įvykdo ir vėl
laukia sekančios užklausos

Galimi du serverio funkcionavimo būdai:



Iteratyvinis (iterative) serveris pats vykdo užklausą ir grąžina
rezultatus klientui
Lygiagretusis (concurrent) serveris pats užklausos nevykdo,
o ją nukreipia į atskirą giją ar kitą procesą, o pats vėl laukia
sekančios užklausos
Lygiagrečiosios sistemos
© S.Maciulevičius
71
Serveriai



Vienas iš sprendimų yra panaudoti demoną,
kuris veikia kiekvienoje mašinoje-serveryje
Demonas stebi kiekvienos paslaugos,
realizuotos serveryje, momentinę situaciją
galiniame taške
Pirmiausia klientas susisiekia su demonu,
atsiunčia užklausą galiniam taškui, ir tada
susisiekia su konkrečiu serveriu, kaip parodyta
paveiksle:
Lygiagrečiosios sistemos
© S.Maciulevičius
72
Serveriai
Serverio mašina
Kliento mašina
2. Serviso
užklausa
Serveris
Registruoti
galinį tašką
Klientas
1. Galinio
taško
užklausa
Lygiagrečiosios sistemos
Demonas
© S.Maciulevičius
Galinių taškų
lentelė
73
Serveriai


Priimta galinį tašką sieti su tam tikru servisu. Jei
sistemoje vienu metu realizuoti keli serveriai,
turime neekonomišką resursų naudojimą
Vietoj to, kad būtų sekami daugelis pasyvių
procesų, ekonomiškiau turėti vieną superserverį,
priimantį kreipinius iš visų galinių taškų:
Lygiagrečiosios sistemos
© S.Maciulevičius
74
Serveriai
Serverio mašina
Kliento mašina
2. Tęsti
servisą
Serveris
Klientas
1. Serviso
užklausa
Lygiagrečiosios sistemos
Superserveris
© S.Maciulevičius
Sukurti
serverį
reikalingam
servisui
75
Serverių klasteris

Serverių klasteris – tai grupė mašinų, kurių
kiekvienoje turime vieną ar kelis serverius

Imkime serverių klasterį, kuriame mašinos yra
sujungtos per vietinį tinklą, kas užtikrina didelį
pralaidumą ir maža vėlinimą

Daugeliu atvejų serverio klasteris yra logiškai
suskirstytas į tris lygius, kaip parodyta paveiksle:
Lygiagrečiosios sistemos
© S.Maciulevičius
76
Serverių klasteris
Loginis komutatorius
(gali būti keli)
Klientų
užklausos
Taikomųjų programų/
skaičiavimo serveriai
Paskirstytoji failų
sistema ar DB
Atrinkta
užklausa
Pirmasis lygmuo
Lygiagrečiosios sistemos
Antrasis lygmuo
© S.Maciulevičius
Trečiasis lygmuo
77
Serverių klasteris



Pirmajame lygmenyje turime komutatorių, per kurį
nukreipiamos kliento užklausos į serverius
Antrajame lygmenyje turime galingus serverius,
kuriuose vykdomos atitinkamos taikomosios
programos
Trečiajame lygmenyje turime duomenų apdorojimo
serverius (pavyzdžiui, failų ar duomenų bazių
serverius). Šie serveriai gali būti realizuoti
specializuotose mašinose, turinčiose labai sparčius
diskus ar duomenų kešus
Lygiagrečiosios sistemos
© S.Maciulevičius
78