Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
0
10/11/2016 Uvod u dristribuirane informacijske sustave
FESB
Jurica Šeparović RAČUNARSTVO 550
1. UVOD ....................................................................................................................................... 1
1.1 Definicija distribuiranog sustava .................................................................................. 1
1.2 Ciljevi-svojstva distribuiranih sustava .......................................................................... 1
1.2.1 Dostupnost resursa (dijeljenje) ..............................................................................................................1
1.2.2 Transparentnost distribuiranosti...........................................................................................................2
1.2.3 Otvorenost .......................................................................................................................................................3
1.2.4 Skalabilnost......................................................................................................................................................3
1.3 Zamke .............................................................................................................................. 4
1.4 Vrste distribuiranih sustava ........................................................................................... 5
1.4.1 Sustavi distribuiranog računanja ..........................................................................................................5
1.4.2 Distribuirani informacijski sustavi.........................................................................................................5
1.4.3 Distribuirani sveprisutni sustavi.............................................................................................................5
2. ARHITEKTURE DISTRIBUIRANIH SUSTAVA......................................................................... 6
2.1 Stilovi arhitekture ........................................................................................................... 6
Slojevita arhitektura ........................................................................................................................................................6
2.2 Arhitekture više procesora ............................................................................................ 7
2.3 Klijent-server arhitekture............................................................................................... 7
2.3.1 Slojevitost .........................................................................................................................................................8
2.3.2 Thin and Fat client [2tier]..........................................................................................................................8
2.3.3 3-tier arhitektura ...........................................................................................................................................9
2.3.4 N-tier arhitektura ..........................................................................................................................................9
2.3.5 Primjena ............................................................................................................................................................9
2.4 Arhitektura distribuiranih objekata............................................................................ 10
2.4.1 Common object Request Broker - COBRA .......................................................................................... 10
2.5 Peer to peer arhitektura............................................................................................... 11
2.6 Hibridna arhitektura..................................................................................................... 12
2.6.1 BitTorrent ....................................................................................................................................................... 12
2.7 SOA – Service oriented arhitectures ........................................................................... 13
2.8 Cloud computing .......................................................................................................... 13
3. PROCESI I NITI ...................................................................................................................... 14
2
3.1 Uvod ...................................................................................................................................................................... 14
3.2 Potreba ................................................................................................................................................................ 14
3.3 Proces............................................................................................................................. 14
3.4 Niti.......................................................................................................................................................................... 16
3.4.1 Thread safety ............................................................................................................................................... 18
3.4.2 Implementacija niti ................................................................................................................................... 18
3.5 Višenitni klijenti ............................................................................................................................................... 19
3.6 Višenitni serveri ............................................................................................................................................... 19
3.7 Virtualizacija ...................................................................................................................................................... 19
4. KLIJENT SERVER PROCESI ................................................................................................... 21
4.1 Klijent............................................................................................................................. 21
4.1.1 Uvod ................................................................................................................................................................. 21
4.1.2 Složeni dokumenti .................................................................................................................................... 22
4.1.3 Klijentski software za transparentnost distribucije ................................................................... 22
4.2 Server ............................................................................................................................. 22
4.2.1 Server Portovi .............................................................................................................................................. 23
4.2.2 Prekid veze.................................................................................................................................................... 23
4.2.3 Stateless server ........................................................................................................................................... 24
4.2.4 Stateful server.............................................................................................................................................. 24
4.2.5 Session state vs permanent state ...................................................................................................... 24
4.2.6 Klasteri servera ............................................................................................................................................ 25
4.2.7 Distriburiani serveri................................................................................................................................... 25
4.2.8 Migracija koda............................................................................................................................................. 25
5. KOMUNIKACIJA ...................................................................................................................... 26
6. BIG DATA ................................................................................................................................. 28
1. Uvod
Distribuirani sustavi se sastoje od skupa samostalnih računala povezanih računalnom mrežom.
Programska podrška omogućava računalima da koordiniraju svoje aktivnosti i da dijele sustavne
resurse (hardware,software i podatke). Korisnici distribuiranog sustava bi trebali primjećivati samo
jedan integrirani sustav.
Pojavom brzih lokalnih mreža te razvojem osobnih računala i servera došlo je do napuštanja
centraliziranih sustava što je pridonijelo razvoju distribuiranih sustava.
1.1 Definicija distribuiranog sustava
Distribirani sustav je skup neovisnih računala koji se korisniku predstavljaju kao jedan cjeloviti
sustav.
Autonomne komponente distribuiranih sustava međusobno surađuju. Kranjim korisnicima se
cijeli distribuirani sustav čini kao jedan centralizirani sustav.
1.2 Ciljevi-svojstva distribuiranih sustava
Općenito kod izgradnje distribuiranih sustava želimo zadovoljiti svojstva otvorenosti,
skalabilnosti, transparentnosti i dostupnosti resursa.
1.2.1 Dostupnost resursa (dijeljenje)
Kod distribuiranih sustava dijele se programi, baze podataka , printeri, web stranice, podatci i
razni drugi resursi.
Dijeljenje resursa je ekonomično i dobro za kolaboraciju. Kod timskog ili grupnog rada koje
uvelike ovisi o dijeljenu podataka između programa na različitim računalima distribuirani sustavi
uvelike olakšavaju rad tako što omogućuju pristup dijeljenim resursima i njihovu uporabu kao
lokalni resurs računala korisnika.
Moguća je krađa lozinke ,kartica i ugrožavanje privatnosti kod distribuiranih sutava. (npr.
Internet bankarstvo , facebook i druge društvene mreže itd)
2
1.2.2 Transparentnost distribuiranosti
Transparentnost znači da bilo koji dio distribuiranog sustava treba biti skriven od svojih korisnika
i prikazan kao normalni centralizirani sustav. Razlikujemo razne vrste transparentnosti.
Vrsta transparentnosti Opis
Pristupa Bez obzira kako se pojedinom resursu pristupa , njegova
prezentacija korisniku mora biti jedinstvena za sve načine pristupa.
(Npr korisnik resursu može pristupiti sa različitih uređaja..)
Lokacije Korisniku nije poznata fizička lokacija podataka, ali svejedno mu
može pristupiti. Koristi se logičko imenovanje resursa (npr. URL)
Migracije Resurs se može premjestiti na drugu lokaciju bez promjene
pristupa resursu (tako korisnik ne zna da se resurs premjestio)
Relokacije Premještanje resursa dok ga se koristi ne smije primjetiti korisnik.
npr pomicanjem laptopom i prebacivanje na drugi AP
Replikacije Skriva se činjenica da postoji više kopija resursa .
Npr. Kopiranje resursa na bližu lokaciju radi unčinkovitosti. Na
ovaj način se povećava brzina dohvata određenog resursa.
Konkurentnosti Više korisnika istovremeno koristi resurs bez međusobnog
kontakta i poteškoća.
Greške Omogućava se izvršavanje korisničkih zadataka bez obzira na
greške koje mogu nastati npr. Prestanak rada opreme.
Transparentnost nije uvijek jednostavno postići. Imamo razne probleme poput
- Sinkronizacije vremena - potrebno je sinkronizirati vrijeme na raznim distribuiranim
sustavima što i nije baš trivijalan zadatak.
Npr make komanda se koristi na Unix sustavima da kompajlira novi ili modificirani kod
bez potrebe da ponovno se kompajlira ne promijenjeni kod. Ako se izvorni kod nalazi na
razlicitim serverima i ti serveri imaju nesinkronizirano vrijeme , make program neće dati
očekivane rezultate. (make će gledati vrijeme editiranja dokumenta ili tako nešto). U
distribuiranim sustavia na internetu najčešće se koristi NTP protokol.
- Prijenos poruka na velike udaljenosti – korisnik će trebati čekati duže ako se nalazi na
velikoj udaljenosti od resursa.
- Kolaborativni dokumenti – propagacije izmjene svim korisnicima
- Transparentnost i učikovitost nije lako balansirati
3
1.2.3 Otvorenost
Otvoreni distribuirani sustav je sustav koji ima mogućnost komunicirati (ili nuditi) usluge sa
drugim distribuiranim sustavima čak i kada se njihova arhitektura ili izvedba razlikuje. To se
postiže korištenjem dobro definiranih sučelja (interfaces)
Protokoli – definiraju format sadržaja i značenje poruka.
Sučelja – specifikacije usluge (IDL – Interface Definition Language)
Dva procesa mogu nuditi istu uslugu, istim sučeljem, ali različitim implementacijama.
Dobre specifikacije sučelja su potpune i neutralne te omogućavaju interoperabilnost (rad sa
drugim sustavima u smislu pristupa ili implementacije) i portabilnost usluge određenog
distribuiranog sustava.
1.2.4 Skalabilnost
Skalabilnost je mogućnost proširenja distribuiranog sutava sukladno sa rastom potreba.
Distribuirani sustavi moraju djelovati učinkovito bez obzira na veličinu. Skaliranje je moguće
samo ako je sustav dobro dizajniran.
Dimenzije skalabilnosti:
- Veličina sustava (sustav se prilagodi većem broju korisnika ili resursa)
- Zemljopisna (sustav se proširi na veće zemljopisno područje)
- Administrativna ( The ability for an increasing number of organizations or users to easily
share a single distributed system.)
Problemi zbog koje je skalabilnost uvelike otežana :
- Centralizirani podaci : npr online telefonski imenik – pristup centraliziranim podatcima
može bii otežan ako poslužitelji koriste veću količinu podataka
- Centralizirane usluge(komonente): npr mail server kod centraliziranog poslužitelja će
imati veliki stupanj opterećenja ako puno korisnika
- Centralizirani algoritmi algoritmi koji uzimaju u obzir da rade samo sa jednim
korisnikom.
Kod skaliranja sustava potrebno je brinuti o troškovima i mogućim gubitcima na performansama
sustava.
4
Tehnike skaliranja :
- Skrivanje čekanja u komunikaciji
Izvodi se korištenjem:
- asinkrone komunikacije (nakon slanja poruke aplikacija izvodi druge aktivnosti dok odgovor
servera ne stigne. Odgovor se dojavljuje aplikaciji, a poseban proces izvodi obradu pristiglog
odgovora)
- Smanjenjem cjelokupne komunikacije sa serverom, na način da se prebaci dio obrade
(provjera) na stranu klijenta (npr. web forma za prijavu korisnika)
- Distribucija – razdvajanjem komponente na dijelove (npr. DNS)
- Replikacija – replikacija komponenti zbog veće dostupnosti i balansiranje opterećenja
nekog sustava.
Keširanje – poseban oblik replikacije. Sprema se replika resursa u brzu cache memoriju
radi povećanja brzine. Problem je konzistencija podataka (više mjesta gdje se nalazi isti
podatak pa triba osigurat da svugdi pudu jednaki)
1.3 Zamke
8 Fallacies by Peter Deutsch - 8 zabluda o distribuiranim sustavima koje imaju programeri koji su
novi u području distribuiranih sustava. Zbog ovih zabluda mogu nastati pogreške sustava ili
veliki neplanirani troškovi koji su potrebni za redizajniranje sustava da postigne određene ciljeve.
1. Network is reliable
2. Latency is zero
3. Bandwidth is infinite.
4. The network is secure.
5. Topology doesn't change
6. There is one administrator.
7. Transport cost iz zero
8. The network is homogeneous
https://en.wikipedia.org/wiki/Fallacies_of_distribute d_com puting
5
1.4 Vrste distribuiranih sustava
1.4.1 Sustavi distribuiranog računanja
Koriste se kako bi omogućili visoke performanse obavljanja računalnih zadataka.
Cluster je skup povezanih računala koja rade zajdeno tako da se mogu gledati kao jedno
računalo. Djelovi clustera su obično spojeni brzom lokalnom mrežom. U večini slučajeva svi
čvorovi klastera imaju isti hardver i operacijski sistem te rade iste zadatke.
Beowulf cluster – njegova glavna ideja je korištenje komercijalno dostupnih računala u svrhu
izgradnje jeftine alternative tradicionalnim superačunalima.
Grid je skup računala različitih karakteristika često i na različitim lokacijama i pod različitom
administracijom koji su povezani sa ciljem da postignu zajednički cilj (email,www).
1.4.2 Distribuirani informacijski sustavi
Sustavi obrade transakcija
Obrada transakcija je zapravo obrada informacija koja se odvija u nekoliko koraka. Da bi
transakcija bila uspješna, svi koraci moraju uspješno završiti. Ako je jedan korak bio neuspješan,
svi se moraju poništiti („all or nothing). Npr dizanje novca sa računa, rezervacija letova …
Atomic Cconsistent Isolated Durable = ACID
- Atomic : zahtijeva da svaka transakcija bude potpuno izvršena što znaci da ukoliko dođe
do pogreške (hardware,software, nestanak struje itd) kod jednog dijela transakcije , onda
se ne izvrši cijela transakcija.
Vanjskom svijetu transakcija se odvija se nerazdvojivo.
- Consistent : prije i poslije transakcije baza mora biti u konzistentnom stanju.
- Isolated: istovremene transakcije se međusobno ne ugrožavaju
- Durable: jednom kada je transakcija gotova promjena je trajna. (ako je transakcija
završena promjena mora bit trajna bez obzira na gubitak struje pogreške itd). Ovo
svojstvo garantira sigurnost spremanja izvedene transakcije.
Integracija poslovnih aplikacija
Glavna ideja je da se omogući međusobna komunikacija poslovnih aplikacija. Poslovne aplikacije
direktno komuniciraju putem middlewarea. Koriste RPC (remote procedures calls),
RMC(method)I ili MoM (message orijented middleware)
1.4.3 Distribuirani sveprisutni sustavi
To su mali uređaji , napajani baterijom i povezani bežičnom vezom.
Kućni sustavi
Sustavi za nadzor zdravlja
Senzorske mreže
6
2. Arhitekture distribuiranih sustava Arhitektura je osnovna organizacija sustava koja pojednostavljuje i apstrahira funkciju pojedinih
komponenti te zatim razmatra :
- Smještaj komponenti unutar mreže računala
- Odnose između komponenti (njihove funkcionalne uloge i načine međusobne
komunikacije)
Arhitekturalni stil je cjeloviti skup dizajnerskih odluka koje se tiču arhitekture sustava (veze
komponenti i ponašanje).
2.1 Stilovi arhitekture
Dizajniranje ili prihvaćanje arhitekture je nepohodno za uspješan razvoj velikih sustava.
Stil u smislu komponenti definira što su komponente , kako se povezuju , razmijenjuju podatke i
kako se konfiguriraju u cijeli sustav.
Komponenta je modularna jedinica sa dobro definiranim sučeljem. (replaceable&reusable)
Konektor je mehanizam koji olakšava komunikaciju, koordinaciju i kooperaciju među
komponentama.
Najznačajniji stilovi arhitekture su layered, object based , event based i data driven arhitektura.
Slojevita arhitektura
Koristi se za klijent-server systeme. Komponente su zapravo slojevi
Arhitektura temeljena na objektima (object based)
Komponente ove arhitekture su objekti koji međusobno komuniciraju.
7
Arhitektura usmjerena prema podatcima (data centered)
Arhitektura temeljena na događajima (event driven)
2.2 Arhitekture više procesora
Najjednostavniji model distriburanih sustava. Kod ovakve arhitekture procesi se mogu
istovremeno izvršavati na različitim procesorima ili unutar jednog procesora (jezgre,niti)
Distribucija procesa se može predefinirati ili se raspoređuje za vrijeme izvršavanja programa
(dispatcher – sustav koji raspoređuje procese na prikladna mjesta (valjda)).
Imamo neke složene sustave koji koriste procesore grafičkih kartica za paralelno prog ramiranje
(CUDA)
2.3 Klijent-server arhitekture
Aplikacija je računalni program koji je dizajniran tako da pomogne korisniku izvršavati određene
zadatke i funkcije. Klijent-server aplikacija sastoji od usluga koje nude serveri i skupa klijenata
koji te usluge koriste. Klijenti i serveri su logički procesi (mogu biti u raznim odnosima X:Y ).
Klijent inicira interakciju s individualnim serverom , server obrađuje klijentov zahtjev i vraća
oređeni resurs.
Većinom klijenti i serveri komuniciraju preko računalnih mreža na različitim uređajima, ali mogu
biti i na istim uređajima.
Primjer nekih klijent server aplikacija : Email , WWW …
8
2.3.1 Slojevitost
Klijent-server aplikacije imaju slojevitu arhitekturu. Pomoću ovoga razlikujemo klijente i servere.
Prezentacjiski sloj sadržava korisničko sučelje koje služi
za komunikaciju sa korisnicima.
Sloj aplikacijske obrade sadrži funkcionalnosti
aplikacije
Sloj upravljanja podatcima sadrži podatke kojima
klijent želi manipulirati. To su najčešće datoteke ili baze
podataka. Podatci ostaju u tom sloji cak i kada ih klijent
ne koristi.
2.3.2 Thin and Fat client [2tier]
Two-tier arhitekture
Model thin-clinet - Obrada i spremanje podataka obavljaju se na serveru. Klijent služi
samo za prezentaciju obrađenih podataka. Ovakav pristup puno opterećuje servere i
mrežu, ali je pogodan za klijenta jer reducira njegove troškove.
Koristi se kod prilagodbe „običnih starih“ sustava u distriburane na način da se aplikacija
ponaša kao server, a sučelje sa korisnikom kao klijent. (npr sustav bankomata)
Model fat-clinet – Klijent odrađuje obradu i prezentaciju podataka , a na serveru se
spremaju podatci u bazu podataka.
Kod kompleksnih sustava klijenti moraju imati instalirane novije verzjie aplikacije.
Pogodno je za moderne klijent-server sustave kada su sposobnosti klijenta unaprijed
poznate.
9
2.3.3 3-tier arhitektura
Svaki sloj arhitekture aplikacije izvršava se na drugom procesoru.
Izbjegavau se problemi 2-tier arhitektura vezani za opterećenje servera i mreže i kompleksnosti
upravljanja.
Ova arhitektura je proširiva jer ima mogućnost dodavanja novih servera paralelno sa rastom
zahtjeva. Večina današnjih web aplikacija koristi ovu arhitekturu. Primjer Internet Bankarstvo.
2.3.4 N-tier arhitektura
Se odnosi na aplikacije koji dalje prosljeđuju zahtjeve nekim drugim servisima.
2.3.5 Primjena
Ovo bi tribalo napisat da se razumi !
10
2.4 Arhitektura distribuiranih objekata
Kod ove arhitekture nema razlike između klijenta i servera. Svaki entitet je objekt koji pruža
usluge drugim objektima i prima usluge od drugi objekata.
Komunikacija među objektima se odvija kroz middleware sustav – Object Request Brooker.
2.4.1 Common object Request Broker - COBRA
OMG – Object Managment Group je organizacija koja je originalno nastala zbog cilja da
standardiziraju distribuirane objektno orjentirane sustave. Jedan od njihovih prvih standarda
definira cobru.
COBRA – Common Object Request Broker Arhitecture
Korištenjem ovog standarda omogućava se da komponente napisane na različitim računalima i
platformama mogu međusobno komunicirati.
COBRA specifikacija nalaže da mora postojati ORB (Object request broker) pomoću kojega će
aplikacija komunicirati sa drugim objektima.
11
Cobra objekti slični su objektima u C++ ili Javi. Moraju imati sučelje definirano u IDL(interface
definition language) jeziku.
Cobra definira mapiranje iz IDL jezika u specificni jezik implementacije
(C,C++,JAVA,Pysthon,Ruby…) tako da objekti realizirani u različitim jezicima funkcijoniraju.
Orb – upravlja komunikacijom među objektima
Način komunikacije pomoću ORB-a
2.5 Peer to peer arhitektura
Kod peer-to-peer arhitekture nemamo centralizirani sustav koji pruža resurse , pa govorimo o
decentraliziranom sustavu kod kojega svaki koristi resurse drugih čvorova i istovremeno na
raspolaganje daje svoje resurse. Drugim riječima u ovoj arhitekturi svaki čvor je istovremeno i
klijent i server.
P2P sustavi se dizajniraju na način da koriste prednosti računalne snage i pohrane velikog broja
umreženih računala.
Popularnosti ove arhitekture pridonio je sustav za dijeljenje glazbe(MP3 datoteka) Napster.
Nakon kojega nastaju i drugi sustavi poput LimeWire, BearShare. Većina ih propada zbog
zakonskih problema.
Peer to peer arhitekture su decentralizirane ili polu-centralizirane (slika desno)
12
2.6 Hibridna arhitektura
To je kombinacija peer-to-peer i klijent server arhitekture. Obično kod hibridnog modela imamo
centralni server koji pomaže čvorovima peer-to-peer mreže da se međusobno pronađu.
Spotify je jedan od primjera hibridnog modela. Imamo klijent server sustav sa kojega zatražujemo
slušanje glazbe , ali možemo i kreirati svoje playliste. Play liste se onda mogu dijeliti sa drugim
korisnicima (P2P).
2.6.1 BitTorrent
BitTorrent je komunikacijski protokol koji služi za dijeljenje podataka između čvorova P2P mreže
koji se nalaze na internetu.
Ovo je jedan od najkorištenijih protokola za dijeljenje velikih datoteka (video, audio …)
Korisnik dohvaća dijelove datoteka (peers) od nekoliko različitih korisnika (seeds). Na kraju se
dijelovi datoteka spajaju u konačni potpuni dokument.
Nakon što se završi dohvaćanje datoteke korisnik može biti seed i omogućiti drugim korisnicima
preuzimanje dijelova iste datoteke.
Web stranica zna lokaciju .torrent datoteke
.torrent datoteka sadrži popis trackera
Tracker je specijalni server koji ima evidenciju o tome koji čvorovi sadrže traženu datoteku.
Čvorovi dozvoljavaju klijentu preuzimanje dijelova datoteke
Sustav ima određena pravila koja mogućavaju da cijela stvar funkcionira :
- Datoteka se može preuzimati samo ako se omogući i njeno slanje (upload)
- Ako korisnik smanji upload onda će mu se smanjiti i download
13
2.7 SOA – Service oriented arhitectures
Servisno orijentirane arhitekture se temelje na ideji korištenja usluga „iz vana“.
Web servis je standardni pristup kreiranju reiskoristive komponente kojoj se može pristupiti i
koristiti putem web-a.
Standardi za web servise:
• SOAP (simple object access protocol) – protokol definira strukturiranu razmjenu
podataka među web servisima
• WSDL (Web service description language) – predstavljaju sučelja web servisa
• UDDI (Universal description discovery integration) – kako se koriste informacije iz opisa
servisa za pronalazak potrebnih servisa.
2.8 Cloud computing
Arhitektura koja služi za izradu visoko skalabilnih aplikacija. Koriste se klasteri računala.
Ovaj princip daje iluziju beskonačne skalabilnosti.
Dobro je sta platiš onoliko koliko trošiš i možes bilo kada povećati zahtjeve uz nadoplatu.
Popularni clodu hosting :
Amazon Web Services (AWS) , Microsoft azure …
14
3. Procesi i niti
3.1 Uvod
Kod nedistribuiranih sutava operacijski sustav se brine o rasporedu izvršavanja procesa, a kod
distribuiranih sustava to je već mnogo kompleksinij zadatak.
Više procesa i niti kod klijent-server modela rezultira efikasnijim sustavom jer se za isto vrijeme
napravi više posla. Klijenti i serveri mogu biti realizirani na način da se komunikacija sa serverom i
lokalna obrada mogu preklapati.
Oćenito procesi i niti omogućavaju da se više stvari obavi paralelno.
Omogućavaju prividno paralelno izvršavanje procesa kod jednoprocesorskih mašina (dijeli se
procesorsko vrijeme i na taj način ostvaruje ta prividnost)
Kod višeprocesorskih mašina istvoremeno izvršavanje procesa nije iluzija. To omogućava bolju
iskorištenost resursa.
3.2 Potreba
Procesi i niti potrebni su da bi se paralelno izvršavali oderđeni računalni zadatci.
-kod excel tablice imamo potrebu obrađivati podatke za vrijeme unosa
-da bi poboljšalji efikasnost i brzinu servera on treba posluživati više klijenata
istovremeno.
- …
Procesi grade distribuirani sustav. Granulacija koju nude procesi nije dovoljno učinkovita.
Niti nude finiju granulaciju.
3.3 Proces
Proces je program u izvršavanju.
Operacijski sustav prati procese pomoću tablice pocesa. Tu se pohranjuju stanje procesa
(nov,pripravan aktivan, čeka) , ime procesa , sadžaj programskog brojila , sadržaji registra …
Operacijski sustav se brine da dva procesa ne utječu maliciozno jedan na drugoga.
Transparentnost konkurentnosti – dva procesa mogu raditi i dijeliti resurse u isto vrijeme bez
ikakvog problema.
15
Stvaranje procesa
Da bi procesor mogao odraditi naredbe nekog programa , one se s diska moraju prebaciti u
memoriju (ram). Prvo se alocira dio memorije a zatim se prebacuje kod. Nakon toga obavlja se
inicijalizacija stoga.
Context switch – prebacivanje obrade s jednog procesa na drugi.
Prebacivanje procesa znači pohraniti :
- CPU konteks ( registre, program counter , stack pointer)
- Registre jedinice za upravlanje memorijom
- Poništiti adrese za prevođenje cachea
Te na kraju sve to dohvatiti iz memorije za proces koji slijedi.
Ako OS podržava više procesa nego što može stati u memoriju , potrebno je uključiti i hard disk
u priču ( inače se koristi cache pa ram)
Proces u memoriji
Kontekst izvršavanja
- Program counter (PC)
- Stack pointer (SP)
- Data registers
Stack – sadrži varijable adrese …
Heap – dinamično se alocira za vrijeme rada
procesa
Data – sadrži globalne varijable
Stog - za privremene podatke
Procesi u nedistribuiranom sustavu
IPC (Inter-process comunication) – predstavlja međusobnu komunikaciju procesa. Procesi
često imaju potrebu za komunikacijom.
Primjer IPC-a je shell pipe koja prosljeđuje izlaz jednog procesa na ulaz drugi.
Ovo su neki od mehanizama koji omogućavaju IPC :
- Imenovane i anonimne cijevi
- Redovi poruka
- Dijeljenje memorije
Komunikacija zahtjeva promjenu konteksta
16
Više-procesne aplikacije
Komunikacija među procesima zahtijeva intervenciju kernela.
Memorija je podijeljena na
- User space područje gdje se izvodi normalni proces (svaki proces osim procesa kernela)
Zadaća kernela je da upravlja procesima koji se ovjde izvršavaju tako da ne utječu jedan
na drugoga
- Kernel space područje gdje je spremljen kod kernela i gdje se izvršavaju kernel procesi.
Da bi prešli sa korisničkog
područja u područje kernela
mora se izvršiti context swich. Što
oduzima dodatno vrijeme. Bolja
solucija je korištenje niti.
3.4 Niti
Niti neovisno izvršava svoj dio koda. Imamo više niti unutar istog procesa.
Niti za razliku od procesa imaju zajedničku memoriju koju dijele. Promjena konteksta je
generalno puno zbog toga.
Pomoću zajedničke memorije obavlja se i komunikacija niti.
Zaštita jedne niti od drugih je odgovornost programera. Samo programiranje višenitnih
aplikacija je kompleksnije za programere ali rezultira boljim performansama aplikacija.
Višenitne aplikacije
Sama granulacija procesa nije dovoljna. Pa tako unutar jednog procesa imamo više niti. Manji su
problemi kod prebacivanja konteksta niti jer one koriste zajedničke resurse. Programer vodi
računa o izolaciji niti.
Više niti se može prividno izvršavati na istom procesoru podjelom vremena. Stvarno paralelno
izvršavanje više niti radi se kod višeprocesorskih računala.
Niti u nedistribuiranom sustavu
Koriste se npr kod proračunskih tablica (Excel) – zato što želimo imati paralelnu obradu i unos
podatak.
Unos podataka treba trigerirati proračune koji če se izvršiti u odvojenoj niti.
Za realizaciju trebamo imati bar 2 niti :
- Jednu za unos
- Jednu za proračun
- Dodatno jednu za automatsku pohranu podataka
17
Primjer kreiranja niti JAVA
Primjer kreiranja niti C
18
3.4.1 Thread safety
Kod pristupa globalnim varijablama(dijeljenih resursa) od strane više niti zatekli smo određene
probleme iz kojih zaključujemo da se takvo stanje ne smije dozvoliti (kritični odsječak itd).
Kod je „Thread safe“ ako manipulira dijeljenim resursima na način da osigurava sigurno
izvršavanje svih niti.
Da bi osigurali sigurno i efikasno manipuliranje dijeljenim resursima predstavljamo koncepte
semafora i mutexa.
Semafori
Semafori vode računa da se pristupanje zajedničkim resursima obavi brzo i efikasno. Proces prvo
zatraži pristup resursu ,a semafor mu zatim dodjeljuje taj resurs ukoliko je slobodan ili ga stavlja
u red čekanja. Procesor pristupa resursu kada na njega dođe red.
Binarni semafor : oređuje dali je resurs slobodan ili zauzet
Mutex
Imamo jednu varijablu koju nazivamo mutex. Ona zaključava ili otključava određeni resurs tako
da samo jedna nit može čitati i pisati , u određenom dijeljenom području , odjednom.
3.4.2 Implementacija niti
Za implementaciju user niti koriste se već gotove bilbioteke koje olakšavaju rad programera.
(posix -pthreads , java.lang.Thread).
User level nit
Koristi se thread biblioteka za stavarenje brisanje i manipulaciju nitima.
Administracija se odvija u korisničkom adresnom prostoru pa je zbog zoga “jeftino” stvarati i
brisati niti te se može jednostavno obaviti prijelaz sa jedne na drugu nit.
• OS ne mora podržavati thread, potrebna je samo thread biblioteka.
• Kernel nije svjestan da se proces odvija kao multithread
• Mana : blokirajući pozivi blokiraju sve niti (blokirajuci poziv je npr ako želimo dohvatiti
nešto sa diska što je trenutno zauzeto , kernel nas blokira i sve user level niti moraju
čekati).
Kernel level niti
• Kernel se birne o prebacivanju niti, nema blokirajućih poziva
• Prebacivenj konteksta niti može biti jednako skupo kao prebacivanje konteska
procesa. Pa prednosti koje smo imali sa nitima pred procesima nestaju.
Light Weight Proces (hibrid user i kernel level niti) – najbolje rješenje
• izvršava se u kontekstu proecsa
• jedan proces može sadržavati više LWP koji dijele svoje resurse.
19
3.5 Višenitni klijenti
Ovakvi klijenti skrivaju čekanje u komunikaciji. Dok se čeka jedan resurs može se započeti sa
radom neke ruge stvari.
Npr. Web browser :
- uspostavi TCP/IP konekcju, dohvati HTML, dok dohvaća dodatne resurse (slike, ikone,
skripte…) HTML se prikazuje.
- Paralelno može otvoriti više konekcija.
- Može dohvaćati podatke paralelno sa više adresa pa se tako balansira opterećenje.
3.6 Višenitni serveri
Iako imamo važne koristi od korištenja niti kod kli jenta, ali najvažnija primjena višenitnosti je na
serveru. Koristi višeprocesorska računala tako da mogu paralelno izvršavati obradu.
Npr kod File severa imamo dvije niti (Dispatcher i work niti). Jedna služi za primanje zahtjeva , a
druga dohvaća i poslužuje datoteke.
Dok se datoteka učitava sa diska, nit ide u stanje čekanja i onda druge niti mogu koristiti
procesor.
Dakle niti u distribuiranom sustu omogućavaju da se istovremeno izvršava klijentsko i serversko
procesiranje. Takav koncept rezultira puno boljim performansama od običnih sustava koji ne
koriste paralelnu obradu.
3.7 Virtualizacija
Virtualizacija je kreiranje virtualne verzije resursa. To može biti hardware,(mobitel) operacijski
sustav(cygwin), sustav za pohranu(virtualni disk) , računalna mreža…
Ona olakšava administraciju velikog broja servera ili resursa. Pomaže boljoj skalabilnosti i boljoj
iskoristivosti resrusa. Cloud hosting i computing koristi virtualizaciju.
Zbog brzog razvoja software i hardwarea aplikacija gotovo uvijek nadživi operaijski sustav i
hardver koji je podržava. Rješenje za to je stvaranje virutalnog okruženja na kojem će ta
aplikacija ponovno raditi.
20
General instruction : sučelje između hardware-a i software sadrži
strojne naredbe koje može pozvati bilo koji program
Privleged instructions : sučelje između hardwarea i softwarea koje
sadrži samo privilegirani program npr OS.
System calls: sučelje koje se sastoji od sistemskih poziva koje nudi
operacijski sutav
Library functions – sučelje koje se sastoji od poziva biblioteka API
Uloga u distribuiranom sustavu
Virtualizaciju često koriste hosting kompanije tako da imaju jedno glavno računalo (ili neki grid)
te u njemu kreiraju više virtualnih instanci servera koje prodaju svojim korisnicima. U današnje
vrijeme virtualizacija je veoma razvijena pa tako i današnji procesori podrđavaju virtualizaciju.
To omogućava da se virtualne mašine izvode neovisno o sustavu koji ih hosta.
Arhitekture virtualnih mašina
Virtualizacija se može implementirati na više razina :
- Proces virtual machine : apstraktni skup naredbi koji se koriste za izvršavanje aplikacije ,
npr Java runtime ili Windows emulator (wine)
- Virtual machine Moinitor (VMM): sloj koji u potpunosti skriva postojeći hardware kao
sučelje. Ovo omgućava postojanje više operacijskih sustava na jednoj platformi
Vmware , VirtualBox , Parallels …
21
4. Klijent server procesi
4.1 Klijent
4.1.1 Uvod
Glavni zadatak klijenta je pružanje korisničkog suečelja pomoću kojeg korisnik može
komunicirati sa udaljenim serverom.
U grubo imamo dva načina za izvođenje tog zadatka :
1. komunikaciju omogućava aplikacija (X window system)
2. komunikacija se odvija preko Middleware-a (thin client)
Primjer X Window System
To je jedan od najstarijih sustava koji pruža korisničko sučelje preko mreže.
Xkernel – sadrži drajvere uređaja za upravljanje terminalima (miš ekran tipkovnica) te prima
zahtjeve u kojima se nalaze instrukcije za promjenu izgleda ekrana. On je zapravo server.
Moguća je komunikacija sa više uređaja istovremeno
Xlib - koriste aplikacije za primanje i slanje zahtijeva prema xkernelu.
X protokol se koristi da bi instance Xlib-a komunicirale se Xkernelom (na mreži).
Aplikacije upravljaju izgledom sučelja korištenjem komandi definiranih X standardom. Logika
aplikacije bi trebala biti izdvojena od korisničkog sučelja , što nije slučaj kod x sistema.
Neki od pristupa rješavanju tih problema su NX i upravljanje izgledom kreana na strani aplikacije
na razini piksela (zahtjeva dobru kompresiju podataka).
Najbolje rješenje je upotreba Thin clienta, koji zahtjeve korisnika stavlja u red i pametno ih
izvršava.
22
4.1.2 Složeni dokumenti
Npr Editiranje na licu mjesta nekog dokumenta koji se sastoji od texta i slike :
- Ako se korisnikov kursor nalazi iznad teksta omogućiti unos teksta
- Ako je iznad slike omogućiti obradu slike
Korisničko sučelje koje ima mogucnost baratanja sa složenim dokumentima dobro sakriva
činjenicu da su ti složeni dokumenti zapravo zasebne aplikacije .
4.1.3 Klijentski software za transparentnost distribucije
Osim korisničkog sučelja, klijentski sofver mora skrivati distribuciju (dohvaćanje podataka sa više
servera …)
Dakle treba osigurati transparentnost pristupa (to se osigurava automatskim generiranjem
klijentovih zahtijeva).
Transparentnost lokacije , migracije i relokacije – odgovarajućom konencijom imenovanja.(URL)
Klijentsko rješenje pristupa međusloju koji skriva relokaciju , replicira zahtjeve na različite servere
, osigurava se u slučaju greške …
4.2 Server
Server nudi specifičnu uslugu koja je potrebna klijentu. U osnovi svi serveri su organizirani na isti
način :
- Server čeka zahtijev klijenta
- Nakon što primi zahtjev klijenta izvrši potrebnu obradu
Razlikujemo :
- Iterativni server -> prima zahtjev obrađuje ga i čeka slijedeći zahtijev
- Konkurentni server -> prima zahtijev te ga prosljeđuje niti i nastavlja sa čekanjem novih
zahtijeva. Ovo je primjer višenitnog severa.
23
4.2.1 Server Portovi
Krajnja točka kontakta sa serverom je port. Svaki server sluša određene portove.
Kako ce klijent znati koji port kontaktirati ?
- Jedan od načina da se globalno dodjele neki portovi određenim uslugama. Što je danas i
naravljeno (npr WWW – 80 , FTP 21...). U tom slučaju klijent treba samo znati ip adresu
odredišta (dns se koristi za to)
- Ima mnogo servisa koji nemaju vec predefinirani port. U tom slučaju klijent kontaktira
daemon proces koji sadži sve zapise o uslugama i portovima za određeni server. Taj
daemon proces se nalazi na nekom predefiniranom portu.
Server ima mnogo procesa koje obavlja istovremeno pa je bolji način za relizaciju pristupa
kreiranje jednog superservera koji obavlja sav posao.
Npr za Internet servise imamo inet daemon proces koji sluša veći broj poznatih portova. Kada
zaprimi zahtijev pokreće proces koji ga obrađuje. Nakon obrade proces se gasi.
4.2.2 Prekid veze
Načini na koje možemo prekinit vezu korisnika sa serverom(npr ako korisnik uploda veliki file na
server i u meduvremenu skuzi da zeli prekinit vezu) :
- Najednostavnije da prekinemo komunikaciju (sto je kod interneta skroz lako)
- Slanjem out-of-band podataka
Otvoreiti posebni komunikacijski kanal ili poslati istim kanalom (TCP dozvoljava „urgent“
pakete)
24
4.2.3 Stateless server ne drži informacije o stanju klijenta i može mijenjati svoje stanje bez
da infromira klijente.
Web server je stateless server. On odgovara na HTTP zahtijeve koji mogu biti uplodanje ili
najčešće dobavljanje podataka. Kada se zahtjev završi web server zaboravlja na klijenta.
Datoteke kojima upravlja web server se mogu mijenjati bez znanja klijenta.
HTTP 1.0 – svaki zahtjev zaseban
HTTP 1.1 – sessions
Soft stanje – server pamti podatke o klijentu određeno vrijeme. Nakon isteka veremena
zaboravlja na klijente (korištenje sessiona)
4.2.4 Stateful server čuva informacije o klijentu sve dok ne primi zahtjev za brisanjem
podataka.
Primjer : dokumentni server ( file server)
- Pamti tablicu unosa (koji je klijent uplodao koje dokumente) sve dok klijent ne obriše
dokument
- Također pamti koji klijent ima prava izmjene kao i zadnju izmjenu …
- U slučaju rušenja servera tablica se mora obnoviti (što može biti komplexan zadatak) to
je mana stateful servera.
- Stanja moraju biti trajno pohranjena
4.2.5 Session state vs permanent state
Session stanje se veze za niz operacija jednog korisnika te treba biti održavano samo neko
vrijeme. Ako se izgubi session stanje nema nikakve štete.
Premanenta stanja nije moguće izmijeniti.
Dizajn servera nebi trebao utjecati na uslugu
- Npr Pisanje i čitanje dokumenta se može izvesti i jednim i drugim pristupom
Možemo čuvati informacije na strani klijenta (cookie). Tu su pohranjane informacije korisnika o
prijašnjim pristupima samom serveru. Cookie se šalje sa svakim zahtijevom serveru bez znanja
korisnika.
25
4.2.6 Klasteri servera
Klaster je kolekcija umreženih računala koji su najčešće povezani brzom (LAN) vezom.Svako
računalo u klasteru predstavlja jedan ili više servera.
Klasteri su večinom statički konfiguirani što znači da imaju jednu kranju točku pomoću koje
korisnici pristupaju. Ako ta točka nije u funkciji ne može se pristupiti klasteru.
4.2.7 Distriburiani serveri
DNS može za isti „host name“ vratiti nekoliko adresa. Klijent će iskušati ostale adrese ako jedna
ne uspije.
Distribuirani server je dinamički pomjenjiv skup računala sa varirajućim točkama pristupa.
Ovaj pristup osigurava stabilne servere.
Imaju jedinstvenu kontaktu adresa početno pridjeljenu klasteru koju može bilo ko preuzeti u
slučaju potrebe.
4.2.8 Migracija koda
U nekim situacijama potrebno je prenjeti programe na drugu lokaciju. Nekad i za vrijeme
izvršavanja.
Migracija procesa : prebacivanje procesa u izvršavanje na drugu mašinu.
Migracija je skup proces , ali je na kraju dobar ako imamo opravdane razloge poput ostvarenja
boljih performansi ili fleksibilnosti sustava.
Možemo uštediti u komunikaciji ako dio koda prebacimo na izvršavanje klijentu.
JIT instalacija klijentskoh sofwarea.
26
5. Komunikacija Komunikacija među procesima je srž distribuiranih sustava.
Komunikacija na razini operacijskog sustava :
- Signali, cijevi, redovi poruka , dijeljena memorija,
Distribuirani računalni sustavi
- Socketi, RPC,RMI,MOM, data streaming
Sinkrona komunikacija : sinkronizacija se radi blokirajućim pozivimia – da bi se operacije
uskladile jedan mora čekati da drugi završi sa radom.
Asinkrona komunikacija : nema čekanja, proces nastavlja sa svojim radom nakon poziva.
Eventualno može biti obaviješten kada se operacija završi.
Deadlock je situacija u kojoj dvije niti ili dva procesa čekaju da drugi završi prije nego nastavi sa
radom. Problem se može riješiti korištenjem timeouta.
Signali – najstariji oblik komunikacije u Unix OS. Mogu se generirati tipkovnicom i i greškom u
izvođenju programa.
System V IPC je jedan od prvih komercijalnih verzija Unix OS. Podržava 3 metode za dijeljenje
podataka među procesima :
- Message queus (redovi poruka)
Asinkrono slanje poruka između dva procesa. Red se implmentira i održava od strane
kernela.
- Dvosmijenre cijevi (2x cijev)
Preusmjerava se izlaz jednog procesa na ulaz drugi i obrnuto.
- Shared memory segment
- Semaphore sets (dijeljeni brojači resursa)
27
Socketi
IPC metoda koja omogućava komunikaciju među procesima koji se odvijaju na različitim
mašinama.
Socket komunikacija odvija se preko TCP protokola. Socket se definira IP adresom i portom.
Koriste se sljedeći pozivi (socket,bind,listen,accept,conneckt)
Slojeviti model komunikacije
Fizička razina: protokol definira električna mehanička i signalna sučelja. (napone za 0 i 1, oblik i
veličinu konektora , broj pinova. Prijenos bitova)
Data link razina: provjera ispravnosti podataka. (grupira bitove u okvire i provjerava ispravnost
okvira)
Network razina: brine se o usmjeravanju podataka do odredišta odabirom najboljeg puta
(Najbolji put ne mora ujedno biti i najkraci. Ip protokol – svaka poruka se usmjerava
individualno)
Transportna razina : Brine se o prijenosu poruke od pošiljatelja do primatelja. Rastavlja poruku
na pakete i sastavlja pakete u poruku na odredištu. TCP i UDP protokol.
Protokoli više razine
Session razina: postavlja chekpoint za vrijeme prijenosa velikih količina podataka
Prezentacjiska razina: brine se o identificiranju dijlova informacije iz bitova podataka. Određuje
format podataka.
Aplikacijska razina: koriste se protokoli specifični za pojedine aplikacije. FTP , HTTP …
Middleware u praksi se mrežna komunikacjia odvija korištenjem međusloja.
Međusloj je softver koji omogućava komunikaciju i upravljanje distribuiranim aplikacijama.
Osnovne funkcije :
- Pozivi udaljenih procedura
- Usluga stvaranja reda poruka
- Podrška komunikaciji kroz kontinuirane medije putem stream-a
- Multitaskiranje – slanje poruka na više adresa
Vrste komunikacije:
- Presistent: poruka se čuva trajno dok je primatelj ne primi (kao email)
- Transistent: poruka se čuva dok su pošiljatelj ili primatelj aktivni
- Sinkrona i asinkrona
28
RPC (Remote Procedure calls) RMI(remote method communication)
Usluge su ponuđene u obliku procedure. Tijelo procedure se izvršava na serveru.
Klijent je blokiran dok se procedura ne izvrši (sinkrona komunikacija).
Implemntacija na klijentovoj strani (stub) pakira parametre u poruku koja se predaje
udaljenom serveru. Nakon što udaljeni server vrati poruku ona se raspakira i predaje
aplikaciji koja je zatražila komunikacija sa udaljenom procedurom.
Message oriented modeli
Prezistenta asinkrona komunikacija
-socket
Streaming
Kada dvije sljedne poruke imaju vremensku povezanost. Specificira se maksimalno kašnjenje.
Npr audio ili video stream.
Multicasting
Način komunikacije u kojoj pošiljatelj šalje podatke na više primatelja.
Imamo dva pristupa za multicasting:
- Definiranjem stabla slanja od pošiljatelja do više primatelja (P2P)
- Protokoli epidemije (širi poruku preko velikog distribuiranog sistema)
6. Big data
Za objašnjene pojma Big data koristi se 3V model. Big data su velike infomracije (TB,PB), često
izmjenjive i u različitim formatima koje zahtijevaju posebne načine obrade.
- Volume - velika količina podataka (u TB , PB …)
- Velocity – često se izmjenjuju
- Variety – različitih formata
5.1 Map reduce
MapReduce je programski model za obradu velikih skupova podataka. Radi se o distribuiranom
načinu obrade podataka kod kojega se počeni skup podatak dijeli na više manjih skupina koje se
zatim paralelno obrađuju na velikom broju računala (klasteru).
Ovakav način obrade podataka omogućava dobivanje jako brzih rezultata.
Sastoji se od MAP (filtriranje i sortiranje) i Reduce (sumiranje) procesa
Način rada :
1. Map reduce biblioteka razdvaja ulazne podatke na M dijelova
2. Program odabire M worker čvorova za Map operaciju i R čvorova za Reduce operaiju.
29
3. Worker čvorovi koji obavljaju Map operaciju učitavaju podatke , parsiraju key-value parove i
prosljeđuju je korisničkoj definiranoj Map funkciji.
4. Međurezultati se pohranjuju na disk i obavještava se master čvor o lokaciji.
5. Master čvor pomoću RPC učitava pohranjene podatke u Reduce čvorove. Reduce čvor sortira
podatke.
6. Reducer obavlja sumiranje podataka.
7. Kada svi maperi i reduceri zavše sa radom , obavještava se korisnički program
30
5.2 Google Distributed File System (GFS)
Google file system – razvijen za potrebe googl-a. Stotine terabajta podataka su raspoređeni na
stotine tisuća računala.
Sustav je organiziran tako da ima jedan master čvor i chunk servere (koji sadže listu podataka i
komuniciraju sa klijentima).
Datoteke se dijele na komadiće (chunk) Svaki chunk datoteke je repliciran je na 3 chunk servera.
Master sadrži samo metapodatke (podatke o tome gdje se pojedini dijelovi datoteke nalaze)
Čitanje
Klijent zahtjeva od mastera ime dadoteke i offset. Master šalje klijentu adresu željenog chunk-a
datoteke. Klijent nakon toga kontaktira direkno chunk server. Ako chunk server ne odgovara ,
klijent traži od master servera adresu druge replike. Ako više klijenata pristupa istovremeno
istom chunku ,master ih usmjerava na različite replike
Pisanje
Kod pisanja treba paziti na konzistenciju među replikama. Jedna replika na jednom chunk
serveru se proglašava primarnim chunkom. Master vodi računa koja je replika primarna.
Klijent od master čvora traži lokaciju chunka. Master šalje klijentu njegovu lokaciju.
Klijent svim replikama šalje podatke koje oni pohranju u cache.
Kada sve replike potvrde primitak podataka , klijent šalje naredbu WRITE masteru.
Master prosljeđuje write naredbu svim replikama i one izvrše pisanje te šalju prikladan odgovor.
Ako dođe do greške postupak se ponavlja od klijentovog slanja podataka.
31
5.3 Handoop
Google za svoje podatke koristi MapReduce i GFS , ali ne nudi open source implementaciju.
Handoop je open source framework koji služi za izradu aplikacje koja će se odvijati na
klasterima.
Svojstva :
- Reduantan i pozudan
- Pojednostavljuje programiranje distribuiranih aplikacija
- Koristi klastere koji se sastoje od običnih računala.
- Implementira MapReduce i Hadoop DFS
- napiasn u javi, koriste ga google facebook amazon cloud services …
5.4 Compute Unified Device Arhitecture
CUDA je programerski model tvrtke nVidia koja omogućava izradu programa opće namjene koji
koriste resurs grafičke kartice za paralelno računanje.
CPU GPU
Mali broj jezgri Veliki broj jezgri
Velika količina cache memorije Mala količina cache memorije
Dobar za složene proračune (task paralelizam) Dobar za „data“ paralelizam