Elosztott programozás a felhőben

Befejeződött

Az elosztott programok hálózatba kötött számítógépeken futnak. A számítógép-hálózatok mindenütt jelen vannak. Közismert példái többek között az Internet, a Nagy teljesítményű számítástechnikai rendszerek (HPC-k) fürtjei, a mobiltelefonok és az autós hálózatok. Sok számítógép-hálózatot neveznek elosztott rendszernek. Az itt használt definíció szerint elosztott rendszer az, amelyben a hálózatba kötött számítógépek üzenetátadás és/vagy megosztott memória útján kommunikálnak és egy adott probléma megoldására vagy egy adott szolgáltatás nyújtására hangolják össze tevékenységüket. A felhő definíció szerint internetalapú szoftverek, platformok és infrastruktúra-szolgáltatások hálózatba kötött számítógépekből álló fürt(ök)ön (vagyis adatközpontokon) keresztül kínált halmaza, tehát a felhő elosztott rendszer. Ebből a definícióból következik, hogy a felhőkben az elosztott (nem pedig a szekvenciális vagy párhuzamos) programok lesznek az általánosak. Az elosztott programok az itteni definíció szerint olyan párhuzamos programok amelyek külön processzorokon futnak, különböző számítógépeken. Az elosztott programok tevékenységei tehát csak úgy állhatnak kapcsolatban egy elosztott rendszerben, hogy explicit üzeneteket küldenek és fogadnak, vagy hogy egy megosztott elosztott memóriát olvasnak és írnak, amelyet a mögöttes elosztott rendszer támogat (például elosztott memóriamegosztási [DSM] hardverarchitektúra használatával).1 A modul következő része azokat a különböző modelleket mutatja be, amelyekkel a felhőhöz készült elosztott programok (vagy felhőalapú programok) elkészíthetők, valamint rámutat néhány nehézségre, amelyekkel a felhőalapú programoknak kell megbirkózniuk.

A felhő programozása

A felhőalapú programok hatékonysága a tervezésük, implementálásuk és végrehajtásuk módjától függ. A fejlesztési folyamatnak számos szempontot figyelembe kell vennie:

  • Melyik mögöttes programozási modell a megfelelőbb: az üzenetátadás vagy a megosztott memória?
  • Szinkron vagy aszinkron számítási modellhez illik jobban az alkalmazás?
  • Melyik az adatok konfigurálásának jobb módja a számítások hatékonysága szempontjából: az adatalapú párhuzamosság, vagy a gráfalapú párhuzamosság?
  • Melyik architekturális és felügyeleti struktúra növeli jobban a program összetettségét, hatékonyságát és skálázhatóságát: a fölé- és alárendelő vagy az egyenrangú?

A felhőalapú programok esetében egyes kérdések – beleértve a tervezést, implementációt, finomhangolást és karbantartást – kiemelt figyelmet érdemelnek:

  • A számítások skálázhatósága nagy rendszerekben (így a felhőkben is) több okból is nehezen biztosítható. Ilyen ok lehet, hogy az algoritmusok nem teljesen párhuzamosíthatók, hogy a terhelés nagy valószínűséggel kiegyenlítetlen, vagy hogy elkerülhetetlenek a szinkronizációs és kommunikációs többletfeladatok.
  • Az adatok helyi tárolását kihasználó, a hálózati forgalmat minimalizáló kommunikáció esetenként nehezen megvalósítható, különösen a (nyilvános) felhőkben, ahol a hálózat topológiája általában rejtett.
  • A felhő két általános jellegzetessége – a virtuális környezetek és az adatközpont-összetevők sokfélesége – heterogenitáshoz vezet, amely megnehezíti a tevékenységek ütemezését, és elfedi a felhő-csomópontok közötti hardveres és szoftveres eltéréseket.
  • A holtpontok és tranzitív lezárások elkerülése, valamint a kölcsönösen kizárólagos hozzáférés garantálása érdekében, amelyek mindegyike nagyon előnyös képesség elosztott környezetben, a mögöttes rendszernek hatékony szinkronizálási mechanizmusokat kell kínálnia, amelyeket aztán a tervezőnek ki is kell használnia.
  • Mivel a meghibásodások valószínűsége a felhő méretével együtt növekszik, a rendszerterveknek olyan hibatűrő mechanizmusokat kell alkalmazniuk, mint a tevékenységek ellenállóképessége, az elosztott ellenőrzőpont-kezelés és az üzenetnaplózás.
  • A hatékony és hatásos végrehajtáshoz a tevékenység- és feladatütemezőknek a tevékenységek helyi jellege, párhuzamossága és rugalmassága mellett támogatniuk kell a szolgáltatásiszint-célkitűzéseket (SLO-kat) is.

Ezeknek a fejlesztési szempontoknak és a felhőbeli problémáknak a kezelése nagy terhet ró a programozókra. Ezeknek a képességeknek (vagy akár csak egy részüknek) a megtervezése, kifejlesztése, ellenőrzése és hibaelhárítása eredendően bonyolult problémákhoz vezet, és amellett, hogy jelentős mennyiségű idő és erőforrás felhasználásával jár, nagy nehézségeket okozhat a helyesség és a teljesítmény terén.

A modern elosztott elemzési motorok azt ígérik, hogy leveszik ezeket a terheket a fejlesztők válláról. Ezek a motorok olyan alkalmazásprogramozási felületeket (API-kat) kínálnak, amelyekkel a felhasználók egyszerű, szekvenciális függvények formájában nyújthatják be programjaikat. A motorok ez után automatikusan hozzák létre, párhuzamosítják, szinkronizálják és ütemezik a tevékenységeket és feladatokat. A hibákat is felhasználói beavatkozás nélkül kezelik. A lecke vége részletesen bemutatja, hogyan absztrahálják és oldják meg az elosztott elemzési motorok a felhőalapú programok fejlesztésével járó nehézségeket. Először azonban két hagyományos elosztott programozási modellt mutat be következő szakasz: a megosztott memóriát és az üzenetátadást. A folytatás a felhőalapú programok által alkalmazható számítási modelleket ismerteti. Ez pontosabban a szinkron és az aszinkron számítási modell ismertetését jelenti. Ezt a felhőalapú programok két fő párhuzamossági kategóriája, az adatalapú és a gráfalapú párhuzamosság bemutatása követi. Végül a felhőalapú programok által általában hasznosítható architektúra-modellek, a fölé- és alárendelő, és az egyenrangú architektúrák leírása következik.


Hivatkozások

  1. A. S. Tanenbaum (1994. szeptember 4.). Distributed Operating Systems Prentice Hall, First Edition