21 - 40 Flashcards
Ukratko navedite najbitnije detalje dizajna klijenta i detalje dizajna poslužitelja.
Detalji dizajna klijenta:
● omoguciti sredinu u kojoj korisnik medudjeluje s udaljenim posluziteljima
● visenitnost
○ sakriti latenciju
○ omoguciti visestruka simultana spajanja
● mora se znati posluziteljska adresa (endpoint, port)
● transparentnost repliciranja
Detalji dizajna posluzitelja
● omogucavanje informacija o krajnjoj tocki
● tcp (connection-oriented) ili udp (connection-less)
● istovremeni (concurrent) ili ponavljajuci (iterative) posluzitelj
○ rukuje visestrukim zahtjevima odjednom ili jedan za drugim?
● stateful ili stateless
Skicirajte spajanje klijenta na poslužitelj korištenjem daemona i korištenjem
superposlužitelja.
IMA SLIKA.
Klijent zatrazi endpoint servera od serverskog daemon procesa. S tim endpointom, klijent se
spaja na server i vrsi komunikaciju.
IMA SLIKA.
Klijent napravi serverski zahtjev, a u pozadini super-server kreira stvarni server, koji ispuni taj
zahtjev (pri cemu klijent nije svjestan toga).
Skicirajte način rada višenitnog poslužitelja organiziranog po modelu
dispečer/radnik.
IMA SLIKA.
Master/slave nacin rada. Dispatcher thread rastrka posao po worker threadovima, oni naprave
posao, server vrati rezultat.
Ukratko objasnite razliku između poslužitelja s pamćenjem i bez pamćenja stanja, te
između konekcijskih i beskonekcijskih poslužitelja.
Stateful serveri cuvaju metapodatke klijenta za brzu obradu zahtjeva. Stateless to ne radi i zato
imaju brzi i pouzdaniji oporavak nakon pada (ne treba se brinuti o cjelovitosti metapodataka),
ima manje memorijske zahtjeve.
Konekcijski posluzitelji zahtjevaju konekcijski protokol kako bi radili (npr. TCP, validiranje slanja i
primanja paketa), dok beskonekcijski to nemaju, jer nije “strasno” ako se koji paket propusti
(npr. UDP, streamanje videa).
Objasnite čemu služi virtualizacija, na koji način i na kojim razinama se izvodi, te
navedite jedan alat koji ste koristili za virtualizaciju.
Virtualizacija se koristi kad neki program ili servis nije kompatibilan s trenutnom okolinom
(operacijskim sustavom).
● Virtualizacija procesa (odvojeni skup instrukcija, interpreter/emulator pokrece se na vrhu
OS-a)
● Nativna VMM (instrukcije niske razine, zajedno s minimalnim OS)
● Udomljena VMM (instrukcije niske razine, ali delegiraju vecinu posla na kompletni OS)
Jedan alat: VirtualBox.
Ukratko objasnite postupak i razloge migriranja koda.
Migriranje - premještanje procesa/koda na drugi stroj
Razlozi:
- bolje raspoređivanje opterećenja
- smanjenje komunikacijskih troškova (obrada blizu podataka)
Modeli migriranja
- Slaba mobilnost - prenose se samo kodni segment i inicijalizacijski podaci, te se kodni
segment izvodi ponovno
- Snažna mobilnost - prenosi se i kodni segment i izvršni segment/stanja
Najčešći problem - ciljni stroj ne može izvoditi migrirani kod - rješenje - implementacija
apstraktnog sloja za različite platforme ili korištenje VM-a
Navedite korake poziva udaljene procedure.
- Klijent poziva klijentski stub s parametrima
- Klijentski stub pakira parametre (marshalling) u poruku i radi sistemski poziv za slanje
poruke. - Klijentski lokalni OS salje poruku posluzitelju
- Lokalni OS posluzitelja prosljeduje poruku serverskom stubu
- Serverski stub raspakira parametre iz poruke (unmarshalling)
- Serverski stub poziva serversku proceduru. Odgovor ima iste korake, ali unazad.
Skicirajte način međudjelovanja klijenta i poslužitelja kod asinkronog RPC-a.
SAMO SLIKA.
Skicirajte jednostavnu organizaciju udaljenog objekta s proxyjem na prijemnoj
strani.
IMA SLIKA.
If you look closely, ovo su zapravo koraci iz pitanja 27. Client stub = proxy, server stub =
skeleton.
Navedite korake stvaranja raspodijeljene aplikacije korištenjem RMI-ja.
- Definirati udaljeno sucelje (metode pristupa podacima)
- Implementirati udaljene objekte
- Implementirati klijenta (nakon definicije udaljenog sucelja, moze se odmah napraviti)
- Registrirati udaljeni objekt u registar imena posluzitelja (kako bi mu se moglo pristupit)
- Generirati komunikacijsku tocku klijenta koristeci rmic (RMI client)
- Pokrenuti registry
- Pokrenuti posluzitelj
- Pokrenuti klijenta
Ukratko objasnite pojam socketa, programiranje socketa TCP-om, te ga usporedite s
izvedbom UDP-om. Razmotrite primjer TCP implementacije WinSocketa.
Socket je softverska struktura unutar mreze koja sluzi kao endpoint za slanje i primanje
podataka.
Programiranje socketa TCP-om:
● klijent mora kontaktirati posluzitelja koji je prethodno pokrenut i koji ocekuje klijenta na
dogovorenom sucelju (portu)
● posluzitelja se kontaktira kroz klijent-lokalni TCP socket u kojem se specificira IP adresa
i port number
● kad klijent kreira socket i posluzitelj prihvati konekciju, kreirsa se novi serverski socket
preko kojega moze komunicirati s klijentom
Programiranje socketa UDP-om ne garantira se primitak svih poslanih paketa, niti da ce paketi
biti primljeni redoslijedom kojim su poslani. Takoder, ne uspostavlja se konekcija kao kod TCP
socketa, nego posluzitelj prima request pakete iz kojih cita podatke klijenta i zatim mu salje
podatke na tu adresu.
Upoznajte se s tri uzorka prilagodbe socketa.
Request-reply uzorak: Posluzitelj salje klijentu podatke dok mu klijent ne da do znanja da zeli
prekinuti konekciju. Komunikacija se odvija na bazi zahtjev-odgovor.
Publish-subscribe uzorak: Posluzitelj salje podatke kojima su pridruzene kategorije i metapodaci
znacajni klijentima. Klijenti se spajaju na posluzitelja i pretplacuju se na odredenu kategoriju.
Klijenti na taj nacin primaju samo responsove koji ih zanimaju (odnosno, responsove s tom
kategorijom ili metapodacima)
Pipe uzorak: Klijent pusha workove serveru koji ih pulla i obraduje. Opcenito “pipe” se odnosi na
stream operacija nad podacima gdje svaka obradbena tocka mijenja podatke na neki nacin.
Ukratko objasnite čemu služi i kako se koriste raspodijeljene hash tablice.
Raspodijeljene hash tablice pruzaju efikasnu uslugu pretrazivanja podataka u ovisnosti o
njihovim hashevima (kljucevima). Skalabilno je na velike sustave i kolicine podataka i otporno
na kontinuirano pristizanje, brisanje i ispadanje cvorova.
Skicirajte izravno i T-razinsko dodjeljivanje imena u raspodijeljenim sustavima. v
IMA SLIKA.
Prva slika predstavlja izravno, a druga T-razinsko dodjeljivanje medu entitetima.
Ukratko objasnite hijerarhijski pristup lociranja entiteta.
IMA SLIKA.
Lociranje entiteta krece od dna stabla i krece se prema gore. Svaki korijenski cvor zna sve o
svojoj djeci. Na primjeru, cvor lookup requesta zna da se u njemu ne nalazi trazeni cvor, pa
zahtjev salje svom roditelju. Roditelj zna da se trazeni cvor nalazi negdje u njemu, pa ga
prosljeduje svom djetetu. Dijete zna da se cvor nalazi u njemu i zato uspije locirati trazeni
entitet.