Osztott rendszerek (Distributed systems) Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 09. 18. osztottrendszerek / 1 Tartalom Miért kellenek osztott rendszerek Egy kis történelem Software architektúrák Osztott alkalmazások fejlesztése A midleware koncepció Nem objektum orientált midlewere-ek Objektum orientált midleware-ek Osztott rendszerek (Bevezetés) osztottrendszerek / 2 Miért kellenek osztott rendszerek? Feladatok elosztása A számítási teljesítmény növelése Adatok (kódok) elosztása Desktop gépek használata duplikált (és inkonzisztens) adatok nélkül A rendszer funkcionalitásának elosztása Komponensek Internet alapú alkalmazások Osztott rendszerek (Bevezetés) osztottrendszerek / 3
Történelem - a kezdetek Mainframe-ek és terminálok Minden a központi gépen fut A terminál csak egy periféria Minden a központi gépen múlik Csak osztott használat! Osztott rendszerek (Bevezetés) osztottrendszerek / 4 Történelem - a következk vetkező lépés Klasszikus kliens/szerver architektúra Az adatok kezelése a szerver feladata Az alkalmazás logikájából adódó feladatok megoszlanak a kliens és a szerver között A felhasználói felület kezelése a kliens dolga Osztott rendszerek (Bevezetés) osztottrendszerek / 5 (Majdnem) törtt rténelem: többrt bbrészes kliens/ szerver architektúra ra Multi-tier architecture Egy alkalmazás több részből állhat Tipikus: három rész Felhasználói interface Üzleti logika Adatbázis kezelés Osztott rendszerek (Bevezetés) osztottrendszerek / 6
A jelen: valódi osztott rendszer Többrészes (multi-tier) architectúra Objektum orientált, komponens alapú megközelítés (object-oriented, component based approach) További szolgáltatások directory services tranzakció monitor rugalmasság újrahasznosítható komponensek Egy komponens egyszerre lehet kliens és szerver internet - alapú alkalmazások Osztott rendszerek (Bevezetés) osztottrendszerek / 7 A middleware koncepció Általános, alkalmazás független szolgáltatások Lehetővé teszi a felhasználó és az alkalmazás kommunikációját a hálózaton keresztül A hálózati és az alkalmazói program között helyezkedik el Network services Applications MIDDLEWARE Local services Operating system and hardware Osztott rendszerek (Bevezetés) osztottrendszerek / 8 Alkalmazás s modellek Computing models Terminal-host models Distributed Computing Model File transfer model Client/Server model Peer-to-Peer model Osztott rendszerek (Bevezetés) osztottrendszerek / 9
Alapvető kliens/szerver middleware-ek ek Sockets Socket s Osztott rendszerek (Bevezetés) osztottrendszerek / 10 A middleware-ek ek osztályoz lyozása 1. Egy szabvány nem elég, mert a különböző jellegű alkalmazások kommunikációs igénye eltérő A middleware-eket osztályozhatjuk abból a szempontból, hogy milyen más, ismert mechanizmus kiterjesztéseként tekintik a modulok közötti kommunikációt. (Milyen metaforát használnak.) A legalacsonyabb szintű middleware a socket mechanizmus. Osztott rendszerek (Bevezetés) osztottrendszerek / 11 A middleware-ek ek osztályoz lyozása 2. A kommunikáció metafórája File-kezelés Távoli eljáráshívás Adatbázis lekérdezés Üzenet küldés Távoli metódushívás Middleware-ek Socket RPC, DCE RPC, XML RPC, SOAP RDA MOM CORBA, Java RMI, Microsoft DCOM Osztott rendszerek (Bevezetés) osztottrendszerek / 12
Socket mechanizmus A metafora a file kezelés Valójában egy API a TCP/IP protokoll verem szolgáltatásaihoz (TCP és UDP) Alkalmas nagyon speciális alkalmazásokhoz (Mindent megtehetek) (I can do everything) Nem alkalmas nagy, bonyolult rendszerek fejlesztésére (Mindent nekem kell megcsinálnom) (I must do everything) Osztott rendszerek (Bevezetés) osztottrendszerek / 13 Socket mechanizmus (folyt.) Valójában egy csatornára byte-sorozat tehető ki ("write") és onnan byte sorozat olvasható be ("read"). Nem biztosított, hogy a csatornára kitett információt valaki el is olvassa => valamilyen protokollal össze kell hangolni a kommunikáló feleket. Gyakorlatilag minden plattformra és programozási nyelvhez van implementációja. Osztott rendszerek (Bevezetés) osztottrendszerek / 14 Socket mechanizmus (folyt.) A kommunikáló felek futhatnak különböző plattformokon és készülhetnek különböző programozási nyelveken. Számos magasabb szintű middleware implementációs eszköze. Osztott rendszerek (Bevezetés) osztottrendszerek / 15
Távoli eljárásh shívás s (RPC) RPC: Remote Procedude Call Teljesen homogén rendszereken futó alkalmazások közötti komunikációra lett tervezve: azonos processzor UNIX operációs rendszer C-ben írt programok Ma már közvetlenül ritkán használt middleware, de egy alapötlet, ami a korszerűbb middleware-ek is alkalmaznak, már itt megjelenik. Osztott rendszerek (Bevezetés) osztottrendszerek / 16 Távoli eljárásh Osztott rendszerek (Bevezetés) osztottrendszerek / 17 Távoli eljárásh 1. A kliens meghívja a csonkeljárást (stub), ami lokális függvénynek látszik. A stub a paramétereket a hálózaton átvihető csomagokba pakolja és meghatározza a szerver címét 2. Az üzenet átvitelre kerül a hálózati átviteli szolgáltatáson (network transport service) keresztül 3. Az üzenet átvitelre kerül a hálózaton és a szerver gép hálózati rétege fogadja Osztott rendszerek (Bevezetés) osztottrendszerek / 18
Távoli eljárásh 4. A hálózati szolgáltatás értesíti a szerver csonkot hogy egy kérés érkezett 5. A szerver csonk fogadja az üzenetet, lefordítja a lokális eljáráshívás formátumára és meghívja az eljárást 6. A szerver végrehajtja az eljárást és visszaadja az eredményt a csonknak 7. A csonk a választ átalakítja hálózati üzenetté és elküldi a hálózati rétegnek Osztott rendszerek (Bevezetés) osztottrendszerek / 19 Távoli eljárásh 8. A szerver hálózati rétege visszaküldi a választ a kliens hálózati rétegének 9. A kliens hálózati rétege elküldi a választ a kliens csonknak 10. A kliens csonk fogadja a választ, átalakítja eljárás visszatérési értékének és átadja a kliensnek Osztott rendszerek (Bevezetés) osztottrendszerek / 20 Távoli eljárásh Megjegyzések: A csonkeljárások automatikusan generálhatók A paraméterek érték szerint adódnak át (különböző címterek!) Kötés (binding) problémája: hogyan található meg a szervert futtató gép, és a szerver program a gépen belül Az adatábrázolási módok különbözőek lehetnek A kliens és a szerver gép egymástól függetlenül összeomolhat A kliens általában lockolódik és vár a válaszra Osztott rendszerek (Bevezetés) osztottrendszerek / 21
Távoli eljárásh Hasznos ötletek: kliens oldali csonk (stub) egy funkcionális interface-t mutat a kliens programnak, de valójában a funkciókat egy middleware szolgáltatásait igénybe véve mással (egy remote szolgáltatóval) végezteti el. Kommunikál a szerver oldali csonkkal. Osztott rendszerek (Bevezetés) osztottrendszerek / 22 Távoli eljárásh Szerver oldali csonk kéréseket fogad, aktivizálja a remote szolgáltatót, és átveszi tőle az eredményeket. A kliens oldali stub-al kommunikál. Szokásos elnevezése még: skeleton, proxy Remote szolgáltató Funkcionális interface-e egyezik a kliens stub-éval, és ténylegesen implementálja is azt. Önmagában nem futásképes elem, a szerver oldali stub aktivizálja. Osztott rendszerek (Bevezetés) osztottrendszerek / 23 Distributed Computing Environment (DCE) Open Software Foundation (OSF): célja a UNIX rendszerek közötti együttműködés biztosítása DCE: nyílt szabvány az osztott alkalmazásokhoz DCE: implementáció, nem specifikáció. A legfontosabb korlátozás: az adatbázis műveletek gyenge támogatása Sohasem nyert széleskörű támogatást, de bizonyos elemei beépültek a CORBA-ba és a DCOM-ba (IDL, marshalling) Osztott rendszerek (Bevezetés) osztottrendszerek / 24
A DCE architektúrája S ec u ri t y Applications Diskless Support Future Disk. Serv. Distributed File Services Distributed Time Services Directory Services RPC Threads Future Basic Services M an a g e m e n t Operating Systems and Transport Services Osztott rendszerek (Bevezetés) osztottrendszerek / 25 DCE RPC A megjelenítési szolgáltatás (Presentation service) elrejti a belső adatábrázolás különbözőségét Hálózat és protokoll független Biztonságos RPC kommunikáció Autentikáció Integritás Megszemélyesítés (privacy) Szerver azonosítás név szerint Tetszőleges argumentum méret Osztott rendszerek (Bevezetés) osztottrendszerek / 26 XML RPC A klaszikus RPC "újraélesztése" Távoli eljáráshívást valósít meg, de az "eljárás" tetszőleges szolgáltató egység lehet, ami implementálja az adott interface-t. A hagyományos RPC-vel ellentétben HTTP protokoll felett zajlik a kommunikáció. Az adatokat a hagyományos RPC-vel ellentétben XML formátumban küldi át a hálózaton. Miután szabványos, platform és implementációs eszköz független. Osztott rendszerek (Bevezetés) osztottrendszerek / 27
XML RPC (folyt.) Az XML RPC HTTP POST metódus segítségével XML-be kódolt kérést küld a szervernek. A szerver elemzi a kérést, meghívja a megfelelő metódust, a választ pedig XML-be kódolva visszaküldi. A kliens kikódolja a választ. Az XML RPC támogatja az "ésszerű" adatformátumokat (int, double, string, bináris adathalmaz, struktúra, tömb, egyebek) Osztott rendszerek (Bevezetés) osztottrendszerek / 28 SOAP Simple Object Access Protocol UserLand, Developmentor és Microsoft együttműködés terméke Jelenleg a W3C felügyeli ezt a szabványt Jóval összetettebb, mint az XML RPC Komplex adatstruktúrák támogatása Az XML namespacek használata globálisan egyértelművé teszi az átvitt adatot Osztott rendszerek (Bevezetés) osztottrendszerek / 29 Előny nyök és s hátrh trányok Az XML RPC és a SOAP nagy előnye, hogy könnyen átmegy a tűzfalakon Az XML RPC és a SOAP nagy hátránya, hogy könnyen átmegy a tűzfalakon Jóval nagyobb erőforrás igényűek, mint a hagyományos RPC Osztott rendszerek (Bevezetés) osztottrendszerek / 30
Távoli adatelérés (RDA) A kliens kiad egy SQL hívást a kliens middlewarenek Az üzenet átmegy a hálózaton keresztül a szerverig A szerver middleware-e meghívja az adatbázis szervert Az adatbázis szerver végrehajtja a lekérdezést és visszaküldi az eredményt a szerver middlewareének A szerver middleware átalakítja az eredményt hálózati üzenetté és elküldi a kliensnek a hálózaton keresztül A kliens middleware fogadja az üzenetet, átalakítja és átadja az eredményt a kliensnek Osztott rendszerek (Bevezetés) osztottrendszerek / 31 Üzenet-orientált middleware (MOM) Osztott rendszerek (Bevezetés) osztottrendszerek / 32 A MOM tulajdonságai Lehetővé teszi az aszinkron kommunikációt Alkalmas mobil (vezeték nélküli) kommunikációra A szerver hibája nem állítja meg a klienst Alkalmas nagyon nagy várakozó sorok kezelésére is Korlát: a várokozó sorok írásának/olvasásának többletterhelése Osztott rendszerek (Bevezetés) osztottrendszerek / 33