Professional Documents
Culture Documents
Osztott Rendszerek - Regi Vizsgakerdesek
Osztott Rendszerek - Regi Vizsgakerdesek
Elosztott rendszernek milyen alrendszereit ismersz
Elosztott számítási rendszerek: Több gép elosztva végzi a számításokat (Cluster
architektúra), különböző feladatokat (Grid architektúra), vagy adatok tárolását
(Cloud architektúra)
Elosztott információs rendszerek: Adatok kezelését vagy meglévő ilyen rendszerek
elérését biztosító rendszer. ACID követelményrendszernek eleget tevő különböző
feladatok, például: tranzakciók kezelése.
Elosztott átható (pervasive, ubiquitous) rendszerek: Kicsi, mobil rendszerek,
melyeknek komponensei könnyen konfigurálhatóak a környezetváltozás és
sokféle felhasználási mód kezelhetőségének az érdekében, illetve egyszerű
felépítésű adategységeik könnyű információ áramlást tesznek lehetővé, például:
érzékelőhálózatok.
2. 2PC vs 3PC
* 2PC: two phase commit:
Egy Résztvevő és egy Koordinátor között zajlik. Véglegesítésre szolgáló
algoritmus.
Lépései:
1/K: Elküldi mindenkinek a véglegesítési kérelmet, hogy szavazzanak, hogy
készen állnake a véglegesítésre. (votecommit)
1/R: Ha a résztvevő meg van elégedve az értékkel, akkor visszaküldheti, hogy
votecommit, vagy ha nem, akkor voteabort, de ebben az esetben le is áll.
2/K: Megkapja a válaszokat, ha voteabortot talál, akkor kiküldi a globalabort
üzenetet, vagyis, hogy minden folyamat abortáljon, ha viszont nincs voteabort,
akkor a globalcommit üzenetet küldi ki.
2/R: Attól függően, hogy globalcommit, vagy globalabort üzenetet kap, elmenti
az adatokat, vagy elveti.
A probléma ezzel, hogy beragadhat, ha a koordinátor és (legalább) egy folyamat
meghalt, a többi pedig READY státuszban van, mert nem tudjuk, hogy az elhalt
process kapotte már valamilyen üzenetet. A folyamatok nem tudják eldönteni,
hogy az elhalt folyamat kapotte globalcommit üzenetet és ezáltal végre hajtotte
már a tranzakciót. (ez szinte sosem fordul elő a gyakorlatban)
* 3PC: three phase commit:
Az elso két lépés hasonlóan történik. Üzenetekre egy adott ideig (timeout) várnak
a résztvevők, illletve a koordinátor.
2/K: Megkapja a válaszokat, ha voteabortot talál, akkor globalabortot küld, ha
nincs voteabort, akkor preparecommit üzenetet küld.
2/R: Ha globalabort, akkor elveti az üzenetet. Ha preparecommit, akkor
visszaküldi, hogy readycommit, vagy ha közben lehalt, akkor semmit.
3/K: Összegyujti a readycommit üzeneteket és ezeknek a folyamatoknak elküldi
a globalcommit üzenetet.
3/R: Megkapja a globalcommit üzenetet és véglegesíti az eredményt.
Ez az algoritmus nem ragadhat be akkor sem, ha a koordinátor vagy legalább egy
folyamat meghalt, mert ha egy folyamat nem kap preparecommit üzenetet akkor
megszakítja a tranzakciót, illetve preparecommitot csak abban az esetben
kaphat ha minden folyamat készen áll a commitra. Ekkor ha a koordinátor
meghalna, akkor is commitolni fog a folyamat.
3. Miért a pletykálás algoritmust választjuk az antientrópiával szemben
Antientrópia algoritmusával O(log(N)) nagyságrendű fordulóval minden szerver
megkapja a frissítést, viszont a pletykálás algoritmussal exponenciálisan
csökkenthető a tudatlan csúcsok száma a k valószínűség növelésével, habár nem
garantálható, hogy minden szerver ismerni fogja a frissítést.
4. Szemantikák fájlok elérésére
A konkurens fájlműveletek biztosításához több lehetséges szemantika létezik:
a) Módosíthatatlan fájlok: A fájl létrehozása után a fájl nem módosítható. (ez
ritkán működik)
b) UNIX szemantika: A fájlokból olvasás esetén mindig a legutolsó írási művelet
eredményét látja a felhasználó.
c) Munkamenet szemantika: Ha egy kliens megnyitja a fájlt, addig amíg nem
véglegesíti az írási/olvasási műveletek hatását, addig azokat csak ő láthatja,
véglegesítés után már a többi felhasználó is.
d) Tranzakciós szemantika: A rendszer minden fájlra biztosít egy külön
tranzakciót.
5. Hogyan választjuk meg a szuperpeereket?
Superpeerre teljesülön:
Többi csúcs minimális késleltetéssel érje el őket
Egyenletesen legyenek elosztva a hálózaton
Egy superpeer korlátozott számú peert szolgáljon ki
A csúcsok egy megadott hányadát válasszuk superpeernek
6. Milyen módon nőhet meg egy rendszer mérete?
a) Méret szerint: Megnő a rendszeren lévő felhasználók és/vagy folyamatok
száma
b) Földrajzilag: A rendszert hirtelen nagyobb földrajzi egységekről kezdik el
használni.
c) Adminisztrációs szempontból: Az új adminisztrációs részlegek bekerülése új
biztonsági, karbantartási stb. kérdéseket vet fel.
7. Cluster vs grid
Cluster (fürt): A cluster centralizált architektúra. Rendszerei (általában)
homogének, vagyis azonos hardver, operációs rendszer, platform jellemzi. A node
k azonos számításon dolgoznak, erőforrásukat megosztva egy nagy rendszernek
számítanak.
Minden esetben van egy master node, amin található egy management szoftver,
ami felügyeli a többi (computing) nodet.
Általában kisebb mint a grid.
Grid (háló): A grid kevésbé egységes architektúra és általában nagyobb méretű.
Több szerkezeti egységet is átívelhet. A nodek párhuzamosan különböző
feladatokat végeznek.
Heterogén, vagyis a hardver stb. eltér(het) a gépeken. Nagyobb hálózatokra
terjed ki.
8. Chord struktúra műveletei
(megjegyzés: Chord struktúrában tárolt fa felépítése:
A multicast hálózatunkhoz generálunk egy azonosítót, így egyszerre több multicast
hálózatunk is lehet egy rendszerben.
Tegyük fel, hogy az azonosító egyértelműen kijelöl egy csúcsot a rendszerünkben.
Ez a csúcs lesz a fa gyökere.
Ha a P csúcs csatlakozni szeretne a multicast hálózathoz, csatlakozási kérést küld
a gyökér felé. A P csúcstól a gyökérig egyértelmű az útvonal ennek minden csúcsát
a fa részévé teszünk (ha még nem volt az). Így P elérhetővé válik a gyökértől.
Terv: a küldendő üzeneteket mindenki elküldi a gyökérhez, majd onnan a fán
lefele terjednek.)
Chord elosztott hasítótábla:
Elosztott hasítótáblát készítünk, ebben a csúcsok tárolnak egyedeket. Az N csúcs
gyűrű overlay szerkezetbe van szervezve.
• Mindegyik csúcshoz véletlenszerűen hozzárendelünk egy m bites
azonosítót, és mindegyik entitáshoz egy m bites kulcsot. (Tehát N <= 2m)
• A k kulcsú egyed felelőse az az id azonosítójú csúcs, amelyre k <= id, és
nincs köztük másik csúcs. A felelős csúcsot a kulcs rá következőjének is
szokás nevezni; jelölje succ(k) vagy successor(k)
a) Keresés:
Mindegyik p csúcs egy FTp „finger table”t tárol m bejegyzéssel:
FTp[i] = successor(p + 2i1)
A k kulcsú egyed kikereséséhez (ha nem a jelenlegi csúcs tartalmazza) a kérést
továbbítjuk a j indexű csúcshoz, amelyre
FTp[j] <= k < FTp[j+1]
illetve, ha p < k < FTp[1], akkor is FTp[1]hez irányítjuk a kérést.
Ez a megoldás O(m), azaz O(log(N)) hatékonyságú. (Ha minden node csak a rá
következőjére hivatkozna akkor O(N), ami rosszul skálázható)
b) Új csúcs csatlakozása:
Az új node inicializálása.
Nodek értesítése egy új node csatlakozásáról, nodek finger tablejeinek
frissítése.
Az új node átveszi a hozzátartozó kulcsokat a rákövetkezőjétől.
c) Stabilizálás:
Stabilizáló protokoll lehetővé teszi, hogy mindig minden csúcs finger tablejei
helyesek legyenek.
********************** II. VIZSGA ***********************
1. Ismertess röviden két módszert folyamokon QoS (Quality of service)
biztosítására.
a) Differenciált szolgáltatási architektúra: A hálózat routerei kategorizálják az
áthaladó forgalmat a beérkező adatcsomagok tartalma szerint és néhány
csoportot elsőbbséggel továbbítanak.
b) Remegés csökkentése: A routerek pufferelhetik az adatokat a remegés
csökkentése érdekében. (jitter – variation in the network delay, buffer –
temporary memory storage of data)
2. Hogyan működik a zsarnok algoritmus?
Ha a jelenlegi vezető kiesik, bármelyik csúcs kérheti új vezető választását. A
gráfban a csúcsok sorszámmal vannak ellátva és mindig a legnagyobb számú
csúcsot akarjuk vezetőnek. A kérelmező választási üzenetet küld azoknak a
csúcsoknak, amelyről nem ismert, hogy kisebb lenne nála. A nagyobb sorszámú
csúcsok pedig visszaküldik egy letiltó üzenetet a kisebb sorszámú csúcsnak (OK),
ha egy csúcs egy bizonyos időn belül nem kap vissza letiltó üzenetet, akkor ő lesz
a vezető és erről egy globális üzenettel értesíti a többi csúcsot.
4. Hogyan csatlakozik az RPC kliens a szerverhez?
1.) A szolgáltatásokat katalógusba jegyzik be (lokálisan és globálisan is).
2.) A kliens kikeresi a katalógusból a számára megfelelő szolgáltatást.
3.) A kliens végpontot igényel a daemontól a kommunikációhoz.
5. Ismertesd a particionált tér ábrázolású elosztott rendszert.
Az adatoknak most d mezője van, kulccsal nem rendelkeznek. Az így adódó tér fel
van osztva annyi tartományra, ahány csúcsunk van; minden csúcs valamelyik
tartomány adataiért felelős. Ha egy új csúcs érkezik, kettébontunk egy
tartományt.
6. Milyen feladatokra szoktunk szálakat használni kliensoldalon?
Például: Többszálú webkliens
A böngésző mindegyik tartalmat külön szálon tölti le, amíg a HTTP kéréseket
kiszolgálják, ezek blokkolódnak, így elfedi a hálózat késleltetését. Amikor egyegy
fájl megérkezik, a blokkolás megszűnik és a böngésző megjeleníti a tartalmat.
Például: több távoli eljáráshívás egyszerre (RPC)
Egy kliens több távoli szolgáltatást szeretne igénybe venni. Mindegyik kérést
külön szál kezeli. Megvárja, amíg mindegyik kérésre megérkezik a válasz.
7. Milyen jellemzői vannak az átható (ubiquitous) elosztott
rendszereknek?
Sok elosztott rendszer kis, mobil részekből áll. Ezeket a rendszereket nagyon
sokféleképpen fel tudjuk használni.
Jellemzői:
a) Mivel a környezet gyakran változhat, ezért jól kell alkalmazkodniuk ehhez.
b) Adhoc szerveződés: Mivel a rendszer komponenseit nagyon sokféleképpen
használhatják, könnyen konfigurálhatónak kell lennie.
c) Megosztott szolgáltatások: Mivel a rendszer nagyon változékony, az adatoknak
könnyen kell áramlaniuk. Ezért a rendszer elemei egyszerű szerkezetűek.
8. Milyen rendszerekben használunk üzenetközvetítőt (message broker)
és mi a feladata?
Az üzenetsor kezelő rendszerek esetén. Ezek feltételezik, hogy az üzenetek
azonos protokoll alapján készültek, ezért, ha mégis valamilyen módon
átalakításra szorul az üzenet, azt egy message broker fogja elvégezni.
Gondoskodik a megfelelő konverziókról és átalakítja az üzenetet a fogadó
formátumára. Átjáróként is szolgál a kliens és a szerver között, ezért a közvetítés
mellett pl. biztonsági szerepe is van. Az üzenet tartalmát is megvizsgálhatja.
********************** III. VIZSGA ***********************
1. ACID tulajdonságok
a) Atomicity (atomosság): Vagy a tranzakció minden eleme sikerrel végrehajtódik,
vagy egyik sem.
b) Consistency (konzisztencia): A tranzakció végével konzisztens állapot kell, hogy
fent álljon. (közben előfordulhat inkonzisztencia)
c) Isolation (elkülöníthetőség): Minden tranzakciónak úgy kell végbemennie,
mintha az lenne az egyetlen aktív tranzakció, vagyis elkülöníthetőek legyenek
egymástól és ne befolyásolják egymást semmilyen módon.
d) Durability (tartósság): A tranzakció által végrehajtott módosításokat tartós
adattárolóra kell írni, hogy esetleges rendszerhiba esetén visszaállíthatóak
legyenek.
2. Milyen jellemzői vannak az átható,osztott rétegeknek?
Sok elosztott rendszer kis, mobil részekből áll. Ezeket a rendszereket nagyon
sokféleképpen fel tudjuk használni.
Jellemzői:
a) Mivel a környezet gyakran változhat, ezért jól kell alkalmazkodniuk ehhez.
b) Adhoc szerveződés: Mivel a rendszer komponenseit nagyon sokféleképpen
használhatják, könnyen konfigurálhatónak kell lennie.
c) Megosztott szolgáltatások: Mivel a rendszer nagyon változékony, az adatoknak
könnyen kell áramlaniuk. Ezért a rendszer elemei egyszerű szerkezetűek.
3. Hasonlíts össze két kölcsönös kizárási algoritmust
a) Központi szerver: Az erőforráshoz való hozzáférésről, egy központi koordinátor
dönt. Ha az erőforrás szabad (nem használja egy folyamat sem), és egy folyamat
kéri, akkor a koordinátor engedélyezi számára és az erőforrás foglalt lesz. Ha
ezután még egy folyamat kéri, akkor a koordinátor erre fenntart egy várakozási
sort, amibe behelyezi a klienst. Amint az előző végzett a dolgával, a sorban
következő folyamat kap engedélyt. Ha kiürül a sor és senki nem használja az
erőforrást, az újra szabaddá válik.
b) Decentralizált módszer: Itt nincs központosítva a döntés. Az erőforrás
replikálva van és mindegyik replikátumnak van egy koordinátora, összesen n
darab. A hozzáféréshez többségi szavazás szükséges és ha elég (több mint n/2)
szavazat igen, akkor a folyamat hozzáférést kap az erőforráshoz.
4. Miben hasonlítanak és térnek el a szálak és a folyamatok
Szál: A processzor egy szoftveres megfelelője, minimális kontextussal.
Folyamat: Egy, vagy több szálat tartalmazó, nagyobb egység.
Minden folyamat különkülön memóriarészt kap. A szálak osztott
memóriaterületen dolgoznak. A szálak és folyamatok is önálló végrehajtási
egységek. A folyamatok egy vagy több szálat tartalmaznak, de a szálak nem
tartalmazhatnak folyamatokat.
Folyamatok kontextusváltása sokkal költségesebb.
5. Milyen lehetséges feladatai szoktak lenni a köztesrétegnek
(middleware)?
A köztesrétegnek általában általános és minden alkalmazás számára hasznos
feladatai vannak.
Például:
Elnevezési protokollok
Sokféle kommunikációs protokoll
Biztonsági protokollok
Sorosítás (marshalling, serialization) > Adatok reprezentációjának átalakítása
6. Hogyan keresünk rá egy egyedre, ha hierarchikus névteret
használunk ?
A hierarchikus névtér fa szerkezetű, amiben az egyed helyét a levél mutatja.
A kliens valamelyik tartományba tartozik, innen indul a keresés.
Felmegyünk a fában addig, amíg olyan csúcshoz nem érünk, amelyik tud Eről,
aztán követjük a mutatókat a levélig, ahol megvan E címe.
Mivel a gyökér minden egyedet ismer, az algoritmus terminálása garantált.
7. Hogyan lehet fenntartani a folytonos konzisztenciát?
Ha megtehetjük a konzisztenciafeltételeket nem a teljes adatbázisra szabjuk
meg, hanem az adatoknak minél szűkebb körére. Az olyan adategység, amelyre
közös feltételrendszer vonatkozik, a conit (consistency unit). A conitokkal
mérhető az alkalmazás konzisztenciája és ellenőrizhető, hogy a replikátumok
számértékeinek eltérései, replikátumok elavultsága illetve műveletek
sorrendjeinek eltérései a kívánt határértéken belül vannak.
8. Mit, milyen jellegű részeket tartalmaznak az objektumszerverek?
A rendszer részei a kiszolgálók, a vázak és az adapterek.
A kiszolgálókat több paradigma szerint is lehet implementálni:
• Függvények gyűjteményei (pl.: C)
• Osztályok (pl.: Java, C++)
A váz (skeleton) a szerveroldali hálózati kapcsolatokat kezeli:
• Kicsomagolja a beérkező kéréseket, lokálisan meghívja az objektumot,
becsomagolja és visszaküldi a választ.
• Az interface specifikációja alapján hozzák létre.
Az objektumadapter feladata objektumok egy csoportjának kezelése:
• Elsőként fogadja a kéréseket, és azonosítja a releváns kiszolgálót.
• Policy szerint aktiválja a megfelelő vázat.
• Az adapter generálja az objektumhivatkozásokat.
9. RPC kommunikáció során milyen problémák léphetnek fel ?
A kliens nem találja a szervert. Ezt egyszerűen ki lehet jelezni a kliensnél.
A kliens kérése elveszett. A kliens újraküldi a kérést.
Összeomlik a kliens.
Elveszett a szerver válasza.
A szerver összeomlott. Ezt nehezebb kezelni, mert a kliens nem tudja, hogy a
szerver mennyire dolgozta fel a kérést.
10. Mi a hibajelenség, mi a hiba, hiba ok ?
Hibajelenség (failure): a komponens nem a tőle elvártaknak megfelelően üzemel
Hiba (error): olyan rendszerállapot, amely hibajelenséghez vezethet
Hibaok (fault): a hiba (feltételezett) oka
11. Hogyan működnek a cluster alapú fájlrendszerek ?
A fájlokat csíkokra bontjuk (striping) és különböző eszközökön tároljuk, így a
részeiket párhuzamosan érjük el. Ennek célja a rendszer gyorsítása és
biztonságosabbá tétele.
12. Az önszervező szerver működése
Az önszervező szerver lényege az adaptáció. Elvárásaink lehetnek:
önkonfiguráció, önkezelő, önjavító, önoptimalizáló stb.
Visszacsatolásos vezérlést használ, vagyis megnézi az egyes tulajdonságok esetén
megfelelő értékeket és azt, hogy a rendszer mennyire tér el és ennek segítségével
beállítja hogy elfogadható érték legyen.
********************** IV. VIZSGA ***********************
1. message broker
Az üzenetsor kezelő rendszerek esetén. Ezek feltételezik, hogy az üzenetek
azonos protokoll alapján készültek, ezért, ha mégis valamilyen módon
átalakításra szorul az üzenet, azt egy message broker fogja elvégezni.
Gondoskodik a megfelelő konverziókról és átalakítja az üzenetet a fogadó
formátumára. Átjáróként is szolgál a kliens és a szerver között, ezért a közvetítés
mellett pl. biztonsági szerepe is van. Az üzenet tartalmát is megvizsgálhatja.
2. átható rendszer
Sok elosztott rendszer kis, mobil részekből áll. Ezeket a rendszereket nagyon
sokféleképpen fel tudjuk használni.
Jellemzoő:
a) Mivel a környezet gyakran változhat, ezért jól kell alkalmazkodniuk ehhez.
b) Adhoc szerveződés: Mivel a rendszer komponenseit nagyon sokféleképpen
használhatják, könnyen konfigurálhatónak kell lennie.
c) Megosztott szolgáltatások: Mivel a rendszer nagyon változékony, az adatoknak
könnyen kell áramlaniuk. Ezért a rendszer elemei egyszerű szerkezetűek.
3. X.500 struktúrája
A katalógusszolgáltatásokban (directory service) az attribútumokra megkötések
érvényesek. A legismertebb szabvány az X.500, amelyet az LDAP protokollon
keresztül szokás elérni. Az elnevezési rendszer fastruktúrájú, élei névalkotó
jellemzőkkel (attribútumérték párokkal) címzettek. Az egyedekre az útjuk
jellemzői vonatkoznak, és további párokat is tartalmazhatnak.
4. kliens konzisztenciája
Kliensközpontú konzisztencia esetén a cél, hogy azokat az adatokat amelyeket a
kliens az A szerveren módosított ugyanolyan állapotban lássa a B szerveren is.
Típusai:
a) Monoton olvasás (olvasás után olvasás):
Ha egyszer a kliens kiolvasott egy értéket Xből, akkor onnantól azt az értéket,
vagy frissebbet lásson.
b) Monoton írás (írás után írás):
A kliens csak akkor írhatja Xet, ha a kliens korábbi írásai Xre már
befejeződtek.
c) Olvasd az írásodat (írás után olvasás):
Ha a kliens olvassa az Xet, akkor az általa véghezvitt legfrissebb írás eredménye
látszódjon. (vagy frissebb)
d) Olvasás után írás:
Ha a kliens kiolvasott egy értéket Xből, akkor minden ezután lévő módosítás X
legalább ennyire friss értéket módosítsa.
5. bizánci generálisok
Hibaelfedés csoportokban:
khibatűrőcsoport: olyan csoport, amely képes elfedni k tag egyszerre történő
meghibásodását.
Tegyük fel, hogy a csapattagok különbözően működnek és mindegyik kimenetét
el kell juttatni mindenki másnak. 3k+1 tag esetén a "lojális" szerverek képesek
megfelelő adatokat továbbítani k "áruló" jelenlétében is.
6. QoS biztosítása
a) Differenciált szolgáltatási architektúra: A hálózat routerei kategorizálják az
áthaladó forgalmat a beérkező adatcsomagok tartalma szerint és néhány
csoportot elsőbbséggel továbbítanak.
b) Remegés csökkentése: A routerek pufferelhetik az adatokat a remegés (jitter)
csökkentése érdekében.
7. szálak a kliensoldalon
Például: Többszálú webkliens
A böngésző mindegyik tartalmat külön szálon tölti le, amíg a HTTP kéréseket
kiszolgálják, ezek blokkolódnak, így elfedi a hálózat késleltetését. Amikor egyegy
fájl megérkezik, a blokkolás megszűnik és a böngésző megjeleníti a tartalmat.
Például: több távoli eljáráshívás egyszerre (RPC)
Egy kliens több távoli szolgáltatást szeretne igénybe venni. Mindegyik kérést
külön szál kezeli. Megvárja, amíg mindegyik kérésre megérkezik a válasz.
********************** V. VIZSGA ***********************
1. Overlay hálózat: előnyei, hátrányai
Overlay: Számítógépes hálózat egy meglévő hálózatra építve. A gráfban
szomszédos csúcsok a fizikai hálózaton lehetnek távol egymástól, a rendszer
elfedi, hogy a köztük lévő kommunikáció több gépet érintve történik.
Hátrány: Ha a "virtuális" hálózat nő, akkor nem biztos, hogy fizikailag is nő a
háttérben lévő hálózat. (?)
Előny: Elfedjük azt, hogy két csúcs valójában (fizikailag) nem szomszédos, hanem
akár több gép is lehet köztük, ez P2Pnél fontos.
2. Mi történik ha gyűrűben a vezetőválasztás után összeomlik a
megválasztott vezető
Semmi. A választás bármikor újrakezdhető, bármelyik csúcs által. Még akkor
sincs probléma, ha választás közben omlik össze valamelyik csúcs.
3. Haszonbérlet
A szerver ígéretet tesz a kliensnek, hogy továbbítani fogja neki a frissítéseket,
amíg a haszonbérlet tart.
Lehet dinamikus:
a) Kor alapú: Minél régebbi az objektum annál valószínűtlenebb, hogy
változatlan marad
b) Igénylés gyakorisága szerint: Minél többször igényli, annál hosszabb időre
kapja.
c) Terhelés szerinti: Minél terheltebb a rendszer, annál rövidebb időre adja a
haszonbérleteket.
4. időbélyegvektor, mire használjuk
Ahhoz, hogy megállapítsuk két eseményről, hogy okoz(hat)tae a másikat –
illetve fordítva, nem elegendő az egyszerű időbélyeg. C(a) < C(b) összefüggésből
nem vonható le az a következtetés, hogy az a esemény okságilag megelőzi a b
eseményt.
Időbélyegvektor: Pi most már az összes másik folyamat idejét is számon tartja
VCi[1..n] tömbben
• Induláskor minden óra 0.
• Minden alkalommal amikor a folyamat (Pi) egy belső eseményt észlel,
növeli a saját logikai óráját eggyel: VCi[i] = VCi[i] + 1
• Minden alkalommal amikor egy folyamat üzenetet küld, növeli a saját
logikai óráját
eggyel és
teljes
időbélyeg
vektorát
ráírja az
üzenetre
(ts(m)).
• Minden
alkalommal
amikor egy
folyamat (Pj)
üzenetet kap,
növeli a saját
logikai óráját
eggyel és frissíti az összes folyamat logikai órájának értékét a saját
vektorában: VCj[k] := max{ VCj[k], ts(m)[k] }
5. objektumszerver részei, feladataik
A rendszer részei a kiszolgálók, a vázak és az adapterek.
A kiszolgálókat több paradigma szerint is lehet implementálni:
• Függvények gyűjteményei (pl.: C)
• Osztályok (pl.: Java, C++)
A váz (skeleton) a szerveroldali hálózati kapcsolatokat kezeli:
• Kicsomagolja a beérkező kéréseket, lokálisan meghívja az objektumot,
becsomagolja és visszaküldi a választ.
• Az interface specifikációja alapján hozzák létre.
Az objektumadapter feladata objektumok egy csoportjának kezelése:
• Elsőként fogadja a kéréseket, és azonosítja a releváns kiszolgálót.
• Policy szerint aktiválja a megfelelő vázat.
• Az adapter generálja az objektumhivatkozásokat.
********************** VI. VIZSGA ***********************
1. Milyen fajtái léteznek a járványalgoritmusoknak? Mit lehet mondani a
hatékonyságukról?
a) AntiEntrópia
Minden szerver rendszeresen kiválaszt egy másikat, és kicserélik egymás között
a változásokat.
O(log(n)) nagyságrendű forduló megtétele után az összes csúcshoz eljut a
frissítés. Egy fordulónak az számít, ha mindegyik csúcs megtett egy lépést.
b) Pletykálás
Ha az S szerver új frissítést észlelt, akkor felveszi a kapcsolatot más
szerverekkel, és elküldi számukra a frissítést. Ha olyan szerverhez kapcsolódik,
ahol már jelen van a frissítés, akkor 1/k valószínűséggel abbahagyja a frissítés
terjesztését.
Kellően sok szerver esetén a tudatlanságban maradó szerverek (akikhez nem jut
el a frissítés) száma exponenciálisan csökken a k valószínűség növekedésével, de
ezzel az algoritmussal nem garantálható, hogy minden szerverhez eljut a
frissítés.
2. Hogyan tér el működésben az állapot nélküli és az állapot teljes
szerver? Milyen előnyeik/hátrányaik vannak?
a) Állapot nélküli
Ez a fajta szerver nem tud semmit a kliensről, csak kiszolgálja a kérését. A
kliensek és a szerverek teljesen függetlenek egymástól. Kevésbé valószínű, hogy
inkonzisztencia lép fel azért, mert valamelyik oldal összeomlik. A hatékonyság
rovására mehet, hogy a szerver nem tud semmit a kliensről, pl. nem tudja előre
betölteni az adatokat.
b) Állapot teljes kliens
Információt tart számon a kliensről (pl.: melyik fájlokat használta, és ezeket
előre megnyitja, vagy frissítéseket küld) Nagyon hatékonyak tudnak lenni, ha a
kliensek is tárolhatnak adatokat lokálisan. Megbízhatóvá lehet tenni, a
teljesítmény jelentős romlása nélkül.
3. Miben térnek el a különböző fájlmegosztási szemantikák?
A konkurens fájlműveletek biztosításához több lehetséges szemantika létezik:
a) Módosíthatatlan fájlok: A fájl létrehozása után a fájl nem módosítható. (ez
ritkán működik)
b) UNIX szemantika: A fájlokból olvasás esetén mindig a legutolsó írási művelet
eredményét látja a felhasználó.
c) Munkamenet szemantika: Onnantól, hogy a kliens megnyitja a fájl, addig, hogy
vissza nem írja az adott írási/olvasási műveletek hatását csak o láthatja, majd
csak véglegesítés után a többi felhasználó.
d) Tranzakciós szemantika: A rendszer minden fájlra biztosít egy külön
tranzakciót.
4. Milyen szintekre szokás tagolni a DNSt?
a) Globális szint: A gyökér és a felső csúcsok. A szervezetek közösen kezelik.
(pl. .hu, .eu stb.)
b) Szervezeti szint: Egyegy szervezet által kezelt csúcsok (pl. elte.hu)
c) Kezelői szint: A szervezeti szinten belüli csúcsok (pl. bármelyik fájl a elte.hun
belül)
********************** VII. VIZSGA ***********************
1. Milyen megközelítései vannak a virtualizációnak?
a) Process VM: A virtuális gép (VM) közönséges programként fut, bájtkódot
(előfordított programkódot) hajt végre. (pl.: JVM)
b) VM Monitor, hypervisor: Hardver teljes körű virtualizációja, bármilyen
operációs rendszer és program futtatására képes. (pl.: VMware, VirtualBox)
2. Hogyan szerveződhetnek egy hálózat csúcsai pl. négyzetrács formába
önmaguktól?
Clusterezés segítségével. (Overlay topológia)
Minden i csúcshoz hozzárendelünk egy GID(i) természetes számot, és azt
mondjuk, hogy i a GID(i) csoportba tarozik.
Definiálunk egy távolságfüggvényt:
1, ha GID(i) = GID(j)
dist(i, j) =
0, ha GID(i) != GID(j)
Itt egy távolságfüggvény szerinti megtartó szabály hat (az overlay a közelieket
veszi át).
3. Hogyan hasznosítható a pletykálás algoritmusa egy rendszer
konzisztensen tartásához?
Ha az S szerver új frissítést észlelt, akkor felveszi a kapcsolatot más
szerverekkel, és elküldi számukra a frissítést. Ha olyan szerverhez kapcsolódik,
ahol már jelen van a frissítés, akkor 1/k valószínűséggel abbahagyja a frissítés
terjesztését.
Kellően sok szerver esetén a tudatlanságban maradó szerverek (akikhez nem jut
el a frissítés) száma exponenciálisan csökken a k valószínűség növekedésével, de
ezzel az algoritmussal nem garantálható, hogy minden szerverhez eljut a
frissítés.
4. Egy rendszerben, amelynek üzenetet küldünk, megváltoznak az
üzenetek, amelyek mostantól időbélyeget kapnak. Hogyan vezethető ez
be a legkisebb változtatással a programunkba?
Lampertféle időbélyeggel. Bevezetünk egy számlálót C, ami minden eseménynél
(üzenet küldés/fogadás) növekszik. Így minden üzenetre rá tudjuk nyomni az
időbélyeget ( ts(m) ). Ha pedig üzenetet kapunk, akkor C = max{ C, ts(m) } (m a
kapott üzenet), hogy ne folyhasson „visszafelé” az idő.
5. Mi az a felépülési vonal, mikor van rá szükség és hogyan érjük el?
Konzisztens rendszerállapot:
A folyamatok pillanatfelvételeket készítenek az állapotukról.
konzisztens metszet: olyan ellenőrzőpontgyűjtemény, amelyben minden
beérkezett üzenethez a küldési esemény is el van tárolva
felépülési vonal: legfrissebb konzisztens metszet
6. Kódmigráció után milyen módon kapcsolódhat a migrált kód?
Kapcsolat az erőforrással:
Hogyan tud a komponens kapcsolatban maradni az erőforrással?
• Típuskapcsolt erőforrás esetén a legkönnyebb újrakapcsolódni egy lokális,
megfelelő típusú erőforráshoz
• Azonosítókapcsolt vagy tartalomkapcsolt esetben:
• rendszerszintű hivatkozást létesíthetünk az eredeti erőforrásra
• mozdíthatatlan erőforrások esetén ez az egyetlen lehetőség
• minden más esetben is szóba jöhet, de általában van jobb megoldás
• azonosítókapcsolt erőforrást érdemes áthelyezni
• tartalomkapcsolt erőforrást érdemes lemásolni
7. Hogyan működik a tartalomérzékeny kéréselosztás?
(content aware distribution): A HTTP kérés tartalmát is figyelembe vesszük a
szerver kiválasztásánál. Ez megnöveli a kapcsolattartó terhelését, de sok előnye
van: segítségével hatékonyabb lehet a szerveroldali cacheelés, és lehetnek
bizonyos feladatokra dedikált szervereink
8. Az edge serverek hogyan biztosíthatnak tartalomszolgáltatást
(amelyek az eredetszerveren vannak eredetileg)?
Edge szerver: az adatokat tároló szerver, a kliensekhez minél közelebb van
elhelyezve, jellemzően ott, ahol egy nagyobb hálózat az Internetre csatlakozik.
Tartalom szerinti gyorsítótárazás: Az adatbázist az edge szerver módosított, a
lekérdezésekhez illeszkedő alakban tárolja helyben, és feliratkozik a szerveren a
frissítésekre. Jól működik intervallumokra vonatkozó, összetett lekérdezésekre
9. Ha egy elnevezési rendszerben egy mobil ágens átkerül egy másik
tartományba, mi történik, és hogyan érhető el ezentúl?
(nem teljes)
A névszerverek nem alkalmasak mozgó entitások címeinek kezelésére, mert azok
költözésével gyakran változna a gráf.
10. Milyen stratégiával lehet multicastolni költséghatékonyan egy olyan
lokális hálózatban, amiről tudjuk, hogy a kapcsolat nem megbízható?
(Multicast üzenetküldés: egyszerre küldünk a nodek egy részhalmazának
üzenetet)
Ha a hálózat összesen 3k+1 tagja közül legfeljebb k nem megbízható akkor a
csúcsok konszenzusra juthatnak a helyes információval. (Bizánci hibatűrés)