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

Hasonló dokumentumok
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

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

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

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

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

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

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

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

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

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

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

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Osztott rendszerek. Krizsán Zoltán 1 Ficsór Lajos 1. Webalkalmazások fejlesztése tananyag. Miskolci Egyetem. Bevezetés A múlt - történelem A jelen

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

A SZOFTVERTECHNOLÓGIA ALAPJAI

CORBA. Mi a CORBA? A CORBA felépítése

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

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

Osztott rendszerek (Distributed

JAVA webes alkalmazások

A Java EE 5 plattform

Komponens alapú programozás Bevezetés

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

Book Template Title. Author Last Name, Author First Name

Már megismert fogalmak áttekintése

Osztott Objektumarchitektúrák

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

Osztott rendszerek, Java EE. Általános bevezető

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

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

Segédanyag: Java alkalmazások gyakorlat

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

4. rész: Java Enterprise Edition bevezetı. Bakay Árpád dr. NETvisor kft (30)

Serialization. RMI működése

Folyamatok. 6. előadás

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Segédanyag: Java alkalmazások gyakorlat

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

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

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Java. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE

A JGrid rendszer biztonsági architektúrája. Magyaródi Márk Juhász Zoltán Veszprémi Egyetem

Java RMI Áttekintés. A Java RMI. A Java RMI architektúrája. Ficsor Lajos. Általános Infromatikai Tanszék Miskolci Egyetem 1.

CO C R O B R A B OMG, ORB, CORBA

11. Elosztott állománykezelés. Operációs rendszerek. Elosztott állománykezelés. Teljesítmény növelése. Az állományokra hivatkozás. Az állományok nevei

UNIX: folyamatok kommunikációja

5. rész: A Java EE és az Enterprise Bean réteg. Bakay Árpád dr. NETvisor kft (30)

Programozási nyelvek Java

RPC Remote Procedure Call Távoli eljárás hívás

Java Business Integration szolgáltatásalapú architektúra JavaEE környezetben. Simon Géza Zsemlye Tamás

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

Junior Java Képzés. Tematika

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

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. 1. rész: Bevezetés

Elosztott rendszerek

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

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

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

CAD-CAM

SIP. Jelzés a telefóniában. Session Initiation Protocol

A TANTÁRGY ADATLAPJA

Fábián Zoltán Hálózatok elmélet

webalkalmazások fejlesztése elosztott alapon

Bevezető. Servlet alapgondolatok

Java RMI Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. javarmi / 1

Számítógépes Hálózatok. 5. gyakorlat

Java Remote Method Invocation API

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

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Interfészek. PPT 2007/2008 tavasz.

Adatkezelés. 11. előadás (Entity Beans)

JNDI - alapok. Java Naming and Directory Interface

és az instanceof operátor

QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2

Concurrency in Swing

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Enterprise Java Beans. EJB - Általános bevezető

Introduction. Szolgáltatásorientált rendszerintegráció Service-Oriented System Integration. Dr. Balázs Simon BME, IIT

R I Szer e i r alizáció.

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

SOAP komponensek Delphiben

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

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

COMPANY PROFILE SZOFI ALGORITHMIC RESEARCH KFT

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

A Java nyelv. V. rész Az objektumorientáltság magasabb fokú tulajdonságai: Perszisztencia, CORBA, RMI

Tűzfal megoldások. ComNETWORX nap, I. 30. ComNETWORX Rt.

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Számítógép hálózatok

Komponens alapú fejlesztés

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

A Java Persistence API PersistenceAPI / 3

CCS Hungary, 2000 szeptember. Handling rendszer technikai specifikáció

Bevezetés E LSŐ FEJEZET

Internet programozása. 1. előadás

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

OOP és UML Áttekintés

A MiddleWare rendszerek Rolls Roysa

EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA

Á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 10. rész: Objektumalapú elosztott rendszerek 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 / 24

Távoli elosztott objektumok Objektum: műveleteket és adatokat zár egységbe (enkapszuláció) A műveleteket metódusok implementálják, ezeket interfészekbe csoportosítjuk Az objektumokat csak az interfészükön keresztül érhetik el a kliensek Az objektumokat objektumszerverek tárolják A kliensoldali helyettes (proxy) megvalósítja az interfészt A szerveroldalon a váz (skeleton) kezeli a beérkező kéréseket Client invokes a method Client Client OS Client machine Proxy Same interface as object Skeleton invokes same method at object Server machine Server Skeleton Server OS Object State Method Interface Network Marshalled invocation is passed across network Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 24

Távoli elosztott objektumok Objektumok létrehozás ideje alapján Fordítási időben létrejövő objektumok: A helyettest és a vázat a fordítóprogram készíti el, összeszerkeszti a kliens és a szerver kódjával. Nem cserélhető le, miután létrejött, és a klienssel/szerverrel azonos a programozási nyelve. Futási időben létrejövő objektumok: Tetszőleges nyelven valósítható meg, de objektumadapterre van szükség a szerveroldalon a használatához. Objektumok élettartamuk alapján Átmeneti (tranziens) objektum: Élettartama csak addig tart, amíg be van töltve a szerverbe. Ha a szerver kilép, az objektum is megsemmisül. Tartós (perzisztens) objektum: Az objektum állapotát és kódját lemezre írjuk, így a szerver kilépése után is megmarad. Ha a szerver nem fut, az objektum passzív; amikor a szerver elindul, betöltéssel aktivizálható. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 24

Példa: Enterprise Java Beans (EJB) Az objektumokat alkalmazásszerverek (pl. GlassFish) tárolják, amelyek lehetővé teszik az objektumok különböző módokon való elérését. Container Server EJB EJBEJB Services JMS JNDI JDBC RMI Server kernel Local OS Network Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 24

Példa: Enterprise Java Beans (EJB) EJB-k fajtái Stateless session bean: Tranziens objektum, egyszer hívják meg, miután elvégezte a feladatát, megszűnik. Példa: egy SQL lekérdezés végrehajtása, és az eredmény átadása a kliensnek. Stateful session bean: Tranziens objektum, de a klienssel egy munkameneten (session) keresztül tartja a kapcsolatot, ezalatt állapotot is tart fenn. Példa: bevásárlókosár. Entity bean: Perzisztens, állapottal rendelkező objektum, amely több munkamenetet is ki tud szolgálni. Példa: olyan objektum, amely az utolsó néhány kapcsolódó kliensről tárol adatokat. Message-driven bean: Különböző fajta üzenetekre reagálni képes objektum. A publish/subscribe kommunikációs modell szerint működik. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 24

Globe elosztott objektumok Általában a távoli objektumok nem elosztottak: az állapotukat egy gép tárolja. A Globe rendszerben az objektumok fizikailag több gépen helyezkednek el: elosztott közös objektum (distributed shared object, DSO). Distributed shared object Local object Network Process Interface Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 24

Globe elosztott objektumok Az elosztottság támogatásához belső architektúra szükséges, és célszerű, ha ez független attól, hogy a DSO külső felülete milyen szolgáltatásokat nyújt. A replikációkezelő alobjektum vezérli, hogy hogyan és mikor kell a lokális szemantikus alobjektumot meghívni. Replication subobject Communication subobject Communication with other local objects Control subobject Same interface as implemented by semantics subobject Semantics subobject Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 24

Folyamatok: Objektumszerverek A rendszer részei a kiszolgálók, a vázak és az adapterek. A kiszolgálót (servant), amely az objektum működését biztosítja, több paradigma szerint lehet implementálni: Függvények gyűjteménye, amelyek adatbázistáblákat, rekordokat stb. manipulálnak (pl. C vagy COBOL nyelven) Osztályok (pl. Java vagy C++ nyelven) 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 interfész 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 Aktivációs házirend (policy) szerint aktiválja a megfelelő vázat Az adapter generálja az objektumhivatkozásokat Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 24

Folyamatok: Objektumszerverek Az objektumszerverek vezérlik a tartalmazott objektumok létrehozását. Server with three objects Server machine Object's stub (skeleton) Object adapter Object adapter Request demultiplexer Local OS Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 24

Példa: Ice Az Ice (Internet Communications Engine) objektumorientált köztesréteg, szolgáltatásai elérhetőek a legnépszerűbb nyelveken. Az aktivációs házirend megjelenik a köztesréteg szintjén: az adapter properties adattagján át lehet módosítani. Ez segíti a rendszer egyszerű kezelhetőségét. main(int argc, char* argv[]) { Ice::Communicator ic = Ice::initialize(argc, argv); Ice::ObjectAdapter adapter = ic->createobjectadapterwithendpoints("a","tcp -p 2000"); Ice::Object object = new MyObject; adapter->add(object, objectid); adapter->activate(); } ic->waitforshutdown(); Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 24

Kliens csatlakoztatása objektumhoz Objektumhivatkozás Ha egy kliens birtokol egy referenciát egy objektumra, képes hozzá csatlakozni (bind): A hivatkozás előírja, melyik szerveren, melyik objektumot, milyen kommunikációs protokoll szerint lehet rajta keresztül elérni A hivatkozáshoz kód tartozik, ezt a konkrét objektum eléréséhez felparaméterezve kapjuk a helyettest Kétfajta csatlakozás Implicit: Magán a hivatkozott objektumon hívjuk meg a műveleteket Explicit: A kliens kódjában a csatlakozás explicit megjelenik Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 24

Kliens-objektum csatlakozás: implicit/explicit // implicit Distr_object* obj_ref; obj_ref =...; obj_ref->do_something(); // explicit Distr_object* obj_ref; Local_object* obj_ptr; obj_ref =...; obj_ptr = bind(obj_ref); obj_ptr->do_something(); A hivatkozás tartalmazhat egy URL-t, ahonnan az implementáció letölthető Protokollban rögzíthető, hogyan kell betölteni és példányosítani a letöltött kódot A szerver és az objektum ismerete elegendő lehet a távoli metódushívás megkezdéséhez Objektumhivatkozások paraméterként is átadhatóak, amik RPC esetében bonyodalmakat okoznak Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 24

Távoli metódushívás (Remote Method Invocation, RMI) Tegyük fel, hogy a helyettes és a váz rendelkezésre áll a kliensnél/szervernél. 1 A kliens meghívja a helyettest 2 A helyettes becsomagolja a hívás adatait, és elküldi a szervernek 3 A szerver biztosítja, hogy a hivatkozott objektum aktív: Külön folyamatot hozhat létre, amely tárolja az objektumot Betöltheti az objektumot a szerverfolyamatba... 4 Az objektum váza kicsomagolja a kérést, és a metódus meghívódik 5 Ha paraméterként objektumhivatkozást kaptunk, ezt szintén távoli metódushívással éri el a szerver; ebben a szerver kliensként vesz részt 6 A választ hasonló úton küldjük vissza, a helyettes kicsomagolja, és visszatér vele a klienshez Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 24

RMI: Paraméterátadás Hivatkozás szerinti paraméterátadás: sokkal egyszerűbb, mint RPC esetén. A szerver egyszerűen távoli metódushívással éri el az objektumot Ha már nincsen szüksége rá, megszünteti a csatolást (unbind) Érték szerinti paraméterátadás: RMI esetén ez kevésbé kényelmes. Szerializálni kell az objektumot Az állapotát A metódusait, vagy hivatkozást olyan helyre, ahol elérhető az implementációjuk Amikor a szerver kicsomagolja az objektumot, ezzel másolat készül az eredetiről Ez az automatikus másolódás többféle problémát okoz, pl. néha túl átlátszó : könnyen több objektumról készíthetünk másolatot, mint amennyiről szeretnénk Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 24

RMI: Paraméterátadás Machine A Machine B Local reference L1 Local object O1 Remote reference R1 Remote object O2 Client code with RMI to server at C (proxy) New local reference Copy of O1 Remote invocation with L1 and R1 as parameters Machine C Copy of R1 to O2 Server code (method implementation) A rendszerszintű objektumhivatkozások általában a szerver címét, adapterének portját és az objektum lokális azonosítóját tartalmazzák. Néha ezekhez további információk is járulnak, pl. a kliens és szerver között használt protokoll (TCP, UDP, SOAP stb.) Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 24

RMI: Paraméterátadás Machine A Machine B Local reference L1 Local object O1 Remote reference R1 Remote object O2 Client code with RMI to server at C (proxy) New local reference Copy of O1 Remote invocation with L1 and R1 as parameters Machine C Copy of R1 to O2 Server code (method implementation) Mivel a helyettesnek mindenféleképpen ismernie kell a hivatkozáshoz szükséges adatokat (cím, port, lokális ID), felhasználhatjuk a helyettest magát mint távoli hivatkozást. Ez különösen előnyös, ha a helyettes letölthető (pl. a Java esetében igen). Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 24

Objektumalapú üzenetküldés A kliens az üzenetekre várás közben lehet aktív vagy passzív. 1. Call by the application 1. Call by the application Client proxy Client RTS Client proxy Client RTS Client application Callback interface Client application Polling interface 4. Call by the RTS 2. Request to server 2. Request to server 3. Response from server 4. Call by the application 3. Response from server Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 24

Objektumhivatkozások IIOP 1 : távoli objektumhivatkozásokat kezelő protokoll CORBA 2 : Objektumalapú köztesréteg, IIOP-t használ Az alábbi ábrán a CORBA objektumhivatkozásának szerkezete látható. Tagged Profile Interoperable Object Reference (IOR) Repository identifier Profile ID Profile IIOP version Host Port Object key Components Adapter identifier Object identifier Other serverspecific information 1 Internet Inter-ORB Protocol 2 Common Object Request Broker Architecture Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 24

Objektumhivatkozások Különböző objektumkezelő rendszerekben a hivatkozások szerkezete nagymértékben eltérhet. A rendszerek között átjárók (gateway) biztosíthatják a hivatkozások konvertálását. Object server Interoperable references (Half) gateway Object system A Object system B Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 24

Replikáció és konzisztencia Az objektumok a belépő konzisztencia megvalósításának természetesen adódó eszközei: Az adatok egységbe vannak zárva, és szinkronizációs változóval (zárral) védjük őket A szinkronizációs változókat soros konzisztencia szerint érjük el (az értékek beállítása atomi lépés) Az adatokat kezelő műveletek összessége pont az objektum interfésze lesz Replikáció Mit tegyünk, ha az objektumot replikálni kell? A replikált objektumokon a műveletek végrehajtásának sorrendjének azonosnak kell lennie. Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 24

Replikált objektumok Nemcsak a kéréseknek kell sorrendben beérkezniük a replikátumokhoz; a vonatkozó szálak ütemezésének determinisztikusnak kell lennie. Egyszerű megoldás lehetne, ha teljesen sorosítva (egyetlen szálon) hajtanánk végre a kéréseket, de ez túl költséges. Computer 1 Computer 2 Object Thread scheduler T 1 Deterministic 1 T 1 2 T 2 1 T 2 2 Threads thread scheduling Threads Middleware Totally ordered requests Middleware Local OS Local OS Unordered requests Unordered requests Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 24

Replikált hívások Aktív replikáció: ha a replikált objektum hívás során maga is meghív más objektumot, az a kérést többszörörözve kapná meg. Client replicates invocation request B1 Object receives the same invocation three times A B2 C All replicas see the same invocation B3 Replicated object Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 24

Replikált hívások Megoldás: mind a szerver-, mind a kliensobjektumon válasszunk koordinátort, és csak a koordinátorok küldhessenek kéréseket és válaszokat. Coordinator of object B Coordinator of object C Client replicates invocation request B1 Result B1 C1 C1 A B2 A B2 C2 C2 B3 B3 Result (a) (b) Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 24