Az ARC új generációs erőforrás bróker rendszere
Rőczei Gábor <>
NIIF Intézet
A KnowARC projekt keretein belül kifejlesztettünk egy olyan bróker megoldást, ami képes több grid köztesréteg felé számítási jobokat szétosztani. Az egész rendszer egy olyan működési környezetre épül, ami röviden összefoglalva a következő főbb jellemzőkkel rendelkezik:
- Webszolgáltatás alapú: HTML, SOAP, XML, WSDL
- Több platformon használható: Linux, Mac OS X, Solaris és nemsokára Windows-on is elérhető lesz
- Több nyelven is lehet szolgáltatást írni: Python, C++, Java
- Betölthető modulokból áll
- Többféle biztonsági megoldást is tartalmaz: X509Token, UsernameToken, SAMLToken
- IPv6-ot is támogatja
Jelenleg három köztesrétegnek tud jobokat küldeni a bróker: ARC0, ARC1, gLite. Olyan módon van megtervezve, hogy könnyedén bővíteni lehet más köztesréteggel, csupán a szükséges C++ osztályokat kell implementálni.
Maga a bróker rendszer több különböző libarcclient-es modullal áll kapcsolatban, amik közül a legfontosabbak a következők: TargetGenerator, TargetRetriever, ExecutionTarget, JobDescription, Submitter. A TargetRetriever az információs rendszernek, a TargetGenerator a számítási erőforrásnak, az ExecutionTarget egy várakozó sornak (queue-nak) feleltethető meg, a Submitter végzi a köztesréteg specifikus job küldést. Minden egyes köztesréteghez tartozik egy-egy ilyen komponens. A JobDescription osztály feladata egy jobleiró konvertálása egy másik jobleíróra, például ha Job Submision Description Language (JSDL) jobunk van és gLite-os köztesrétegnek szeretnénk küldeni akkor a JSDL-t Job Description Language-re (JDL) kell konvertálnunk. A JobDescription osztály jelenleg ezeket a jobleirókat támogatja: JSDL POSIX, JDL, xRSL, és egy új, még nem szabványosított JSDL formátumot, amivel az OGF PGI munkacsoportja foglalkozik.
Röviden ismertetni fogom, hogy a bróker fejlesztésekor milyen problémákat kellett megoldanunk, milyen részekből áll és ezek milyen feladatot látnak el.
Jelenleg ezeket a brókerek készültek el: FastestQueueBroker (abba a várakozó sorba fogja küldeni a jobunkat ahol a leghamarabb elindulhat), RandomBroker (véletlenszerűen választ egyet), FastestCPUBroker (Integer Component of SPEC CPU2006 benchmark szerinti leggyorsabb klasztert részesíti előnyben), DataBroker (azt fogja választani, ahol a legtöbb input adat megtalálható a cache-ben).
Röviden beszélni fogok arról, hogy hogyan lehet saját rendezési algoritmust használó brókert készíteni C++ és Python nyelveken.