konspekt - Tartu Ülikool
konspekt - Tartu Ülikool
konspekt - Tartu Ülikool
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Peatükk 6<br />
Kaugprotseduurid<br />
Kuigi klient-server-mudel annab meile mugava vahendi hajussüsteemi struktueerimiseks,<br />
on tal üks oluline probleem: protsessidevaheline suhtlemine sõltub sisend/väljund<br />
(edaspidi S/V) primitiividest. Kuna meie eesmärk on kujundada hajussüsteem<br />
võimalikult lähedaseks tsentraliseeritud süsteemile ja S/V ei ole tsentraliseeritud<br />
süsteemides just kõige olulisem osa, siis hajussüsteemi ehitamine S/V<br />
ümber ei ole ilmselt kõige õigem tee.<br />
Sellel probleemil polnud pikka aega lahendust, kuni Birell ja Nelson pakkusid<br />
1984 aastal välja lihtsa idee. Nende soovitus oli lubada programmidel kasutada<br />
teistes arvutites asuvaid protseduure. Kui protsess masinas kutsub protseduuri<br />
masinast , siis protsess masinas peatatakse ja täidetakse protseduuri masinas<br />
. Informatsiooni masinate vahel saab vahetada protseduuri parameetrite ja tagastatava<br />
väärtusega. Programmeerija ei oma otsest juurdepääsu teadete edastamise<br />
või S/V mehhanismidele. Seda meetodit tuntakse kaugprotseduuride meetodina<br />
(remote procedure call), edaspidi RPC.<br />
Kuigi see idee on lihtne ja elegantne, kaasneb ikkagi terve rida probleeme.<br />
Esiteks, protseduurid (väljakutsuja ja väljakutsutav) asuvad potensiaalselt eri masinates<br />
ja neid täidetakse eri aadressruumides. Parameetrid ja tagastatavad väärtused<br />
tuleb edastada eri masinate vahel, mis võib olla komplitseeritud, eriti, kui<br />
meil on tegu erinevate arhitektuuridega. Lisaks võib üks masinatest seiskuda, mis<br />
toob omakorda kaasa erinevaid probleeme.<br />
6.1 RPC omadused<br />
Esitame siinkohal RPC semantika põhilised aspektid.<br />
¯ Kaugprotseduuride definitsioonis sisalduvad sisend ja väljundparameetrid.<br />
Sisendparameetritega edastatakse protseduuri argumentide väärtuseid. Väljundparameetritega<br />
edastatakse serverist andmed protseduuri väljakutsuja<br />
45<br />
keskkonda.<br />
¯ Iga RPC süsteem sisaldab liidese defineerimise keelt. Lokaalsete protseduuride<br />
väärtusi edastavatele parameetritele vasted kaugprotseduurides on<br />
sisendparameetrid. Väärtuste viidete korral aga tuleb kaasata andmete struktuuri<br />
kohta lisainformatsiooni, mis koostatakse liidese defineerimise keele<br />
abil.<br />
¯ Kaugprotseduuri keskkond on protseduuri kasutaja keskkonnast erinev. Serveris<br />
töötav kaugprotseduur ei oma juurdepääsu kliendi keskkonna muutujatele.<br />
¯ Kaugprotseduuriga ei oma mõtet viida edastamine. Kuna kaugprotseduuri<br />
keskkond on protseduuri kasutaja keskkonnast erinev, siis viitade kasutamine<br />
sisend/väljundparameetrite andmestruktuurides ei oma mõtet.<br />
6.2 Disaini probleemid<br />
6.2.1 RPC süsteemide klassid<br />
RPC süsteemid jagunevad kahte klassi:<br />
¯ RPC on integreeritud programmeerimiskeelde.<br />
¯ Serveri-kliendi vaheliste liideste kirjeldamiseks kasutatakse spetsiaalset keelt.<br />
6.2.2 Liidese defineerimise keel<br />
RPC liidese definitsioon määrab klientidele nähtavate serveri protseduuride karakteristikud.<br />
Määratakse protseduuride nimed ja parameetrite tüübid. Ka peab<br />
olema iga parameetri jaoks näidatud, kas tegu on sisend-, väljund- või mõlemat<br />
tüüpi parameetriga. Liides määrab ka teenuse nime, mida kasutavad kliendid ja<br />
serverid viitamaks teenusele, mis koosneb protseduuride hulgast, mis osutavad<br />
antud teenust.<br />
6.2.3 Vigade käsitlemine<br />
RPC kasutamine võib ebaõnnestuda, kui ei õnnestu kontakteeruda serveriga, tavaliselt<br />
siis, kui server on maas või liiga hõivatud. Seega peab RPC olema võimeline<br />
teatama võimalikest vigadest, mis võivad tekkida suhtlemisel või protseduuri täitmisel.<br />
46