• Nem Talált Eredményt

Köztesréteg példák

In document Programrendszerek fejlesztése (Pldal 33-36)

I. RÉSZ BEVEZETŐ

5. Köztesréteg

5.5. Köztesréteg példák

Az előző fejezetekben felsorolt paradigmákohoz illeszkedő azokat megvalósító, legismer-tebb köztesrétegeket tekintjük át ebben a fejezetben. A JEE-vel kapcsolatos köztesréte-gekkel és az ESB-vel később jóval részletesebben is megismerkedünk.

5.5.1. JGroups

A JGroups egy klasszikus csoportkommunikációs köztesréteg megvalósítás, amely kihasz-nálva a hálózat képességeit is (pl.: multicast) különböző képességű csoportkommunikációs megoldásokat biztosít. A JGroups képezi a JBoss EJB és JBoss Web tároló klasztere-zésének alapját is. Alapvetően a csoportok kezelését biztosítja, de a csoportkommunikációt alkotó üzenetkezelésnél számos megbízhatósági szintet tud megvalósítani (Atomi, FIFO, Kauzális, Teljes Sorrend). Ezt TCP/UDP mellett JMS igénybevételével is biztosítani tudja.

Alapvető elemei a csatorna és a csatorna alatt lévő protokoll halmaz. Egy-egy csatorna je-lenti azt a virtuális médiumot amelyen keresztül a sima kommunikáción túl olyan absztrakt elosztott az alatta lévő protokollok által biztosított szolgáltatások is elérhetőek mint az elosztott zárolás, többségi szavazás… Ezekkel mint már írtuk a programozó ritkán talál-kozik mert elfedi ezt például az elosztott objektum gyorstár (pl.: Infinity) vagy az elosztott objektum címtár (pl.: JNDI).

5.5.2. JEE Web Tároló

A Web Tároló (Web Container) a JEE által specifikált legnépszerűbb tároló, nem véletlen, hogy a GWT is ezt ajánlja mint futtató környezetet. Alapvetően egy futtatási környezetet biztosít a http kérések lekezelésére. Ezen felül bizonyos mértékig lekezeli a párhuzamos-sággal kapcsolatos problémákat az adatbázis rétegre támaszkodva. Amiért köztesrétegként itt szerepel az az, hogy van klaszter szolgáltatása is amelyben például a viszony

kon-textusban tárolt adatokat konzisztens módon egy vagy több helyre replikálja lehetővé téve ezzel a robosztus rendszerek kialakítását. Mint már írtuk e szolgáltatás mögött a JGroups áll (a JBoss megvalósítás esetén, más megvalósítás pl.: IBM WebSphere más csoportkommu-nikációs megvalósítást használ)

5.5.3. JEE EJB Tároló

Az EJB tároló értelmét gyakran megkérdőjelezik megemlítve azt, hogy elegendő a Web tároló is a szolgáltatás réteg (vagy üzleti logika) megvalósítására. Ez egyszerű alkalmazás esetén lehet, hogy így van de olyan komplexebb alkalmazásnál ahol a tranzakciók több adatbázis kapcsolaton is túlnyúlnak és nem adatbázis hanem Java kód szinten kellene ezeket végrehajtani az EJB konténer kikerülhetetlen. Hasonló a biztonság is: amikor részle-tes esetleg metódus szintű jogosultságkezelést szeretnénk akkor szintén az EJB tárolót cél-szerű használnunk. A különböző babok által biztosított absztrakciók, amelyekkel szinkron vagy aszinkron kommunikációt tudunk megvalósítani ismét az EJB-t igényelnek. Amennyi-ben komponens orientált fejlesztést szeretnénk ismét az EJB konténer adja meg hozzá a megfelelő kereteket (komponensek definiálása, monitorozása, menedzselése, …). A web konténerhez hasonlóan itt is tudunk klaszterezni, de ezen túl támogatva van az üzenet orientált, objektum és távoli eljárás köztesréteg paradigmák megvalósítása is.

5.5.4. Google AppEngine

A share nothing (csak adatbázis szinten van szinkronizácó) elvét követve autonóm elemekből építkezik (amit már láttunk a tér alapú architektúrában a PU – Processing Unit absztrakciót), ahol a konzisztencia, állapotok szinkronizációja a Bigtable feladata amely a CAP kritériumok BASE permutációját valósítja meg, azaz partíciótűrő és magas rendel-kezésre állású a konziszetnica rövid távú kárára. Maga a már említett feldolgozó egység (processing unit) a web konténer által definiált futtató környezetre építhet, ez alatt pedig a Java virtuális gépre. Egy-egy ilyen web alkalmazás képezi a terheléselosztás alapját. A Google köztesréteg ezen web alkalmazásokat helyezi el annyi virtuális gépre amennyi szükséges. Ezen web alkalmazások között a konzisztenciát a felhő adattár Google imple-mentációja a BigTable valósítja meg.

5.5.5. ESB

Az előzőekben látott köztesrétegek alapvetően az alkalmazások kiszolgálásra lettek megter-vezve. Az ESB és az SCA alkalmazás rendszerek kiszolgálását valósítják meg. Az ESB – Vállalati Szolgáltatás Busz (Enterprise Service Bus -ESB) mint ahogy a nevében is benne van egy busz absztrakciós segítségével valósítja meg a különböző rendszerek közötti kommunikációt. Az ESB tekinthető a SOA egyfajta megvalósításának is. A busz üzenet alapú kommunikációt támogat és képes a különböző helyszíneket virtualizálni (klaszterezés segítségével). Számos absztrakciót támogat melyek az üzenetek irányításával, manipuláció-jával foglalkoznak. Bővebben a 11-12 fejezetekben beszélünk az ESB-ről.

5.5.6. SCA

Ellentétben az ESB-vel mely az üzenetekre azok manipulálásra koncentrál, az SCA (Szol-gáltatás Komponens Architektúra – Service Component Architecture - SCA) egy nagyobb szkópot céloz meg. Alkalmazásokat lehet benne definiálni a SOA koncepció

men-tén. Míg az ESB java specifikus (gyakorlatilag a JBI JSR 208 megvalósítása) addig az SCA nyelv független. Az SCA-ban szerelvényeket lehet definiálni melyeket a futtató környezet megfelelő módon virtualizálhat és kezelhet. Ezen szerelvények más szerelvényekre vagy szolgáltatásokra (komponensekre) építhetnek (a SOA paradigma mentén).

5.6. Összefoglaló

E fejezet célja a köztesréteg szerepének, lehetséges típusainak és képességeinek bemutatása volt. A köztesrétegek használata napjaink alkalmazás vagy alkalmazásrendszer fejleszté-sekor elkerülhetetlen. A trendek azt mutatják, hogy egyre fontosabbá válik a BASE és az ACID megközelítést is vegyítő rendszerek használata, ezek megfelelő integrációja még nyitott kérdés. A jegyzet következő részében áttekintjük a napjainkban használatos progra-mozási nyelvi paradigmákat mivel ezek megfelelő kiválasztása nagyban hozzájárulhat a fejlesztők produktivitásához.

5.7. Kérdések

1. Mit nevezünk köztesrétegnek?

2. Mik egy köztesréteg legfontosabb feladatai?

3. Hogyan támogatja a köztesréteg az egymással kommunikáló számítási egységeket?

4. Hogyan támogatja a köztesréteg az alkalmazások és szolgáltatások fejlesztőit?

5. Hogyan viszonyulnak a klasszikus értelemben vett köztesréteg-megoldások a mai, modern felhőalapú szolgáltatásokhoz?

5.8. Ajánlott irodalom

• Coulouris, G. és mások: Distributed Systems - Concepts and Design. 4. kiadás.

Addison-Wesley, 2005. ISBN 0-321-26354-5

• EBU project group on Middleware in Distributed programme Production: The Middleware Report. 2005. Elérhető: http://tech.ebu.ch/docs/tech/tech3300.pdf

• Emmerich, W. és mások: The impact of research on middleware technology. ACM SIGOPS Operating Systems Review. Volume 41 Issue 1, 2007.

• Jendrock, E. és mások: The Java EE 6 Tutorial. Oracle, 2010. Elérhető:

http://download.oracle.com/javaee/6/tutorial/doc/javaeetutorial6.pdf

In document Programrendszerek fejlesztése (Pldal 33-36)