Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 2. rész: Architektúrák

Hasonló dokumentumok
Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 1. rész: Bevezetés

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Számítógépes Hálózatok Felhasználói réteg DNS, , http, P2P

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) DNS. Domain Name System

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Komponens modellek. 3. Előadás (első fele)

Osztott alkalmazások fejlesztési technológiái Áttekintés

webalkalmazások fejlesztése elosztott alapon

S04-2 Elosztott alkalmazások készítése

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

10: Peer-To-Peer Hálózatok I. HálózatokII, 2007

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 6. rész: Szinkronizáció

A Java EE 5 plattform

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Elosztott rendszer architektúrák

Számítógépes Hálózatok 2012

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 5. rész: Elnevezési rendszerek

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 7. rész: Konzisztencia & replikáció

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 1. rész: Bevezetés

Alkalmazások architektúrája

Kommunikáció. 3. előadás

JAVA webes alkalmazások

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 4. rész: Kommunikáció

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

DSD DSD. Egy országos méretű orvosi adatbázissal kapcsolatos informatikai kihívások. Kovács László Pataki Balázs Pataki Máté MTA SZTAKI DSD

Számítógépes munkakörnyezet II. Szoftver

Hálózati réteg. WSN topológia. Útvonalválasztás.

Szoftverarchitektúrák 3. előadás (második fele) Fornai Viktor

Multimédiás adatbázisok

Párhuzamos programozási platformok

A SZOFTVERTECHNOLÓGIA ALAPJAI

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

CMDB architektúra megjelenítése SAMU-val Rugalmas megoldás. ITSMF Bekk Nándor Magyar Telekom / IT szolgáltatás menedzsment központ

WebSphere Adapters. 6. változat 2. alváltozat. WebSphere Adapter for SAP Software felhasználói kézikönyv 6. változat 2. kiadás

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Fejlesztés, működtetés, felügyelet Hatékony infrastruktúra IBM szoftverekkel

Hálózatok. Alapismeretek. A hálózatok célja, építőelemei, alapfogalmak

Elosztott rendszerek. Az elıadás. Az elosztott rendszer definíciója. Köztesrétegként felépülı elosztott rendszer

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

Tartalom. Történeti áttekintés. Történeti áttekintés Architektúra DCOM vs CORBA. Szoftvertechnológia

Adatbányászat és Perszonalizáció architektúra

eseményvezérelt megoldások Vizuális programozás 5. előadás

2. fejezet Hálózati szoftver

Párhuzamos programozási platformok

2008 IV. 22. Internetes alkalmazások forgalmának mérése és osztályozása. Április 22.

Analitikai megoldások IBM Power és FlashSystem alapokon. Mosolygó Ferenc - Avnet

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) (RFC 821/822) Domain Name System

Osztott rendszerek (Distributed. systems) Bevezetés. Tartalom. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Mobil Peer-to-peer rendszerek

A számítógép-hálózat egy olyan speciális rendszer, amely a számítógépek egymás közötti kommunikációját biztosítja.

Elosztott rendszerek

Alkalmazás technológiai frissítés migrációs és üzemeltetési tapasztalatok

Alkalmazások teljesítmény problémáinak megszűntetése

Hálózati ismeretek. Az együttműködés szükségessége:

Zimbra levelező rendszer

SQL Server High Availability

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 3. rész: Folyamatok

SQL Server High Availability. Bevezetés az SQL Server magas rendelkezésre állási megoldásaiba

A számítástechnika gyakorlata WIN 2000 I. Szerver, ügyfél Protokoll NT domain, Peer to Peer Internet o WWW oftp opop3, SMTP. Webmail (levelező)

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Ajax és Echo 2. Bokor Attila

SUSE Linux Enterprise High Availability. Kovács Lajos Vezető konzultáns

Komponens alapú fejlesztés

III. előadás. Kovács Róbert

API tervezése mobil környezetbe. gyakorlat

alkalmazásfejlesztő környezete

S01-7 Komponens alapú szoftverfejlesztés 1

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Felhő alapú hálózatok (VITMMA02) OpenStack Neutron Networking

Tudásalapú információ-kereső rendszerek elemzése és kifejlesztése

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Beállítások 1. Töltse be a Planet_NET.pkt állományt a szimulációs programba! A teszthálózat már tartalmazza a vállalat

CORBA bevezetés. Paller Gábor Internet és mobil rendszerek menedzselése

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Hálózati Technológiák és Alkalmazások. Vida Rolland, BME TMIT november 5. HSNLab SINCE 1992

MARCONI (Ericsson) SDH felügyeleti rendszerének mérése

Másolatképzési technikák és azok felhasználási lehetőségei

A Skype architektúrája. P2P hálózat Supernode ok, peer-ek, login server

Komponens alapú programozás Bevezetés

Mérnök informatikus (BSc) alapszak levelező tagozat (BIL) / BSc in Engineering Information Technology (Part Time)

Hálózati alapismeretek

az MTA SZTAKI elearning osztályának adaptív tartalom megoldása Fazekas László Dr. Simonics István Wagner Balázs

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

MVC. Model View Controller

Adatbázis rendszerek I

Félreértések elkerülése érdekében kérdezze meg rendszergazdáját, üzemeltetőjét!

5.4.2 Laborgyakorlat: A Windows XP telepítése

Hálózatok építése és üzemeltetése

Kommunikációs rendszerek teljesítőképesség-vizsgálata

COMPANY PROFILE SZOFI ALGORITHMIC RESEARCH KFT

Üzleti intelligencia eszköztár a SAS 9.2 platformon

Novell Nterprise Branch Office: a távoli iroda felügyeletének leegyszerűsítése

Best Practices for TrusBest Practices for Trusted Digital Repositories in HOPE. ted Digital Repositories in HOPE.

Átírás:

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms Maarten van Steen 1 Kitlei Róbert 2 1 VU Amsterdam, Dept. Computer Science 2 ELTE Informatikai Kar 2. rész: Architektúrák 2015. május 24.

Tartalomjegyzék Fejezet 01: Bevezetés 02: Architektúrák 03: Folyamatok 04: Kommunikáció 05: Elnevezési rendszerek 06: Szinkronizáció 07: Konzisztencia & replikáció 08: Hibatűrés 10: Objektumalapú elosztott rendszerek 11: Elosztott fájlrendszerek 12: Elosztott webalapú rendszerek Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Architektúrák Architektúrafajták Szoftverarchitektúrák Architektúrák és köztesréteg Az elosztott rendszerek önszervezése Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Architektúrafajták Alapötlet A rendszer elemeit szervezzük logikai szerepük szerint különböző komponensekbe, és ezeket osszuk el a rendszer gépein. Layer N Object Object Request flow Layer N-1 Response flow Object Method call Layer 2 Layer 1 Object Object (a) (a) A többrétegű megközelítés kliens-szerver rendszerek esetén jól működik (b) Itt a komponensek (objektumok) összetettebb struktúrában kommunikálnak, mindegyik közvetlenül küld üzeneteket a többieknek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 26 (b)

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Architektúrafajták További architektúrafajták A komponensek közötti kommunikáció történhet közvetlen kapcsolat nélkül ( anonim ), illetve egyidejűség nélkül ( aszinkron ). Component Component Component Component Event delivery Data delivery Publish Event bus Publish Shared (persistent) data space Component (a) (b) (a) Publish/subscribe modell (térben független) (b) Megosztott, perzisztens adattár (térben és időben független) Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Központosított architektúrák Egyszerű kliens szerver modell Jellemzői: egyes folyamatok szolgáltatásokat ajánlanak ki (ezek a szerverek) más folyamatok ezeket a szolgáltatásokat szeretnék használni (ezek a kliensek) a kliensek és a szerverek különböző gépeken lehetnek a kliens kérést küld (amire a szerver válaszol), így veszi igénybe a szolgáltatást Client Wait for result Request Reply Server Provide service Time Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Többrétegű architektúrák Elosztott információs rendszerek rétegelése Az elosztott információs rendszerek gyakran három logikai rétegre ( layer vagy tier ) vannak tagolva. Háromrétegű architektúra Megjelenítés (user interface): az alkalmazás felhasználói felületét alkotó komponensekből áll Üzleti logika (application): az alkalmazás működését írja le (konkrét adatok nélkül) Perzisztencia (data layer): az adatok tartós tárolása Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Többrétegű architektúrák User interface User-interface level Keyword expression Query generator Database queries Database with Web pages HTML page containing list HTML generator Ranking algorithm Ranked list of page titles Web page titles with meta-information Processing level Data level Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Többrétegű architektúrák A három rétegből néha több is egy gépen található meg. Kétrétegű architektúra: kliens/egyszerű szerver Egyrétegű architektúra: nagygépre (mainframe) kötött terminál A kétrétegű architektúra többféleképpen bonthatja fel a három réteget: Client machine User interface User interface User interface Application User interface Application User interface Application Database User interface Application Application Application Database Database Database Database Database Server machine (a) (b) (c) (d) (e) Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Decentralizált architektúrák Peer-to-peer architektúra Az utóbbi években a peer-to-peer (P2P) architektúra egyre népszerűbbé válik. A peer szó arra utal, hogy a csúcsok között (többnyire) nincsenek kitüntetett szerepűek. strukturált P2P: a csúcsok által kiadott gráfszerkezet rögzített strukturálatlan P2P: a csúcsok szomszédai véletlenszerűek hibrid P2P: néhány csúcsnak speciális szerepe van, ezek a többitől eltérő szervezésűek Overlay hálózat overlay: 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 levő kommunikáció több gépet érintve történik. A legtöbb P2P rendszer overlay hálózatra épül. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturált P2P rendszerek Alapötlet A csúcsokat valamilyen struktúra szerint overlay hálózatba szervezzük (pl. logikai gyűrű), és a csúcsoktól az azonosítójuk alapján lehet szolgáltatásokat igénybe venni. 12 13 11 14 10 15 9 0 8 1 {13,14,15} {0,1} {8,9,10,11,12} Associated data keys {5,6,7} 7 Actual node 2 3 {2,3,4} 4 5 6 Példa: elosztott hasítótábla Ebben a rendszerben kulcs-érték párokat tárolunk. Az adott értéket tároló csúcsot hatékonyan meg lehet keresni a kulcsa alapján, akármelyik csúcsra is érkezik be a kérés. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturált P2P rendszerek Példa: d dimenziós particionált tér 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. Keys associated with node at (0.6,0.7) (0,1) (1,1) (0.9,0.9) (0.9,0.9) (0.2,0.8) (0.2,0.8) Actual node (0.6,0.7) (0.9,0.6) (0.6,0.7) (0.9,0.6) (0.2,0.45) (0.2,0.3) (0.7,0.2) (0.2,0.15) (0.7,0.2) (0,0) (1,0) (a) (b) Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturálatlan P2P rendszerek Strukturálatlan P2P rendszer A strukturálatlan P2P rendszerek igyekeznek véletlen gráfstruktúrát fenntartani. Mindegyik csúcsnak csak részleges nézete van a gráfról (a teljes hálózatnak csak egy kis részét látja). Minden P csúcs időközönként kiválaszt egy szomszédos Q csúcsot P és Q információt cserél, valamint átküldik egymásnak az általuk ismert csúcsokat Megjegyzés A rendszer hibatűrését és a gráf véletlenszerűségét nagyban befolyásolja az, hogy a harmadik lépésben pontosan milyen adatok kerülnek át. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturálatlan P2P: pletykálás Aktív szál selectpeer(&b); selecttosend(&bufs); sendto(b, bufs); receivefrom(b, &bufr); selecttokeep(cache, bufr); Passzív szál receivefromany(&a, &bufr); selecttosend(&bufs); sendto(a, bufs); selecttokeep(cache, bufr); selectpeer: A részleges nézetből kiválaszt egy szomszédot. selecttosend: Az általa ismert szomszédok közül kiválaszt n darabot. selecttokeep: (1) A megkapott csúcsokat eltárolja lokálisan. (2) Eltávolítja a többszörösen szereplő csúcsokat. (3) A tárolt csúcsok számát m darabra csökkenti. Erre többfajta stratégia lehetséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturálatlan P2P: pletykálás Aktív szál selectpeer(&b); selecttosend(&bufs); sendto(b, bufs); receivefrom(b, &bufr); selecttokeep(cache, bufr); Passzív szál receivefromany(&a, &bufr); selecttosend(&bufs); sendto(a, bufs); selecttokeep(cache, bufr); selectpeer: A részleges nézetből kiválaszt egy szomszédot. selecttosend: Az általa ismert szomszédok közül kiválaszt n darabot. selecttokeep: (1) A megkapott csúcsokat eltárolja lokálisan. (2) Eltávolítja a többszörösen szereplő csúcsokat. (3) A tárolt csúcsok számát m darabra csökkenti. Erre többfajta stratégia lehetséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturálatlan P2P: pletykálás Aktív szál selectpeer(&b); selecttosend(&bufs); sendto(b, bufs); receivefrom(b, &bufr); selecttokeep(cache, bufr); Passzív szál receivefromany(&a, &bufr); selecttosend(&bufs); sendto(a, bufs); selecttokeep(cache, bufr); selectpeer: A részleges nézetből kiválaszt egy szomszédot. selecttosend: Az általa ismert szomszédok közül kiválaszt n darabot. selecttokeep: (1) A megkapott csúcsokat eltárolja lokálisan. (2) Eltávolítja a többszörösen szereplő csúcsokat. (3) A tárolt csúcsok számát m darabra csökkenti. Erre többfajta stratégia lehetséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturálatlan P2P: pletykálás Aktív szál selectpeer(&b); selecttosend(&bufs); sendto(b, bufs); receivefrom(b, &bufr); selecttokeep(cache, bufr); Passzív szál receivefromany(&a, &bufr); selecttosend(&bufs); sendto(a, bufs); selecttokeep(cache, bufr); selectpeer: A részleges nézetből kiválaszt egy szomszédot. selecttosend: Az általa ismert szomszédok közül kiválaszt n darabot. selecttokeep: (1) A megkapott csúcsokat eltárolja lokálisan. (2) Eltávolítja a többszörösen szereplő csúcsokat. (3) A tárolt csúcsok számát m darabra csökkenti. Erre többfajta stratégia lehetséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturálatlan P2P: pletykálás Aktív szál selectpeer(&b); selecttosend(&bufs); sendto(b, bufs); receivefrom(b, &bufr); selecttokeep(cache, bufr); Passzív szál receivefromany(&a, &bufr); selecttosend(&bufs); sendto(a, bufs); selecttokeep(cache, bufr); selectpeer: A részleges nézetből kiválaszt egy szomszédot. selecttosend: Az általa ismert szomszédok közül kiválaszt n darabot. selecttokeep: (1) A megkapott csúcsokat eltárolja lokálisan. (2) Eltávolítja a többszörösen szereplő csúcsokat. (3) A tárolt csúcsok számát m darabra csökkenti. Erre többfajta stratégia lehetséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturálatlan P2P: pletykálás Aktív szál selectpeer(&b); selecttosend(&bufs); sendto(b, bufs); receivefrom(b, &bufr); selecttokeep(cache, bufr); Passzív szál receivefromany(&a, &bufr); selecttosend(&bufs); sendto(a, bufs); selecttokeep(cache, bufr); selectpeer: A részleges nézetből kiválaszt egy szomszédot. selecttosend: Az általa ismert szomszédok közül kiválaszt n darabot. selecttokeep: (1) A megkapott csúcsokat eltárolja lokálisan. (2) Eltávolítja a többszörösen szereplő csúcsokat. (3) A tárolt csúcsok számát m darabra csökkenti. Erre többfajta stratégia lehetséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Strukturálatlan P2P: pletykálás Aktív szál selectpeer(&b); selecttosend(&bufs); sendto(b, bufs); receivefrom(b, &bufr); selecttokeep(cache, bufr); Passzív szál receivefromany(&a, &bufr); selecttosend(&bufs); sendto(a, bufs); selecttokeep(cache, bufr); selectpeer: A részleges nézetből kiválaszt egy szomszédot. selecttosend: Az általa ismert szomszédok közül kiválaszt n darabot. selecttokeep: (1) A megkapott csúcsokat eltárolja lokálisan. (2) Eltávolítja a többszörösen szereplő csúcsokat. (3) A tárolt csúcsok számát m darabra csökkenti. Erre többfajta stratégia lehetséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay hálózatok topológiájának kezelése Alapötlet Különböztessünk meg két réteget: (1) az alsó rétegben a csúcsoknak csak részleges nézete van; (2) a felső rétegbe csak kevés csúcs kerülhet. Az alsó réteg véletlenszerű csúcsokat ad át a felső rétegnek; a felső réteg ezek közül csak keveset tart meg. Structured overlay Protocol for specific overlay Random peer Links to topology- specific other nodes Random overlay Protocol for randomized view Links to randomly chosen other nodes Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: tórusz Tórusz overlay topológia kialakítása Ha megfelelően választjuk meg, milyen csúcsokat tartson meg a felső réteg, akkor a kezdetben véletlenszerű overlay kapcsolatok hamarosan szabályos alakba rendeződnek. Itt egy távolságfüggvény szerinti megtartó szabály hat (az overlay a közelieket veszi át), és már az első néhány lépés után jól látszik a kijövő tórusz-alakzat. Time Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Overlay topológia: példa: clusterezés Most mindegyik i csúcshoz hozzárendelünk egy GID(i) N számot, és azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén távolságfüggvényt használunk: 1 ha GID(i) = GID(j) dist(i, j) = 0 ha GID(i) 6= GID(j) Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Superpeer csúcsok Superpeer superpeer: olyan kisszámú csúcs, amelyeknek külön feladata van Néhány jellemző feladat Superpeer network Regular peer Superpeer kereséshez index fenntartása a hálózat állapotának felügyelete csúcsok közötti kapcsolatok létrehozása Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Hibrid arch.: kliens-szerver + P2P: edge szerver Példa 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 Content Delivery Network (CDN) rendszerekben jellemző, a tartalomszolgáltatás hatékonyságát növelik és költségét csökkentik. Client Content provider ISP ISP Core Internet Edge server Enterprise network Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A Hibrid arch.: kliens-szerver + P2P: BitTorrent Client node K out of N nodes Lookup(F) A BitTorrent Web page.torrent file for F List of nodes storing F Ref. to Ref. to file tracker Web server server File server Tracker Node 1 Node 2 Node N Alapötlet Miután a csúcs kiderítette, melyik másik csúcsok tartalmaznak részeket a kívánt fájlból, azokat párhuzamosan tölti le, és egyúttal önmaga is kiajánlja megosztásra. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Architektúrák és köztesréteg Probléma Előfordulhat, hogy az elosztott rendszer/alkalmazás szerkezete nem felel meg a megváltozott igényeknek. Ilyenkor legtöbbször nem kell újraírni a teljes rendszert: elegendő lehet (dinamikusan) adaptálni a köztesréteg viselkedését. Interceptor interceptor: Távoli objektum elérése során a vezérlés szokásos menetébe avatkozik bele, pl. átalakíthatja más formátumra a kérést. Jellemzően az architektúra rétegei közé illeszthető. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Interceptors Intercepted call Client application B.do_something(value) Application stub Request-level interceptor Nonintercepted call invoke(b, &do_something, value) Object middleware Message-level interceptor send([b, "do_something", value]) Local OS To object B Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Adaptív middleware Funkciók szétválasztása (separation of concerns): A szoftver különböző jellegű funkciói váljanak minél jobban külön, így azokat könnyebb egymástól függetlenül módosítani. Önvizsgálat (reflection): A program legyen képes feltárni a saját szerkezetét, és futás közben módosítani azt. Komponensalapú szervezés: Az elosztott alkalmazás legyen moduláris, a komponensei legyenek könnyen cserélhetőek. A komponensek közötti függések legyenek egyértelműek, és csak annyi legyen belőlük, amennyi feltétlenül szükséges. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Önszervező elosztott rendszerek Adaptív rendszer képességei Az egyes szoftverelemek adaptivitása kihat a rendszerre, ezért megvizsgáljuk, hogyan lehet adaptív rendszereket készíteni. Különféle elvárásaink lehetnek: Önkonfiguráció Önkezelő Öngyógyító Önoptimalizáló Ön* Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Adaptivitás visszacsatolással Visszacsatolásos modell Az ön* rendszerek sokszor az alábbi jellegű visszacsatolásos vezérléssel rendelkeznek: mérik, hogy a rendszer mennyire tér el a kívánt tulajdonságoktól, és szükség szerint változtatnak a beállításokon. Uncontrollable parameters (disturbance / noise) Initial configuration Corrections Core of distributed system Observed output +/- +/- +/- Adjustment measures Reference input Metric estimation Adjustment triggers Analysis Measured output Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 26

2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés Példa: Globule Client ISP Origin server ISP Core Internet Replica server Enterprise network Client Client Kollaboratív webes CDN, a tartalmakat költségmodell alapján helyezi el (minden szempontra: fontosság költség). A központi szerver (origin server) elemzi, ami történt, és az alapján állítja be a fontossági paramétereket, hogy mi történt volna, ha P oldalt az S edge szerver tárolta volna. A számításokat különböző stratégiákra végzi el, végül a legjobbat választja ki. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 26