INTELLIGENS HIBADETEKTÁLÁS ÉS KEZELÉS LEHETŐSÉGE JAVA ALAPÚ GRID RENDSZEREKBEN

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

JAVA webes alkalmazások

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

Elosztott rendszer architektúrák

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

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

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

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

P-GRADE fejlesztőkörnyezet és Jini alapú GRID integrálása PVM programok végrehajtásához. Rendszerterv. Sipos Gergely

A Java EE 5 plattform

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

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

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

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

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

Microsoft SQL Server telepítése

alkalmazásfejlesztő környezete

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

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Már megismert fogalmak áttekintése

Szolgáltatási szint megállapodás

ISA szimulátor objektum-orientált modell (C++)

30 MB INFORMATIKAI PROJEKTELLENŐR

UML (Unified Modelling Language)

OOP. Alapelvek Elek Tibor

Rőczei Gábor Szeged, Networkshop

KÖFOP VEKOP A jó kormányzást megalapozó közszolgálat-fejlesztés

Történet John Little (1970) (Management Science cikk)

Sharpdesk Információs útmutató

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Java programozási nyelv 9. rész Kivételkezelés

Serialization. RMI működése

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

API tervezése mobil környezetbe. gyakorlat

WEB2GRID: Desktop Grid a Web 2.0 szolgálatában

Java I. A Java programozási nyelv

Utolsó módosítás:

Java I. A Java programozási nyelv

Concurrency in Swing

A Jövő Internet Nemzeti Kutatási Program bemutatása

Teljes vírusirtás a NOD32 Antivirus System segítségével. vírusirtási útmutató

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

Valós idejű kiberfizikai rendszerek 5G infrastruktúrában

UNIX: folyamatok kommunikációja

Networkshop Kaposvár Balaskó Á., Kozlovszky M., Karóczkai K., Márton I., Kacsuk P. MTA SZTAKI

Norway Grants. Az akkumulátor mikromenedzsment szabályozás - BMMR - fejlesztés technológiai és műszaki újdonságai. Kakuk Zoltán, Vision 95 Kft.

Enabling Grids for E-sciencE. Grid bevezető INFSO-RI

Folyamatok. 6. előadás

Példa: LHC, CERN, Genf Enabling Grids for E-sciencE

Komponens alapú programozás Bevezetés

Végfelhasználói Applet kézikönyv

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Szoftver-technológia I.

Objektum orientált programozás Bevezetés

Utolsó módosítás:

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

A cloud szolgáltatási modell a közigazgatásban

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Objektumorientált paradigma és programfejlesztés Bevezető

Objektumorientált paradigma és a programfejlesztés

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

Digitális aláíró program telepítése az ERA rendszeren

Szolgáltatásintegráció (VIMIM234) tárgy bevezető

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

Hálózati operációs rendszerek II. Novell Netware 5.1 Hálózati nyomtatás

S01-8 Komponens alapú szoftverfejlesztés 2

Komponens alapú fejlesztés

VIRTUALIZÁCIÓS TECHNOLÓGIÁK EUCALYPTUS CLOUD PLATFORM

Modell alapú tesztelés mobil környezetben

Informatikai technológiák szakirány Rendszertervezés ágazat

A ClusterGrid bróker rendszere. Stefán Péter Szalai Ferenc Vitéz Gábor

Szolgáltatás Orientált Architektúra a MAVIR-nál

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

1. Bevezető. 2. Sérülékenységek

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

S01-7 Komponens alapú szoftverfejlesztés 1

Segédanyag: Java alkalmazások gyakorlat

Nyilvántartási Rendszer

Grid menedzsment megoldás az ARC köztesrétegben

Rekurzió. Dr. Iványi Péter

Operációs rendszerek Folyamatok 1.1

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

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

Felhő rendszerek és felhő föderációk. Kacsuk Péter MTA SZTAKI

XCZ állományok ellenőrzése, átadása elektronikus beküldésre és közvetlen beküldése parancssori funkcióval az ÁNYK programban

HÁLÓZATBIZTONSÁG III. rész

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

Mobil szolgáltatások és alkalmazások fejlesztése

K&H token tanúsítvány megújítás

OZW V7.0 firmware frissítés, Remote Tool Access részletes ismertető

Szoftver újrafelhasználás

Számítógép architektúra

Verifikáció és validáció Általános bevezető

Hely- és kontextusfüggő alkalmazások fejlesztését támogató keretrendszer mobil környezetben

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Web-fejlesztés NGM_IN002_1

Miért is transzformáljunk modelleket? Varró Dániel

IoT rendszerfelügyelet

Párhuzamos és Grid rendszerek

Átírás:

INTELLIGENS HIBADETEKTÁLÁS ÉS KEZELÉS LEHETŐSÉGE JAVA ALAPÚ GRID RENDSZEREKBEN Pásztory Ákos, pasztory@irt.vein.hu Juhász Zoltán juhasz@irt.vein.hu Veszprémi Egyetem, Információs Rendszerek Tanszék Absztrakt: A cikk célja bemutatni, hogy egy Java alapú -orientált környezetben hogyan használhatók fel a kivételek a rendszer hibatűrőbbé tételére. A módszer a gondosan tervezett kivételek láncának elemzésén és a megfelelő cselekvés kiválasztásán alapul. A módszert a JGrid rendszer számítási án demonstráljuk, úgy hogy az azt használó kliensek számára látszólag hibamentessé tegyük. 1 Bevezető A számítási grid rendszerek távoli okból állnak, így bármikor előfordulhat, hogy hálózati vagy erőforrás hiba miatt a nem elérhető vagy a végrehajtás megszakad. A hagyományos batch feldolgozást támogató gridekben nem garantált, hogy a feladat beküldése után azonnal le fog futni, így a futásidejű hibákról is csak később kapunk értesítést. Nagyobb probléma, hogy a visszajelzés módja nem alkalmas automatikus feldolgozásra, és hibatűrés elérésére. Egy Java alapú, orientált grid infrastruktúrában (mint például a Veszprémi Egyetemen fejlesztett JGrid [6]) minden egyes t egy-egy Java interfész ír le. A okat távoli ok segítségével érjük el, miáltal a végrehajtás közben keletkező hibákról a hívó azonnal értesítést kap Java Exception objektumok formájában. A következőkben megpróbáljuk bemutatni, hogy -specifikus illetve Java kivételek segítségével és azok megfelelően intelligens kezelésével hogyan lehet egy számítási gridet a felhasználók (és kliensprogramok) számára látszólag hibamentessé tenni. A 3. fejezetben módszert adunk arra, hogy a kivételek elemzése révén a kliens program dinamikusan új okat keressen, és a feladatot azon futtassa tovább. A 4. fejezetben megvizsgálunk több alternatív megvalósítást, melyben az elemzésdöntés a kliens program feladata, illetve ez transzparensen a proxyban valósul meg, vagy pedig egy harmadik félnek delegálódik. 2 Hibák és detektálásuk Az elosztott rendszerek egyik meghatározó jellemzője a részleges meghibásodás lehetősége. Akkor beszélhetünk ilyenről, ha az elosztott rendszernek csupán egyes összetevői válnak működésképtelenné, ami befolyásolhatja a többi komponens működését, míg más részeit egyáltalán nem érinti. A hibatűrő elosztott rendszerek tervezésének fontos szempontja, hogy a rendszernek az észlelt meghibásodásokat automatikusan javítania kell a teljesítmény számottevő csökkenése nélkül. Ahhoz, hogy ezt elérhessük, az első lépés a hiba detektálása. A részleges meghibásodásnak többféle oka lehet. A legnyilvánvalóbb, és leggyakrabban előforduló a hálózat meghibásodása miatti kommunikációs hiba. Előfordulhat, hogy a távoli komponens leállt, vagy teljesítménybeli problémái vannak (túl van terhelve, ezért lassú a válasz). De lehet, hogy csak egyszerűen hibás eredményt küld aminek a detektálása túlmutat ezen a cikken. A teljesítménybeli

hibák is gyakran kommunikációs hibaként (időtúllépés) jelentkeznek, így a továbbiakban erre koncentrálunk. Fontos megemlíteni, hogy egy elosztott rendszert nem lehet többek közt a részleges meghibásodás lehetősége miatt lokálisként kezelni, figyelmen kívül hagyva a különbségeket [2]. Ez a megközelítés csak kisszámú, központilag adminisztrált számítógép esetén működőképes és nem skálázható. Nem szabad tehát elrejteni a hibákat az implementációban, hanem meg kell őket jeleníteni interfész szinten is. Ez az interfész-implementáció szétválasztás a -orientált technológiák alapja. Különböző környezetekben más és más módon jelennek meg a hibák. A hagyományos, kötegelt feldolgozást támogató rendszerek körében elég korlátozottak a lehetőségek: leggyakrabban e-mail-ben értesül a felhasználó a hibákról, vagy kimeneti fájlokból szerezhet több információt. Közös jellemzőjük ezeknek a módszereknek, hogy emberi beavatkozást igényelnek, nehezen automatizálhatóak, így nehezebb a hibatűrés megvalósítása. Java környezetben a távoli objektumok eléréséhez használhatjuk a távoli t (RMI), és ennek különböző implementációit [3]. Ekkor segítségünkre lehet a nyelv kivétel-mechanizmusa, amivel a program normál futását megzavaró események jelezhetők. Hangsúlyozandó, hogy egy Exception teljes értékű objektum, ami a hiba tényén kívül egyéb adatokat is tartalmazhat ezt a későbbiekben ki is használjuk. Az Java 1.4-es verziója bevezette a kivételek láncolását, minek következtében egy továbbdobott kivétel tartalmazhatja az őt okozó kivételt, így egy magasabb absztrakciós szinten is hozzáférhetünk a hiba pontos okához. Távoli esetén a hibákat a RemoteException és alosztályai jelzik, például a távoli oldalon futó metódus által dobott kivétel egy ServerException-be csomagolva érkezik meg a hívó oldalra. Fontos, hogy definiáljunk -specifikus kivételeket is, amelyek lefedik a felmerülő alkalmazás-függő hibalehetőségeket. 3 Kivételek elemzése Célunk egy minél inkább autonóm, hibatűrő rendszer modelljének megalkotása, mely lehetővé teszi, hogy egy kiesése esetén (részleges hiba) a rendszer automatikusan keressen egy másik, ugyanolyan funkcionalitású t. Egy hasonló elvet követő autonóm rendszer modelljének vázlata látható az 1. ábrán [1]. A vázolt megoldás a dobott kivételeket naplózza, majd ezeket egy analizáló feldolgozza és végrehajtja a megfelelő korrigáló műveletet. Az ehhez szükséges konfigurációt az adott telepítésre érvényes házirendből veszi. Korrigáló akció: nincs elég memória Naplófájl monitorozás Analizáló Korrigáló akció: osztály nem található Korrigáló akció: fájl nem található Házirend a korrigációkhoz 1. ábra Autonóm, öngyógyító rendszer

A mi módszerünk alapját a Jini technológia szolgáltatja. Számos olyan tulajdonsága van, ami segít hibatűrő elosztott rendszereket létrehozni: robosztus felfedezés, a proxy paradigma alkalmazása, bérlet alapú erőforrás-lefoglalás, elosztott tranzakciók és események támogatása [4]. A modell logikai felépítésének vázlata a 2. ábrán látható. Működés közben a távoli során fellépő hibák a hibakezelő hoz kerülnek, mely eldönti, hogy az adott hiba esetén hogyan avatkozzon be a rendszer működésébe. A többféle alternatíva közül választhat. Értesíti a hívót. Ezt vagy az eredeti vagy egy újabb, magasabb absztrakciós szintű kivételbe csomagolt kivétellel jelzi. Megismétli a sikertelen metódus hívást, amennyiben a kivétellánc elemzése alapján ezt indokoltnak tartja (pl. időtúllépés esetén, mivel lehet, hogy csak ideiglenes a probléma, és érdemes újra próbálkozni). A Jini kereső segítségével felfedez egy a meghibásodottal megegyező t, és azon meghívja a korábbi sikertelen távoli metódust. Ez alapértelmezésben csak állapot nélküli oknál használható, és csak idempotens metódusoknál biztonságos, egyéb esetben szükség van a ok állapotának szinkronizálására. Megpróbálja lokálisan kiszolgálni a kliens hívást. Itt jelent nagy segítséget a Jini proxy-ra épülő programozási modellje: lehetséges olyan okos proxy-k létrehozása, amelyek képesek lehetnek (esetleg csökkentett funkcionalitással) végrehajtani a feladatát, így azt helyettesíteni. Kezdeményező kliens 1. Szolgáltatás hívás 2. Hibaüzenet (Exception) Szolgáltatás 3. Értesítés (opcionális) 5. Szolgáltatás hívás Szolgáltatás 4. Helyettesítő keresése 2. ábra A hibakezelés modellje Az állapottal rendelkező ok esetében kooperáció szükséges a ok oldalán is. Egy lehetséges mód erre, ha a az állapotát egy elosztott JavaSpaces-be menti, ahonnan meghibásodás esetén a helyettes inicializálni tudja saját állapotát. Hasonló elvet követ a HACore keretrendszer is [8]. 4 Megvalósítás A fenti modell többféleképpen is implementálható, attól függően, hogy a hibakezelő hol helyezkedi el a rendszerben, és mekkora a döntési jogköre. A példák során a JGrid számítási át (Compute Service) használjuk fel [7]. A Compute Service feladata JGrid Task objektumok végrehajtása, futtatása.

A legegyszerűbb implementációs módszer az, amikor minden keletkező kivételt továbbadunk a kliens programnak, a hibakezelő által esetleg hozzáadott plusz információkkal. Ez igényli a legtöbb munkát a kliens (programozó) részéről, de egyben ez nyújtja a legnagyobb szabadságot is. Egy másik megoldás a 3. ábrán látható intelligens -proxy. Ebben az esetben a hibakezelő a által nyújtott proxyba helyezzük, ami a kliens oldalról nézve transzparensen végzi a működését. Az autonomitás foka változtatható; például lehetséges, hogy a proxy megpróbálja a számítási feladatot lefuttatni egy másik on, de ha ez többször sikertelen, akkor jelez a kliensnek, vagy akár megpróbálkozhat a feladat lokális lefuttatatásával is. A módszer előnye, az elegancián kívül, hogy általában a tudja a legjobban, hogy mely kivételeknél érdemes újra próbálkozni, illetve melyek a legmegfelelőbb korrigáló akciók. Mivel a proxy a része, a beágyazott hibakezelő is a é. Kliens Kliens kód 1. lokális proxy 2. távoli 4. megismételt 5. visszatérési érték 3. új felfedezése 3. ábra Hibakezelés a proxyban A következő lehetséges implementációs megoldásban egy bróker t (például a JGridben a ClusterManager) használunk (4. ábra). A bróker a számítási sal azonos interfésszel rendelkezik, ezért a kliens programot nem kell megváltoztatni. A bróker egy számítási okból álló klasztert felügyel, és a beküldött feladatokat köztük osztja szét, továbbá sikertelen végrehajtás esetén megpróbálja a feladatot egy másik on elindítani. A kliensek számára ez a a mószer nyújta a legmegbízhatóbb végrehajtási környezetet, mivel a bróker ismert, a saját adminisztrációs körébe tartozó ok halmazát felügyeli.

Kliens Kliens kód 1. lokális Bróker proxy 2. delegáció ClusterManager 3. távoli 5. megismételt 6. visszatérési érték 4. új felfedezése 5 Összefoglalás 4. ábra Harmadik félnek delegált hibakezelés A -orientált elosztott rendszerek széleskörű elterjedéséhez szükséges az, hogy a létrehozott rendszerek megfelelő hibatűréssel rendelkezzenek, megbízhatóak legyenek. A cikkben bemutattunk egy intelligens módszert a Java alapú elosztott rendszerekben történő hibák kezelésére, és a rendszer hibatűrőbbé tételére. A felvázolt modell az első lépésnek tekinthető a megoldás felé vezető úton. Gyakorlati alkalmazhatóságát a JGrid rendszerben fogjuk megvizsgálni, ellenőrizni. Ehhez már folyamatban vannak a megfelelő fejlesztések. Irodalom [1] IBM corporation (2003). Model for self-managing Java servers. http://www-106.ibm.com/developerworks/library/ac-alltimeserver/ [2] KENDALL, S. C. and WALDO, J. and WOLLRATH, A. and WYANT, G. (1994). A note on distributed computing. http://research.sun.com/techrep/1994/smli_tr-94-29.pdf [3] Sun Microsystems. Java Remote Method Invocation Specification http://java.sun.com/j2se/1.5/pdf/rmi-spec-1.5.0.pdf [4] Sun Microsystems. Jini Technology Core Platform Specification http://www.sun.com/software/jini/specs/core2_0.pdf [5] TANENBAUM, A. S. and M. van STEEN. (2004). Elosztott rendszerek: Alapelvek és paradigmák. Panem [6] JGrid. http://pds.irt.vein.hu/en/jgrid/about [7] Szabolcs Pota, Gergely Sipos, Zoltan Juhasz and Peter Kacsuk. Parallel Program Execution Support in the JGrid System. Distributed and Parallel Systems: Cluster and Grid Computing, Kluwer International Series in Engineering and Computer Science, Vol. 777 (DAPSYS 2004), Budapest, Hungary, pp. 13-20. [8] HACore. http://stephane.coutant.chez-alice.fr/hacore/en/hacore.html