Elosztott számítások

A Wikipédiából, a szabad enciklopédiából

Az elosztott számítások egy számítógépes feldolgozási módszer, ahol egy program különböző részei kettő vagy több számítógépen futnak párhuzamosan, és kommunikálnak egymással a hálózaton keresztül. Az elosztott számítások egy típusa a szegmentált vagy párhuzamos számítások módszerének, de az utóbbi kifejezést inkább akkor használják, ha egy program különböző részei több - egy számítógépben elhelyezett - processzoron futnak párhuzamosan. Miközben mindkét feldolgozási típus megköveteli, hogy a program külön futtatható részekre legyen bontva, az elosztott számítások esetén a programrésznek figyelembe kell vennie azt is, hogy a többi részprogram különböző környezetben fog futni. Például két számítógép gyakran más hardverrel vagy fájlrendszerrel rendelkezik.

Egy példa az elosztott számításokra a BOINC fejlesztői környezet, amellyel kiterjedt problémákat lehet több számítógépen megoldható kisebbekre bontani. Később a részeredményekből összeállítható a végső megoldás.

Az elosztott számítások fejlődése nyilvánvaló eredménye annak, hogy a számítógépek képesek hatékonyan kommunikálni hálózatokon keresztül. Az elosztott számítások nem összekeverendő a hálózati számítástechnikával. A Word Wide Web például egy hálózat, de nem használ elosztott számítási módszereket.

Számos technológia és szabvány létezik elosztott számítások megvalósítására. Többet közülük egy adott célra optimalizáltak, mint amilyen a Remote Procedure Calls (RPC), a Remote Method Invocation vagy a .NET Remoting.

Szervezés[szerkesztés | forrásszöveg szerkesztése]

Az egyes számítógépek közti kapcsolat megszervezése elsődleges fontosságú. Először is a lehető legszélesebb körben kell támogatni a különböző típusú számítógépeket. A protokoll vagy kommunikációs csatorna nem tartalmazhat olyan utasításokat amit egyes gépek esetleg nem tudnak értelmezni. Különös figyelmet kell fordítani annak ellenőrzésére is, hogy az üzenetek valóban kézbesítve lettek-e, valamint a hibás üzenetek vissza lettek-e utasítva, mivel ezek nem teljesülése esetén az adott számítógép vagy akár az egész hálózat is összeomolhat.

Egy másik fontos kérdés, hogy egy számítógépnek tudjunk egységesen kompatibilis módon olyan programot eljuttatni, amit az lefuttathat, majd kommunikál a meglévő hálózattal. Ez nem mindig kivitelezhető vagy praktikus ha különböző felépítésű gépeket használunk. Ilyenkor más módszerek nyújthatnak megoldást, mint a platformfüggő fordítás vagy a program egyedi implementálása.

Célok és előnyök[szerkesztés | forrásszöveg szerkesztése]

Sok különböző típusú elosztott számításokat végző rendszer létezik és nagyok a kihívások, hogy sikeresen kifejlesszenek újabbakat. A fő cél az, hogy a felhasználókat és az egyéb erőforrásokat transzparens módon, egy nyílt és jól skálázható rendszeren keresztül kapcsolják egymáshoz. Ideális esetben ez a szervezési mód sokkalta hibatűrőbb és hatékonyabb mint több egyedi számítógép kombinációja.

Nyitottság[szerkesztés | forrásszöveg szerkesztése]

Nyíltság alatt az elosztott számításokat végző rendszereknek azt a tulajdonságát értjük, hogy az egyes alrendszerek folyamatosan nyitottak a többi rendszerrel való kommunikációra. A web service protokolljai például olyan szabványok amelyek az elosztott rendszer könnyű bővítését és skálázhatóságát teszik lehetővé. Általánosságban elmondható, hogy a skálázható és nyitott elosztott rendszerek több előnnyel rendelkeznek a zárt rendszerekkel szemben.

Végeredményben nyílt elosztott rendszerekre van szükségünk ahhoz, hogy az alábbi tulajdonságokról beszéljünk:

Monotonitás
Ha egyszer valami elküldtek egy nyílt rendszerre, azt nem lehet később visszavonni.
Többelvűség
Az elosztott rendszer különböző alrendszerei homogén, egymást átfedő információkat szolgáltatnak, amelyek akár ütközhetnek is egymással.
Határtalan meghatározatlanság
A nyílt elosztott rendszer különböző alrendszerei asszinkron módon képesek belépni és kilépni, valamint a köztük zajló kommunikáció is asszinkron módon felépülhet vagy megszakadhat. Épp ezért, egy művelet végrehajtásához szükséges időt nem lehet előre meghatározni.

Hátrányok[szerkesztés | forrásszöveg szerkesztése]

Technikai megvalósítás[szerkesztés | forrásszöveg szerkesztése]

Egy nem jól megtervezett elosztott számítási rendszerben csökkenhet a számítások megbízhatósága, ha az egyes alrendszerek esetleges elérhetetlensége megszakíthatja a többi alrendszer munkáját. Leslie Lamport jegyezte meg frappánsan: „Az elosztott számítási rendszer egyike azon rendszereknek ahol egy másik számítógép hibája, amelyiknek a létezéséről sem tudtál, használhatatlanná teheti a saját gépedet.”

A hibaelhárítás és a diagnosztizálás is sokkal bonyolultabbá válik egy elosztott rendszerben, mivel az analizáláshoz szükség lehet arra, hogy távoli alrendszerekre csatlakozzunk, vagy a közöttük zajtó kommunikációt vizsgáljuk.

Sok olyan számítási típus van, amelyek nem elosztott számításokkal dolgozó környezetben valósíthatóank meg a legjobban, tipikusan az alrendszerek közötti kommunikáció vagy szinkronizáció szükségessége miatt. Ha sávszélesség, a válaszidő vagy a kommunikációs szükségletek kiemelkedő fontosságúak, akkor az elosztott számítási módszerekből származó előnyökből hátrányok lehetnek és a rendszer teljesítménye sokkal rosszabb lehet mint a hagyományos rendszereké.

Projektközpontú problémák[szerkesztés | forrásszöveg szerkesztése]

Architektúra[szerkesztés | forrásszöveg szerkesztése]

Többszálas számítások[szerkesztés | forrásszöveg szerkesztése]

Az elosztott számítások a többszálas végrehajtás egy típusát valósítják meg.

Többmagos számítógépek[szerkesztés | forrásszöveg szerkesztése]

Többszámítógépes rendszerek[szerkesztés | forrásszöveg szerkesztése]

Számítógép-cluster[szerkesztés | forrásszöveg szerkesztése]

Hálózati számítások[szerkesztés | forrásszöveg szerkesztése]

Programozási nyelvek[szerkesztés | forrásszöveg szerkesztése]

Projektek[szerkesztés | forrásszöveg szerkesztése]

Referenciák[szerkesztés | forrásszöveg szerkesztése]

Források[szerkesztés | forrásszöveg szerkesztése]

  • Attiya, Hagit and Welch, Jennifer (2004). Distributed Computing: Fundamentals, Simulations, and Advanced Topics. Wiley-Interscience. ISBN 0-471-45324-2.
  • Lynch, Nancy A (1997). Distributed Algorithms. Morgan Kaufmann. ISBN 1-55860-348-4.
  • Tel, Gerard (1994). Introduction to Distributed Algorithms. Cambridge University Press.
  • Davies, Antony (June 2004). "Computational Intermediation and the Evolution of Computation as a Commodity" ([dead link] – Scholar search). Applied Economics. doi:10.1080/0003684042000247334. http://www.business.duq.edu/faculty/davies/research/EconomicsOfComputation.pdf.
  • Kornfeld, William; Hewitt, Carl (January 1981). "The Scientific Community Metaphor". MIT AI (Memo 641). https://dspace.mit.edu/handle/1721.1/5693.
  • Hewitt, Carl (August 1983). "Analyzing the Roles of Descriptions and Actions in Open Systems". Proceedings of the National Conference on Artificial Intelligence.
  • Hewitt, Carl (April 1985). "The Challenge of Open Systems". Byte Magazine.
  • Hewitt, Carl (1999-10-23–1999-10-27). "Towards Open Information Systems Semantics". Proceedings of 10th International Workshop on Distributed Artificial Intelligence.
  • Hewitt, Carl (January 1991). "Open Information Systems Semantics". Journal of Artificial Intelligence 47: 79. doi:10.1016/0004-3702(91)90051-K.
  • Nadiminti, Dias de Assunção, Buyya (September 2006). "Distributed Systems and Recent Innovations: Challenges and Benefits" (PDF). InfoNet Magazine, Volume 16, Issue 3, Melbourne, Australia. http://www.gridbus.org/~raj/papers/InfoNet-Article06.pdf.
  • Bell, Michael (2008). "Service-Oriented Modeling: Service Analysis, Design, and Architecture". Wiley.

További információk[szerkesztés | forrásszöveg szerkesztése]