Upload
voquynh
View
224
Download
3
Embed Size (px)
Citation preview
OTVORENO RA^UNARSTVO RASPODIJELJENI RA^UNALNI SUSTAVI
MARIO @AGAR
Otvoreno računarstvoRaspodijeljeni računalni sustavi
Mario Žagar
Otvoreno računarstvo - Preglednik, poslužitelj i komunikacija među njima3
Predgovoro Svaki uređaj mora imat dva priključka:
o jedan za napajanjeo jedan za komuniciranje
M.Ž. 1983.*
*Misao vodilja (moto) vrijedi i danas!
Raspodijeljeni računalni sustavio Slojevita arhitektura
o Arhitekture raspodijeljenih aplikacijao Klijent i poslužiteljio Međuprocesna komunikacijao Aplikacijski protokolio Mehanizmi protokola i stanja usluga
Otvoreno računarstvo - Raspodijeljeni računalni sustavi5
Slojevita arhitekturao Element slojevitog modela:
o slojevi o razine apstrakcije, rješavaju neovisne zadatke
o konektori o protokoli interakcije između susjednih slojeva
o Hijerarhijska organizacija slojevao interakcija samo između susjednih slojevao udaljeni slojevi “skriveni”
Otvoreno računarstvo - Raspodijeljeni računalni sustavi6
Svojstva slojevite arhitektureo Prednost slojevite arhitekture:
o sloj obavlja točno određenu uloguo slojevi “slabo” povezani konektorimao neovisnost o implementaciji, slojevi
jednostavno zamjenjivio protokoli interakcije se moraju strogo
poštovato Nedostaci slojevite arhitekture:
o smanjena učinkovitost sustavao skupa promjena protokola interakcijeo ponekad teško identfcirat jasno
odijeljene slojeve
Rainbow Colours Cheese Layered Cake
Coconut Milky Yam cheese Layered Cake
Otvoreno računarstvo - Raspodijeljeni računalni sustavi7
Izvedba slojeva i konektora (I)o Monolitna aplikacija:
o jedan proces izvođen u okviru operacijskog sustava jednog računala
o slojevio logički (i fzički?) odvojene biblioteke funkcijao čine jedinstveni izvedbeni kôd aplikacije
o konektori između slojevao skup funkcija vidljivih iz
susjednog slojao komunikacija
pozivi funkcija susjednog sloja
Otvoreno računarstvo - Raspodijeljeni računalni sustavi8
Izvedba slojeva i konektora (II)o Višeprocesna aplikacija:
o dva ili više procesa izvođenih na jednom ili više računala o izvođenje na više računala - raspodijeljena aplikacijao (neki ili svi) slojevi izolirani unutar zasebnih procesao konektori između slojeva
o mehanizmi međuprocesne komunikacijeo komunikacijski protokol
Otvoreno računarstvo - Raspodijeljeni računalni sustavi9
Slojevi aplikacijeo Tipična arhitektura aplikacije sastoji se
od tri sloja:o sloja prezentacije (GUI)o sloja aplikacijske logikeo sloja podataka
o Unutar th slojeva mogu se identfcirat i fnije podjele na dodatne slojeveo ovisno o aplikaciji
Raspodijeljeni računalni sustavio Slojevita arhitekturao Arhitekture raspodijeljenih aplikacija
o Klijent i poslužiteljio Međuprocesna komunikacijao Aplikacijski protokolio Mehanizmi protokola i stanja usluga
Otvoreno računarstvo - Raspodijeljeni računalni sustavi11
Monolitna arhitekturao Svi funkcionalni slojevi aplikacije unutar procesa
izvođenog na jednom računaluo Primjeri:
o obrada teksta, o tablični kalkulator, o razvojne okoline, o single-player igre ...
o Dodatni alat potrebni za omogućavanje grupnog radao npr. subversion (svn, cvs ...)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi12
Dvoslojna arhitekturao Funkcionalni slojevi grupirani u dva zasebna
ahitekturna sloja (2-ter), tj. procesao klijentska aplikacija
o sadrži funkcionalne slojeve prezentacije i aplikacijske logike (ako postoji)
o poslužiteljska aplikacija o sadrži sloj podataka
o Poslužiteljska aplikacija o može istovremeno pružat
usluge jednoj ili više klijentskih aplikacija
Otvoreno računarstvo - Raspodijeljeni računalni sustavi13
Troslojna arhitekturao Funkcionalni slojevi grupirani u tri zasebna
arhitekturalna sloja (3-ter), tj. procesao sloj prezentacije – klijenska aplikacijao srednji sloj - sloj aplikacijske logikeo sloj podataka - baza podataka, ...
Otvoreno računarstvo - Raspodijeljeni računalni sustavi14
Tanki i debeli klijento Debeli klijent (fat client):
o sadrži slojeve prezentacije i aplikacijske logike
o zahtjeva veću snagu obrade računala domaćina i veću količinu podataka prenošenih mrežom
o Tanki klijent (thin client):o sadrži samo sloj prezentacijeo manja snaga obrade, manja količina
prenošenih podataka
Otvoreno računarstvo - Raspodijeljeni računalni sustavi15
Karakteristike arhitekturao Procjena s obzirom na sljedeće parametre:
o snaga obrade računalao kapacitet spremišta podataka (centralnih, lokalnih ...)o propusnost komunikacijske infrastruktureo prilagodljivost (proširivost, skalabilnost) sustava
o npr. u slučaju povećanja broja korisnika ...o robusnost sustava
o npr. nedostupnost pojedinih komponenata sustava ...o cijena izgradnje sustavao cijena održavanja sustava
Otvoreno računarstvo - Raspodijeljeni računalni sustavi16
Višeslojna arhitekturao Višeslojna arhitektura (mult-ter, n-ter) sadrži
višestruke (specijalizirane i/ili redundantne) aplikacijske poslužitelje i/ili baze podatakao ravnomjernija raspodjela opterećenjao potrebna veća propusnost komunikacijske infrastrukture
Otvoreno računarstvo - Raspodijeljeni računalni sustavi17
Peer-to-peer (p2p) arhitekturao Svaki enttet (čvor) čini cjelovit funkcionalni enttet
o monolitna arhitekturao funkcionalnost sustava postže se suradnjom
jednakovrijednih enttetao enttet mogu "igrat" sve uloge u sustavuo koju ulogu igraju i prema kojem drugom enttetu, ovisi o
trenutnom stanju sustavao npr. BitTorrent:
o pojedini čvor može imat ulogu klijenta prema jednoj grupi čvorova, a ulogu poslužitelja prema drugoj grupi čvorova
Otvoreno računarstvo - Raspodijeljeni računalni sustavi18
Redovi poruka (I)o Čvrsta sprega (tght coupling) između procesa i
čvorova u višeslojnim i p2p arhitekturamao uspostava komunikacijskog kanala između točno
određenih sudionika komunikacijeo sinkrona priroda komunikacijeo implementacija specifčnog komunikacijskog protokola
(jezika)o Kod povezivanja neovisno izgrađenih sustava
navedene karakteristke stvaraju velike probleme!
Otvoreno računarstvo - Raspodijeljeni računalni sustavi19
Redovi poruka (II)o Redovi poruka:
o međuspremnici između sudionika komunikacije
o proizvođači spremaju poruke u redo potrošači dohvaćaju poruke iz redao nema izravnog komunikacijskog
kanala između aplikacija o komunikacija je asinkronao potrebno je implementrat samo
jedan komunikacijski protokol
Otvoreno računarstvo - Raspodijeljeni računalni sustavi20
Potpuno raspodijeljeni sustavio Javno dostupne raspodijeljene komponente
o način implementacije nebitan, bitno sučelje za pristupo usluge (Web servisi)o procedure (RPC, XML-RPC)o objekt (SOAP, CORBA)
o Svaka komponenta pruža određenu funkcionalnosto neovisna o aplikaciji
o Raspodijeljeni sustavi kao orkestriranje raspodijeljenih komponenata
Otvoreno računarstvo - Raspodijeljeni računalni sustavi21
Usluge na Internetuo Usluge – široko korištene raspodijeljene aplikacije
o dostupni klijent i poslužiteljio dobro defnirani (normirani) komunikacijski protokolio defnirane uobičajene adrese (vrata) usluga
o Arhitektura usluga je u pravilu klijent-poslužiteljo s (većim ili manjim) varijacijama na temu
o Protokoli većinom varijacije modela “zahtjev-odgovor” (request - response):o klijent šalje zahtjev poslužiteljuo poslužitelj obrađuje zahtjev i vraća rezultat klijentu
Otvoreno računarstvo - Raspodijeljeni računalni sustavi22
Arhitektura usluga klijent-poslužitelj o WWW, DNS, LDAP, SVN – informacijske usluge
o WWWo jasni slojevi prezentacije i podataka
o DNS, LDAPo uloga klijenta ovisna o konkretnoj primjeni
o SVNo poslužitelj kao sloj podataka, klijent (ni)je sloj prezentacije
o Telnet, SSH – rad na udaljenom računaluo klijent predstavlja prezentacijski sloj (konzolu),
poslužitelj nije “skladište podataka”o što je u ovim slučajevima zahtjev, a što odgovor?
Otvoreno računarstvo - Raspodijeljeni računalni sustavi23
Arhitektura usluge e-pošteo Mail klijent:
o slanje pošte, dohvaćanje pošte iz poštanskog sandučića
o prezentacijski, djelomično i podatkovni sloj (lokalna pohrana pošte)
o Mail poslužitelji: o podatkovni sloj prema klijentmao p2p organizacija prosljeđivanja
(MTAx ↔ MTAy)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi24
Arhitektura usluge FTPo Prijenos datoteka između dva računalao Komunikacijski kanal između klijenta i poslužitelja
za prijenos naredaba i odgovora (command stream)o Za svaki prijenos datoteke otvara se poseban
komunikacijski kanal (data stream)o aktvni mod: poslužitelj inicira vezuo pasivni mod: klijent inicira vezu
Otvoreno računarstvo - Raspodijeljeni računalni sustavi25
Window Systemo Prikaz korisničkog sučelja
o poslužitelj: grafčki prikaz, window managero klijent: korisničke aplikacije (konzola, GUI)o klijent šalju podatke X poslužitelju o izgledu sučelja
(sadržaju prozora u kojem se sučelje aplikacije prikazuje)o poslužitelj prikazuje sadržaj prozora, akcije korisnika
pretvara u događaje i šalje odgovarajućim klijentma
Raspodijeljeni računalni sustavio Slojevita arhitekturao Arhitekture raspodijeljenih aplikacijao Klijent i poslužitelji
o Međuprocesna komunikacijao Aplikacijski protokolio Mehanizmi protokola i stanja usluga
Otvoreno računarstvo - Raspodijeljeni računalni sustavi27
Zahtjevi na resurse (I)o Međuovisnost arhitekture aplikacije, nužnih
resursa, troškova održavanja, robusnost, feksibilnost ...
o Vrste klijenata: tanki i debelio tanki – veći teret obrade na računalima poslužiteljima,
potrebna manja propusnost mrežeo debeli – manji teret na računalima poslužiteljima, većina
obrade na klijentma, potrebna veća propusnost mrežeo Omjer broja klijenata i poslužitelja
o vrlo veliki broj klijenata – rasterećenje poslužitelja delegiranjem dijela poslova klijentma?
Otvoreno računarstvo - Raspodijeljeni računalni sustavi28
Zahtjevi na resurse (II)o Troškovi sustava:
o tanki klijento potrebni manji resursi na strani korisnikao jefinija računalao centralizirani resursio manji troškovi održavanja
o debeli klijento potrebni veći resursi na strani korisnikao skuplja računalao raspodijeljeni resursio veći troškovi održavanja
Otvoreno računarstvo - Raspodijeljeni računalni sustavi29
Zahtjevi na resurse (III)o Brzina komunikacije:
o slojevi na istom računalu o vrlo brza komunikacija o potrebni veći resursi računala poslužiteljao smanjena robusnost sustava
o slojevi na različitm računalima o sporija komunikacijao manji pojedinačni resursi računala poslužiteljao povećana robusnost sustava
o Fleksibilnost:o više slojeva
o veća mogućnost raspodjele slojeva na više računala (raspodjela opterećenja)
o sporija komunikacija između slojeva
Otvoreno računarstvo - Raspodijeljeni računalni sustavi30
Računala klijentio Jedan korisniko Grafčko korisničko sučelje, U/I uređajio Samostalno ili spojeno na lokalnu mrežuo Izvođenje monolitnih aplikacija i klijenata
raspodijeljenih aplikacijao Podjela s obzirom na resurse:
o debeli, hibridni, tanki
Otvoreno računarstvo - Raspodijeljeni računalni sustavi31
Debeli klijentio Računala opće namjene (osobna računala, radne
stanice, ...)o diskovni podsustav za lokalnu pohranu podatakao relatvno velika lokalna snaga obrade podatakao neovisnost o poslužitelju i stalnoj mrežnoj povezanosto lokalno izvođenje monolitnih aplikacijao izvođenje raspodijeljenih aplikacija (prezentacijskog
sloja ili i prezentacijskog i sloja aplikacijske logike) zahtjeva mrežnu povezanost
o skupa u nabavi, skupa za održavanje, neiskorišteni resursi
Otvoreno računarstvo - Raspodijeljeni računalni sustavi32
Hibridni klijentio Računala bez lokalnog diskovnog podsustava
o moraju bit povezana s mrežnim datotečnim sustavomo ovise o stalnoj povezanost s poslužiteljemo snaga obrade ekvivalentna debelim klijentmao smanjeni troškovi održavanja, veća pouzdanost
Otvoreno računarstvo - Raspodijeljeni računalni sustavi33
Tanki klijentio Tanki klijent
o sučelje prema uslugama na poslužiteljuo ovisno o mrežnoj komunikacijio manja snaga obrade, nema diskovao klijentske aplikacije, Web preglednik ... o koncepcija terminala
o RemoteDesktopo X Windows
o jednostavno i jefino održavanjeo robusnost sustava
Otvoreno računarstvo - Raspodijeljeni računalni sustavi34
Tanki klijenti – déjà vu?o Povijest tankih klijenata
o tekstovni terminalio kasne 70-te, VT-52, VT-100o serijska veza s mainframe računalom
o grafčke radne staniceo rane 90-te, X Windows o povezane LAN-om s poslužiteljem
o pojam tankih klijenata iznjedrio marketngo mora zvučat kao nešto novo !
Otvoreno računarstvo - Raspodijeljeni računalni sustavi35
Tanki ili debeli klijenti?
Otvoreno računarstvo - Raspodijeljeni računalni sustavi36
Računalo poslužiteljo Domaćin jednom ili više programa poslužiteljao Stalno vezano na mrežu (Internet)o Poslužitelj opće namjene može bit i obično osobno
računalo, s operacijskim sustavom Windows ili Linux
Nestajanje stroge granice između klijenta i poslužitelja (usluge na Win XP)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi37
Namjenski poslužitelji (I)o Potrebna snaga obrade ovisna o aplikaciji
o najčešće nije kritčna; procesi većinom blokirani na čekanju završetka U/I operacija (npr. dohvat datoteke)
o Paralelizam bitniji od brzine slijednog izvođenjao bolje usporedno množit više matrica nego brzo jednuo ovo čini bitnu razliku u odnosu na osobna računala!
o Operacijski sustavi moraju podržavat o veliki broj procesa, učinkovito prebacivanje konteksta,
stabilnost sustava u slučaju pada jednog procesa ...
Otvoreno računarstvo - Raspodijeljeni računalni sustavi38
Namjenski poslužitelji (II)o Propusnost podataka
o brzina pristupa i dohvata informacija na diskovnom podsustavu (npr. SCSI), propusnost sabirnice i mrežnog sučelja, velika količina memorije, hijerarhijska organizacija memorije (razine priručne memorije)
o Pouzdanost sustavao specijalizirane izvedbe memorijskog podsustava (brzina,
detekcija grješaka, redundancija)o sklopovska i podatkovna redundancija (dvostruka
napajanja, RAID ...)o pouzdane mehaničke komponente (diskovi, hlađenje ...)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi39
Poslužitelji FER-a
Otvoreno računarstvo - Raspodijeljeni računalni sustavi40
Google platformao Poslovna tajna! Procjene:
o više od 450.000 poslužitelja (2004. g. PC s prosječno 80 GB diskom i 2-4 GB memorije)o najbolji omjer cijena/svojstva
o Linux, C++, Java, Pythono snaga za rad servera veća od 20 MW
o mjesečni račun za struju oko 2 M$ o poslužitelji raspodijeljeni po USA i Europio jedno od najvećih sjedišta u Portlandu
o dva nogometna igrališta,4-katni tornjevi za klimatzacijuo razlozi - pravi računarski :-)
o jefina struja i višak optčkih kablova iz razdoblja "dot-com"
http://en.wikipedia.org/wiki/Google_platform
Otvoreno računarstvo - Raspodijeljeni računalni sustavi41
Druga krajnost namjenskih poslužitelja o Rabbit2000 CPU
o 256KB Flash ROMo 128KB RAMo GPIOo 4 x ASCo 2 x SSCo RTCCo Ethernet kontroler
Raspodijeljeni računalni sustavio Slojevita arhitekturao Arhitekture raspodijeljenih aplikacijao Klijent i poslužiteljio Međuprocesna komunikacija
o Aplikacijski protokolio Mehanizmi protokola i stanja usluga
Otvoreno računarstvo - Raspodijeljeni računalni sustavi43
Preduvjeti komunikacije dva procesao Dva procesa koja trebaju surađivat:
o “adrese” procesao kako se pronalaze?
o mehanizam komunikacijeo kako komuniciraju?
o komunikacijski kanalo putem čega komuniciraju?
o protokol komunikacijeo kako se sporazumijevaju?
Otvoreno računarstvo - Raspodijeljeni računalni sustavi44
Kolocirani procesio Izvođeni na istom računalu, pod istm operacijskim
sustavom, dostupni ist resursio Koriste se mehanizmi IPC operacijskog sustavao OS posrednik između procesa
Otvoreno računarstvo - Raspodijeljeni računalni sustavi45
Međuprocesna komunikacijao Mehanizmi međuprocesne komunikacije:
o jednosmjerni / dvosmjernio sinkroni / asinkroni
redovi poruka (message queues), cjevovodi (pipelines), dijeljena memorija (shared memory), semafori (semaphores), signali (signals), datoteke (fles), utčnice (sockets) ...
Otvoreno računarstvo - Raspodijeljeni računalni sustavi46
Raspodijeljeni procesio Dva osnovna pristupa:
o tradicionalni OS: o procesi “svjesni” raspodijeljenost
o raspodijeljeni OS: o privid jednog računala, o procesima raspodijeljenost skrivena mehanizmima OS-a
Otvoreno računarstvo - Raspodijeljeni računalni sustavi47
Mehanizmi mrežne komunikacijeo ISO/OSI referentni modelo U ovisnost o stvarnom protokolu:
o postojanje komunikacijskog slojao mjesto implementacije pojedinog
komunikacijskog sloja
Otvoreno računarstvo - Raspodijeljeni računalni sustavi48
Heterogenost platformao Komunicirajući procesi se mogu izvodit na različitm
platormamao Problemi mogući na svim razinama:
o složaj protokolao širina riječio poredak okteta (endianess)o kodiranje znakova, terminiranje retka o ...
o Network byte order – big endian
Otvoreno računarstvo - Raspodijeljeni računalni sustavi49
TCP/IP složaj protokola
o Osnova interoperabilnost na Internetuo dostupan na gotovo svim platormama
o Osnovna funkcionalnost jednostavno ostvarivao skalabilnost (od superračunala do mikrokontrolera)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi50
Struktura paketa TCP i IP
o Enkapsulacija slojeva unutar paketa o unutar payload dijela TCP i UDP paketa sadržaj
aplikacijskog protokola o unutar zaglavlja TCP i UDP paketa podaci o vratma
procesa pošiljatelja i primatelja (ports)o unutar payload dijela IP paketa smješten TCP ili UDP paketo unutar zaglavlja IP paketa podaci o adresama računala
pošiljatelja i primatelja (source, destnaton IP address)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi51
TCP i UDPo TCP – spojna veza
o ispravan redoslijed paketao ispravljanje pogrješaka u prijenosu (gubitak,
dupliciranje)o možemo promatrat kao čvrst komunikacijski kanal –
dvosmjerni tok (stream) kroz koji se razmjenjuju podacio UDP – bezspojna veza
o nema mehanizma ispravljanja pogrješakao komunikacija na razini razmjene pojedinačnih paketa
(datagrama), ne dvosmjernog toka
Otvoreno računarstvo - Raspodijeljeni računalni sustavi52
TCP/IP međuprocesna komunikacijao Klijent i poslužitelj procesi
o klijent inicira vezu (TCP) ili šalje datagram (UDP) – mora znat adresu procesa poslužitelja (IP adresa, vrata)
o poslužitelj osluškuje na određenim vratma (port), prihvaća vezu (TCP) ili datagram (UDP)
o jezik komunikacije - aplikacijski protokol
Otvoreno računarstvo - Raspodijeljeni računalni sustavi53
Utičnice
o Utčnica (socket)o programska apstrakcija krajnje točke komunikacije
(communicaton endpoint) korištenjem TCP/IPo jedinstveno određena IP adresom, protokolom (TCP,
UDP, ...) i brojem vratao prema flozofji UNIX-a, utčnice su sučelja prema
dvosmjernom cjevovodu (cjevovod = komunikacijski kanal)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi54
Spojni komunikacijski kanal (TCP!)
o Pisanje u cjevovodo poslani podaci pohranjuju se u odlazni međuspremniko iz međuspremnika se šalju na drugu komunikacijsku
točkuo na prijamnoj strani čuvaju se u dolaznom
međuspremnikuo Čitanje iz cjevovoda
o čitaju se samo trenutno rasploživi podaci u međuspremniku!
o problem fragmentacije podataka
Otvoreno računarstvo - Raspodijeljeni računalni sustavi55
Klijent i poslužitelj kao uloge
o Proces je klijent ili poslužitelj samo u kontekstu promatrane vezeo stalne uloge klijenta ili poslužitelja (npr. Web)o proces može istovremeno imat obje uloge (npr. DNS:
rekurzivno razlučivanje adrese, MTA prosljeđivanje pošte)o proces može istovremeno imat istu ulogu prema više
drugih procesa (npr. Web preglednik je višestruki klijent)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi56
Povezanost životnog vijekao Život klijenta i poslužitelja većinom neovisni
o klijent kao korisnička sučelja prema uslugama, u pravilu kratkog životnog vijeka
o poslužitelji dugog životnog vijeka, vezani uz rad/dostupnost računala poslužitelja
o Posebni slučajavi uske povezanost životnog vijeka:o npr. X Window System - klijent ne mogu postojat bez
aktvnog poslužitelja
Otvoreno računarstvo - Raspodijeljeni računalni sustavi57
Trajnost vezeo Trajnost veze i kanala ovisna o konkretnoj primjeni:
o bez uspostave veze (UDP): razmjena malih količina podataka, npr. DNS upit
o kratkotrajne veze: jedna transakcija (HTTP 1.0, FTP data)o produljene veze: više transakcija u kontekstu jedne veze
(HTTP 1.1, SMTP, POP3, IMAP)o duge veze: rad klijenta ovisan o postojanju veze (npr.
telnet, X11, RTP) o Kompromis između cijene uspostave veze, količine
prenošenih podataka i održavanja nekorištene veze
Otvoreno računarstvo - Raspodijeljeni računalni sustavi58
Veze na strani poslužiteljao Podjela po broju i načinu održavanja prihvaćenih
veza od strane poslužiteljao poslužitelj prihvaća samo jednu vezuo poslužitelj prihvaća više veza
o jedna veza po procesuo jedna veza po nito asinkrona komunikacija s više klijenatao multpleksiranje komunikacije s klijentma
Otvoreno računarstvo - Raspodijeljeni računalni sustavi59
Jedna veza istovremeno
o Jedan proces poslužitelj prihvaća vezuo može istovremeno održavat vezu samo s jednim klijentomo novi zahtjevi pristgli tjekom trajanja veze stavljaju se u red
čekanja ili odmah odbijajuo pogodno za kratkotrajne veze, manji broj zahtjeva za
vezom pravilno vremenski raspoređen
Otvoreno računarstvo - Raspodijeljeni računalni sustavi60
Jedan proces po vezi
o Prijamni proces poslužiteljo (0) čeka na uspostavu vezeo (1) stvara kopiju procesao (2) preusmjerava vezu na kopijuo (0) prijamni proces ostaje slobodan za prihvat nove vezeo Nakon zatvaranja veze s klijentom kopija prestaje s radomo pogodno za duže veze, veći broj zahtjeva, neravnomjerno
raspoređenih u vremenu
Otvoreno računarstvo - Raspodijeljeni računalni sustavi61
Utjecaj broja procesa na performanse
o Utjecaj na procesorsko vrijeme:o stvaranje procesa (jednokratno)o prebacivanje konteksta (trajno)
o Utjecaj na memoriju:o kopija podataka procesa (trajno)
o Zagušenje računala poslužitelja zbog:o prebacivanja kontekstao korištenja virtualne memorije o rezultra nemogućnošću pristupa klijenata poslužitelju
F E R W e b p e r f o r m a n s e
0
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
1 0 0 0
1 2 3 4 5 6 7 8 9 1 0 1 1
b r o j i s t o v r e m e n i h k l i j e n a t a
traj
anje
tra
nsa
kcij
e (m
s)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi62
Utjecaj broja klijenata na performanse o Više veza od strane jednog klijenta:
o paralelizam obrade zahtjeva, bolje performanse? KRIVO!
o problem sporog učenja TCP veze (sliding window)o problem opterećenja mrežeo problem broja procesa na računalu poslužiteljuo problem potpunog zastoja u nedostatku veza/zagušenjuo fair odnos prema drugim klijentma
o Korištenje politke: jedan klijent – jedna vezao paralelizam obrade na razini aplikacijskog protokola, ne
veza
Otvoreno računarstvo - Raspodijeljeni računalni sustavi63
Bazen procesa
o Bazen procesa (process pool)o određen broj procesa poslužitelja stalno pokrenut,
neaktvni čekaju “u bazenu”o troše memorijski prostoro ne troše vrijeme procesora
o dolaskom zahtjeva za vezu prijamni proces “dohvaća” proces poslužitelj iz bazena i preusmjerava vezuo kompromis između stalno pokrenuth i pokretanja novih
procesao po završetku veze proces se vraća u bazen
Otvoreno računarstvo - Raspodijeljeni računalni sustavi64
Jedna nit po vezio Višeprocesnost je karakteristka UNIX-ao Windows, Java – paralelizam izvođenja temeljen
većinom na nitma (threads)o nit “lakše” od procesa (memorija, kontekst ...)o složenija implementacija zbog dijeljenja istog konteksta
izvršavanja (memorije, funkcija ...)o veća osjetljivost na pogrješke (jedna nit ruši čitav
proces)o Problem zagušenja poslužitelja velikim brojem nito Bazen nit (thread pool)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi65
Asinkrona komunikacija s klijentimao Pretplate na komunikacijske događaje
o resurs na čije događaje se pretplaćujeo događaj na koji se pretplaćujeo callback funkcija koja se poziva pojavom događaja
o signali – mehanizam međuprocesne komunikacijeo Asinkronost:
o proces/program se izvršava sinkronoo izvršavanje callback funkcija asinkrono s obzirom na
glavni programo Slično prekidnim potprogramima (FRISC, ARM ...)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi66
Multipleksirana komunikacijao Jedan proces/nit prihvaća i opslužuje više vezao Multpleksiranje komunikacije poslužitelja i više
aktvnih klijenata:1.osluškuju se sve veze istovremeno
o blokirajuće ili neblokirajuće osluškivanje2.detektra se aktvnost na nekoj od veza
● podaci pristgli od klijenta● međuspremnik spreman za prihvat podataka● zahtjev za uspostavom nove veze
3.poslužuje se aktvna veza ili prihvaća nova veza
Raspodijeljeni računalni sustavio Slojevita arhitekturao Arhitekture raspodijeljenih aplikacijao Klijent i poslužiteljio Međuprocesna komunikacijao Aplikacijski protokoli
o Mehanizmi protokola i stanja usluga
Otvoreno računarstvo - Raspodijeljeni računalni sustavi68
Sustav elektroničke pošte (e-mail)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi69
Primjer konverzacije - SMTP
C: <client connects to service port 25>C: HELO snark.thyrsus.com sending host identifies selfS: 250 OK Hello snark, glad to meet you receiver acknowledgesC: MAIL FROM: <[email protected]> identify sending userS: 250 <[email protected]>... Sender ok receiver acknowledgesC: RCPT TO: [email protected] identify target userS: 250 root... Recipient ok receiver acknowledgesC: DATAS: 354 Enter mail, end with "." on a line by itselfC: Scratch called. He wants to shareC: a room with us at Balticon.C: . end of multiline sendS: 250 WAA01865 Message accepted for deliveryC: QUIT sender signs offS: 221 cpmy.com closing connection receiver disconnectsC: <client hangs up>
Otvoreno računarstvo - Raspodijeljeni računalni sustavi70
Primjer konverzacije - POP3C: <client connects to service port 110> S: +OK POP3 server ready <[email protected]>C: USER bobS: +OK bobC: PASS redqueenS: +OK bob's maildrop has 2 messages (320 octets)C: STATS: +OK 2 320C: LISTS: +OK 2 messages (320 octets)S: 1 120S: 2 200S: .C: RETR 1S: +OK 120 octetsS: <the POP3 server sends the text of message 1>S: .C: DELE 1S: +OK message 1 deletedC: RETR 2S: +OK 200 octetsS: <the POP3 server sends the text of message 2>S: .C: DELE 2S: +OK message 2 deletedC: QUITS: +OK dewey POP3 server signing off (maildrop empty)C: <client hangs up>
Otvoreno računarstvo - Raspodijeljeni računalni sustavi71
Primjer konverzacije - IMAP C: <client connects to service port 143>S: * OK example.com IMAP4rev1 v12.264 server readyC: A0001 USER "frobozz" "xyzzy"S: * OK User frobozz authenticatedC: A0002 SELECT INBOXS: * 1 EXISTSS: * 1 RECENTS: * FLAGS (\Answered \Flagged \Deleted \Draft \Seen)S: * OK [UNSEEN 1] first unseen message in /var/spool/mail/esrS: A0002 OK [READ-WRITE] SELECT completedC: A0003 FETCH 1 RFC822.SIZE S: * 1 FETCH (RFC822.SIZE 2545)S: A0003 OK FETCH completedC: A0004 FETCH 1 BODY[HEADER] S: * 1 FETCH (RFC822.HEADER {1425}<server sends 1425 octets of message payload>S: )S: A0004 OK FETCH completedC: A0005 FETCH 1 BODY[TEXT] S: * 1 FETCH (BODY[TEXT] {1120}<server sends 1120 octets of message payload>S: )S: * 1 FETCH (FLAGS (\Recent \Seen))S: A0005 OK FETCH completedC: A0006 LOGOUTS: * BYE example.com IMAP4rev1 server terminating connectionS: A0006 OK LOGOUT completedC: <client hangs up>
Otvoreno računarstvo - Raspodijeljeni računalni sustavi72
Aplikacijski protokolio Jezik sporazumijevanja komunicirajućih enttetao Binarni ili tekstualni format
o binarni: kompaktniji, manje opterećenje mreže, manje opterećenje računala, nečitak za čovjeka
o tekst: dulji, veće opterećenje mreže i računala, lakše praćenje i ispravljanje pogrješaka
o Uloge u protokolu:o svaki od entteta igra ulogu defniranu protokolomo uloga određuje ponašanje tjekom konverzacije
Otvoreno računarstvo - Raspodijeljeni računalni sustavi73
Aplikacijski protokoli i nespojna vezao Primjeri korištenja nespojne veze (UDP)
o jednostavni protokoli temeljeni na "zahtjev-odgovor" o podaci stanu unutar jednog UDP paketa (npr. DNS)
o bitna brzina prijenosa (npr. NFS)o aplikacija se brine o ispravnost prenošenih podataka
o tokovi podataka (streaming)o audio, video
o višesmjerno odašiljanjeo broadcast, multcast podataka
Otvoreno računarstvo - Raspodijeljeni računalni sustavi74
Aplikacijski protokoli i spojna vezao Primjeri korištenja spojne veze (TCP)
o pouzdani prijenos veće količine podataka tokovimao npr. FTP, HTTP
o dugotrajnije vezeo npr. FTP command, telnet
o složenije konverzacijeo bitan redoslijed poruka o npr. SMTP, IMAP
o najčešće korištena u ostvarenju informacijskih usluga o naš fokus razmatranja na ovoj vrst protokola
Otvoreno računarstvo - Raspodijeljeni računalni sustavi75
Protokoli i konverzacije
o Konverzacija je instanca protokolao ... kao što je objekt instanca razredao procesi učesnici konverzacije razmjenjuju poruke u
skladu s korištenim protokolomo konverzacija se odvija unutar komunikacijske veze
o Praćenje stanja konverzacije korištenjem DKAo deterministčki konačni automat
Otvoreno računarstvo - Raspodijeljeni računalni sustavi76
Jednostavni protokoli
o Primjeri jednostavnih protokolao jednosmjeran tok podatakao razmjena zahtjeva i odgovora (request-response)
o Jednostavno praćenje stanja pojedine konverzacijeo nema potrebe za eksplicitnim praćenjem stanja (DKA)
Računala i procesi - Raspodijeljeni računalni sustavi77
Složeni protokoli (I)
o U složenim protokolima:o mora se poštovat
redoslijed konverzacijskih akcija defniran komunikacijskim protokolom
o sljedeće akcije ovise o stanju konverzacije, također mogu ovisit i o stanju usluge
Pojednostavljen DKA protokola TCP
Računala i procesi - Raspodijeljeni računalni sustavi78
Složeni protokoli (II)o Prisjećanje na DKA (Uvod u teoriju računarstva)
o Mooreov, Mealyjev konačni automat - (Σ, Γ, S, s0, δ, ω)
o razlika u trenutku stvaranja izlaznog simbola (funkcija ω)o Defniranje prokola
o DKA na strani klijenta (DKAc) i na strani poslužitelja (DKAs)
o Σc = Γs, Σs = Γco trenutno stanje konverzacije određeno stanjem i na
strani klijenta (DKAc) i na strani poslužitelja (DKAs)
Računala i procesi - Raspodijeljeni računalni sustavi79
Slijedne i paralelne konverzacijeo Slijedne konverzacije
o samo jedna istovremeno aktvna konverzacija po vezi
o Paralelne konverzacijeo može bit aktvno više konverzacija u
kontekstu jedne vezeo kojoj konverzaciji akcija pripada?
o identfkatori konverzacije!o zaseban (par) DKA po konverzaciji za
praćenje njena stanja
Otvoreno računarstvo - Raspodijeljeni računalni sustavi80
Simetrični i asimetrični protokolio Uloga u konverzaciji (klijent ili poslužitelj)
o dodijeljena u trenutku uspostave vezeo npr. e-mail klijent dobiva ulogu klijenta u komunikaciji s
poslužiteljem korištenjem POP3 protokolao Asimetrični protokoli:
o uloga nepromjenljiva tjekom trajanja veze (npr. HTTP)o u nekim protokolima enttet mogu zamijenit uloge
(SMTP: promjena smjera prosljeđivanja poruka)o Simetrični protokoli
o uloga određena na razini konverzacije, ne veze (p2p)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi81
Strategije prijenosa podatakao Dva ključna pitanja:
o tko posjeduje podatke?o tko ima inicijatvu kod njihova prenošenja?
o Mogući odgovori:o korisnik ili poslužiteljo opet korisnik ili poslužitelj
Otvoreno računarstvo - Raspodijeljeni računalni sustavi82
Povlačenje podataka
o Povlačenje informacije (pull):o zahtjev za podacima enttetu koji ih posjedujeo najčešće klijent zahtjeva podatke od poslužiteljao tpičan primjer: request-response protokoli (HTTP)o priroda veze: većinom povremena (trajanje dohvata)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi83
Guranje podataka
o Guranje informacije (push):o guranje podataka od stane klijenta
o npr. slanje i prosljeđivanje e-pošte, messenger-i, p2p ...o veza većinom privremena
o guranje podataka od strane poslužiteljao npr. FTP, HTTP push ...o veza je trajnija (problem kod velikog broja klijenata!)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi84
Prozivanjeo Simuliranje guranja podataka prozivanjem (polling)
o klijent periodički uspostavlja vezu s poslužiteljem i provjerava dostupnost podataka
o podaci se dohvaćaju povlačenjemo nema trajne veze kao kod “čistog” guranjao značajno opterećenje mreže i poslužitelja kod velikog
broja klijenatao primjeri:
o guranje e-pošte na klijenta (POP, IMAP), RSS feeds
Otvoreno računarstvo - Raspodijeljeni računalni sustavi85
Zatvaranje vezeo Eksplicitno zatvaranje veze
o protokol sadrži naredbe za zatvaranje vezeo npr. IMAP
o klijent šalje LOGOUT, poslužitelj vraća BYE i LOGOUT, klijent zatvara vezu
o Implicitno zatvaranje vezeo slanjem zadnje poruke u konverzaciji, zadnjeg okteta
prenošenih podatakao npr. zatvaranje FTP data veze nakon prenesenih svih podataka
Raspodijeljeni računalni sustavio Slojevita arhitekturao Arhitekture raspodijeljenih aplikacijao Klijent i poslužiteljio Međuprocesna komunikacijao Aplikacijski protokolio Mehanizmi protokola i stanja usluga
Otvoreno računarstvo - Raspodijeljeni računalni sustavi87
Mehanizmi protokolao RFC 3117 - On the Design of Applicaton Protocols:
o uokvirenje poruka (framing)o kodiranje sadržaja (encoding)o izvještavanje o stanju (reportng)o asinkronost konverzacija (asynchrony)o vjerodostojnost (authentcaton)o zaštta podataka (privacy)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi88
Uokvirenje porukao Jednostavna detekcija kraja jednorednih poruka
o npr. REQUEST index.html<CR><LF>o Problem detekcije kraja duljih poruka
o npr. prenošene binarne datoteke ili duljeg teksta o Tri osnovne metode uokvirenja poruka:
o umetanjem okteta (octet stufng)o brojanjem okteta (octet countng)o uništavanjem veze (connecton blastng)
Otvoreno računarstvo - Raspodijeljeni računalni sustavi89
Uokvirenje umetanjem okteta
o Primjer prenošenja sadržaja e-pošte u SMTPo poruka se terminira retkom u kojem se nalazi samo točkao ako je takav redak valjan sadržaj poruke, prije slanja na
početak retka dodaje se još jedna točka (po prijamu briše)o prednost
o u trenutku početka prenošenja poruke pošiljatelju ne mora bit poznat čitav njen sadržaj
o manao sporo, dodatna obrada poruke i na pošiljatelju i na primatelju,
nije pogodno za binarne podatke
C: DATAS: 354 Enter mail, end with "." on a line by itselfC: Scratch called. He wants to shareC: a room with us at Balticon.C: . S: 250 WAA01865 Message accepted for delivery
C: DATAS: 354 Enter mail, end with "." on a line by itselfC: Scratch called. He wants to shareC: a room with us at Balticon.C: . S: 250 WAA01865 Message accepted for delivery
Otvoreno računarstvo - Raspodijeljeni računalni sustavi90
Uokvirenje brojanjem okteta
o Primjer dohvata e-pošte IMAP klijentom o prije početka slanja poruke pošiljatelj primatelju šalje
duljinu poruke u oktetmao prednost
o brzina, minimalna obrada kod slanja i primanjao mana
o čitava poruka mora bit raspoloživa prije slanja (kako bi se odredila njena duljina)
...C: A0004 FETCH 1 BODY[HEADER] S: * 1 FETCH (RFC822.HEADER {1425}<server sends 1425 octets of message payload>S: )S: A0004 OK FETCH completedC: A0005 FETCH 1 BODY[TEXT]...
...C: A0004 FETCH 1 BODY[HEADER] S: * 1 FETCH (RFC822.HEADER {1425}<server sends 1425 octets of message payload>S: )S: A0004 OK FETCH completedC: A0005 FETCH 1 BODY[TEXT]...
Otvoreno računarstvo - Raspodijeljeni računalni sustavi91
Uokvirenje uništavanjem vezeo Stvaranje nove veze za prijenos jedne poruke
o tpičan primjer korištenja u protokolu FTP (data veza)o potrebno vrijeme za prenošenje podataka o
parametrima nove veze (host, port), za otvaranje nove veze ...
o pogodno za dulje (binarne) datoteke, za manje datoteke vrlo neučinkovito
Otvoreno računarstvo - Raspodijeljeni računalni sustavi92
Kodiranje sadržaja poruka
o Poruka se sastoji od zaglavlja i tjela (MIME)o Zaglavlje: jedan ili više redaka s atributma (opis
prenošenih podataka) o <ime>=<vrijednost><CR><LF>o prazan redak terminira zaglavlje
o Tijelo poruke sadrži podatkeo u “sirovom” obliku, ilio kodirane prije transporta, dekodirane nakon transporta
o Base64, ...
Otvoreno računarstvo - Raspodijeljeni računalni sustavi93
Reprezentacija stanja
o Mehanizam prenošenja rezultata naredbe i stanja sustava na udaljenoj strani (većinom poslužitelju):
o uspješno izvedene naredbeo trajne ili privremene grješke o ostalih stanja konverzacije
o brojke namijenjene programu, tekst čovjeku
...C: RCPT TO: [email protected] identify target userS: 250 root... Recipient ok receiver acknowledgesC: DATAS: 354 Enter mail, end with "." on a line by itselfC: Pozdrav svim studenticama i studentimaC: na predmetu Otvoreno računarstvo.C: . end of multiline sendS: 250 WAA01865 Message accepted for deliveryC: QUIT sender signs offS: 221 fer.hr closing connection receiver disconnectsC: <client hangs up>
...C: RCPT TO: [email protected] identify target userS: 250 root... Recipient ok receiver acknowledgesC: DATAS: 354 Enter mail, end with "." on a line by itselfC: Pozdrav svim studenticama i studentimaC: na predmetu Otvoreno računarstvo.C: . end of multiline sendS: 250 WAA01865 Message accepted for deliveryC: QUIT sender signs offS: 221 fer.hr closing connection receiver disconnectsC: <client hangs up>
Otvoreno računarstvo - Raspodijeljeni računalni sustavi94
Asinkronosto Način obrade naredaba unutar jedne konverzacije:
o slijedno: ne može se zaprimit nova naredba dok izvođenje prethodne nije završenoo jednostavna izvedba klijenta i poslužiteljao neučinkovito – vrijeme između izvođenja dvije konverzacije
o protočna struktura naredaba: poslužitelj prihvaća naredbe i pohranjuje ih u FIFO strukturu, izvodi slijednoo nema gubitka vremena kod čekanja nove naredbe od klijentao zahtjeva paralelizam izvršavanja u izvedbi poslužitelja
o paralelno izvršavanje: naredbe se prihvaćaju u FIFO i paralelno izvršavaju (u ovisnost o broju raspoloživih nit)o za jednostavne konverzacije (request-response)o složena izvedba i na klijentu i na poslužiteljuo problemi fair korištenja veze (kontrola toka, segmentacija poruka),
izgladnjivanje, potpuni zastoj
Otvoreno računarstvo - Raspodijeljeni računalni sustavi95
Sigurnosni aspektio Vjerodostojnost
o provjera identteta korisnika ili procesa u komunikacijio Zaštta podataka
o zaštta od prisluškivanja i izmjene prenošenih podataka
Otvoreno računarstvo - Raspodijeljeni računalni sustavi96
Stanja uslugeo Usluge bez očuvanja stanja (stateless)
o svaka akcija neovisna o prethodnim akcijamao jednostavne usluge, request-response protokoli
o npr. osnovna funkcionalnost web poslužiteljao Usluge s očuvanjem stanja (stateful)
o rezultat akcije (i samo odvijanje konverzacije) ovisi o prethodnim akcijama
Otvoreno računarstvo - Raspodijeljeni računalni sustavi97
Stanja usluge – kontekst stanjao Kontekst očuvanja stanja:
o kontekst vezeo npr. FTP – radno kazalo na udaljenom računalu
o kontekst klijentao npr. stanje sandučića e-pošte korisnika
o globalni konteksto npr. sadržaj tablice baze podataka
Otvoreno računarstvo - Raspodijeljeni računalni sustavi
Pitanja?