Az Office Grid segítségével virtuális környezetben - 2. rész

Által Steven Lloyd Watkin , péntek december 4, 2009 11:23

Bevezetés

Dolgozom a vállalatnál, ahol fuss sok kötegelt feladatok feldolgozására millió nyilvántartást adatok minden nap, és én már gondoltam a közelmúltban arról az összes gépet, hogy ülünk, minden egyes nap semmit sem csinál több órán át. Nem lenne jó, ha tudnánk használni e gépek, mely növeli a feldolgozási teljesítmény, a mi rendszerek? Ebben a cikket, megyek megnézni a potenciális előnyei foglalkoztató iroda hálózat segítségével virtualizált környezetben.

A 1. rész I. áttekintést adott a rendszer és technológiák fogom használni, valamint tárgyalt néhány a lehetséges okok miért szeretne létrehozni egy irodai hálózathoz.

Job Control

Ha lesz futás munkahely akkor lesz szükségünk valamilyen módon kezelni őket. A munkád ellenőrzési rendszer (a munka szerveren) kell igazán jól átgondolt, mielőtt még megpróbál futtatni egy irodai hálózathoz. Tehát először is, mik a feladatok munkát ellenőrző rendszer:

  • Terít munkahelyek kérésére munkavállalók
  • Mondja a munkavállalók milyen típusú munkahelyek futtatásához
  • Track munkahelyek
  • Biztosítani kell, hogy a munkahelyek csak akkor fut, ha
  • Adjon munkát az adatok a munkavállalók, vagy legalább mondd meg nekik, hogy hol kap ez

A rendszer azt is meg kell bővíthető, olyan megoldás, amely most egy esetben meg lehet hosszabbítani futtatni többféle munkahelyet teremteni, mint az üzleti látja a vagyon egy rács megoldás. Például, munkahely szert prioritásokat, több munkahely típus létezik (azaz több kód bázisok), végül akkor is futhat több különböző munkavállaló a gépeket, amelyek optimalizált mindegyik típusú feladat (bár az elmozdulás a "generikus munkavállaló "ötlet). Mindig próbáld meg a jövőre gondolni, amikor rendszereket fejlesztenek ki, a rövid távú elképzelések vezethet hosszabb távon a frusztrációt, és nőtt a fejlesztési időt.

Állás Server

Mi lesz szüksége valahol irányítják munkahelyeket, ez legyen az egyetlen rendszer a hálózatba, amely egy rögzített Resource Locator, lehet, hogy egy IP-címet, a fogadó nevét, URL-t (a belső DNS), stb Ez azért van, mert a munkavállalók kell, hogy hol kell keresni a munkahelyek, a munkavállalók meg kell találni a munka ellenőrzési rendszer (nem a munka ellenőrzési rendszer megtalálja a munkavállaló).

A munka szerver maga nem igazán bonyolult feladat (egy alap rendszer egyébként), akkor kell tárolni egy listát a munkahelyek, munkahelyek kezet, megkapja eredményeket, majd tárolja azt a későbbi visszakeresés. Hogy ezek a részek (például a "kezét munkahelyek") határozza meg lehet nagyon alap. Később tudjuk a rendszer kiterjesztését tartalmazza adminisztrációs felület felvenni, szerkeszteni, törölni, felfüggeszteni munkájukat, de ez meghaladja ezt a feladatot.

Nincs ok nélkül, majd, hogy a munka kiszolgáló nem egy virtuális gépen futó belül a főbb feldolgozó szerver, feltéve, hogy nem folyik túl sok erőforrást belőle. A munka azonban nem szükséges kiszolgáló magas szintű rendelkezésre állás, ha megy le egy péntek este fogsz veszíteni egy egész hétvégét a feldolgozás, esetleg olcsóbb akkor egy pár hétig értékű feldolgozási idő (összehasonlítva a főbb feldolgozó szerver egyedül) . Ha akarod, fontolja meg a munkát szerver terhelése kiegyensúlyozott környezetben a magas rendelkezésre állás.

Basic Setup

Az alap beállítás a mi feladatunk szerver áll, amit Hívom az egyik LIMP szerverek (azaz Li Nux, m ySql, P HP). A kód fut Thea munkavállalók ténylegesen dolgoznak ki, hogy milyen munkát is futtatható, kölcsönhatásban áll a munkahelyek rendszer adatbázisok. Később sikerült létrehozni egy webes szolgáltatást, és valóban szét munkahelyet nem pedig a munkavállalók nem a kemény munkát maguknak, de most fogjuk továbbra is használni a KISS elv (Keep It Simple, Stupid!).

Szóval, lehetővé teszi, hozzon létre három MySQL táblákat kezelni munkahely. Ezek lesznek a "munkahely`, `jobRecords` és `jobResults".

munkahelyek táblázat Itt vagyok használ SQL Buddy egy jó kis alternatíva a phpMyAdmin csak azért, mert az egyszerűbb telepíteni a CentOS (mások lásd: 10 Nagy alternatívái phpMyAdmin )

Ez a táblázat áll 5 egyszerű mezők,

  • id: egyedi azonosítására a munkát
  • név: Lehet, hogy az ügyfél referencia, vagy akárhány más azonosítók
  • Státusz: Tudnod kell, amennyiben a munka van, például
    • 0: nem indult
    • 1: felkapott
    • 2: Befejezve
  • started_by: Ki kezdte ezt a munkát? Ez nem teljesen szükséges, de egy szép volna. Én javaslom követési munkavállalók által IP-címét a hálózaton
  • started_at: Mikor indul a munkavállaló a munkát? Nyomon követésével munkahelyek, amelyek nem fejeződik be X ideig tudjuk kell, hogy vegye fel a munkát újra és indítsa el a feldolgozás egy másik munkás. Munkavállalók tudta megállítani feldolgozása / go offline tetszőleges számú oka, áramkimaradás, összeomlás, hálózati veszteség, stb

Könnyen, hogy ezt a táblázatot kell bővíteni néhány további területekre, hogy a statisztikák nyomon követésére, a befejezési idő oszlopban, hogy mennyi ideig tartott a munka, egy számlálót, hogy hány munkavállaló felvette a munkát (nyilván ez kell, hogy inkább 1), munka kiemelt, a lista megy tovább és tovább. A bonyolultabb feladat forgatókönyvek lehetséges lenne, hogy meghatározza, hogy mennyi memóriát a munkavállaló kellene hozzáférés (és ezért csak akkor használja megfelelő dolgozók), vagy akár milyen típusú munkavállaló lenne szükség.

Lehetővé teszi, hogy adjunk hozzá egy kevés példa munkahelyek:

például munkahelyek

A következő táblázat ismét egyszerű megérteni, ezek munkánk rekordokat. Ezek kapcsolódnak a fő munkahelyek táblázat egy oszlop `jobs_id". Az alkotó az ebben a táblázatban nagyon sok múlik az adatokat, hogy kell bocsátania a munkavállalók, lehetővé teszi, hogy egy nagyon egyszerű példa, ahol már négy oszlopból áll:

  • id: Azonosító a rekord
  • név: személy neve
  • címe: Személy címe
  • jobs_id: A munka ID, hogy ez a rekord is kapcsolódik

A harmadik és a döntő asztalon áll egy eredmény táblázat, azt nagyon hasonló alkotják, mint a mi nyilvántartások asztalra, és azzal a kiegészítéssel, egyes oszlopok része lehetne a rekordok táblázat:

  • job_record_id: Link az eredményt a feladatot
  • eredmény: Az eredmény adatok

... És ez minden, amire szükség van a munka feletti ellenőrzés! (Igaz, egy nagyon alap szinten) Az én esetemben én vagyok arra, hogy egy másik asztalhoz, ahol az adataim feldolgozására volt található, de ez is ugyanolyan könnyen került egy fájlt, paraméterek futtatni szimulációs programot, meg ilyeneket.

Kiválasztása a munka

Mint azt korábban jeleztük, a munkavállalók a dolgunkat vezetés nekünk most, így is meg kellett tennie, hogy valóban munkát találni, hogy az igények feldolgozása és az információk beszerzése. Hogyan tudjuk ezt megtenni? Hát vedd mi feladatunk, kiválasztási kritériumok és munkát keresni, az SQL-én az alábbi:

  1. Tegyen meg minden munkahelyet, amelyek nem jelölt teljes, de a mi munkás és reset őket (helyettesítő __ME__ azonosítójával, legegyszerűbb lenne IP-cím):
      UPDATE `` SET `munkahelyek status` = 0 WHERE `status` = 1 ÉS `started_by` = __ME__; 
  2. Segítségével munkánk kiválasztási kritériumok, válasszon ki egy feladatot, és mondd el a rendszer, hogy ez a munkavállaló foglalkozik vele:
      UPDATE `` SET `munkahelyek status = 1", "started_by` = __ME__, `started_at` = NOW () `WHERE` status = 0 vagy
     (`Status` = 1 és a `` started_at> DATE_SUB (MOST (), interval X óra)) ORDER BY `id` ASC; 

    , Megragadva munkák, amelyeket nem tért vissza eredményeket X idő mi biztosítja, hogy minden munka futnak az esetben, ha a munkavállaló összeomlik vagy megy AWOL.

  3. Következő megragad a munkahelyek adatait, majd a nyilvántartások maguk:
      SELECT * FROM `` WHERE `munkahelyek started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Ha elkészül a munka, amit be az eredményt rögzíti és jelöljük meg a munkát teljes. Ne feledje, a munkahely suspend / resume bármikor lehetővé teszi néhány robusztusság a szkript. Lehet, hogy a feladat felfüggeszti felénél frissítése a munka ellenőrzési rendszer, így ellenőrzi a rekordok száma a munkát, és a találatok számát mentette vissza a munka ellenőrzési rendszer lenne bölcs lépés.

Ezen kívül, bár ez jól illusztrálja, hogy munkahelyet lehet kiválasztani és kezelni egy SQL-lekérdezést keret akkor tényleg absztraháló a feladatuk, hogy ha úgy döntesz, hogy váltani egy web szolgáltatás, a fájl alapú rendszer, XML , vagy bármely más Számos rendszer nem fogja befolyásolni a fenti kódot is.

Állás konfiguráció

A következő szempont annak megállapítása, a feladat nagysága és konfiguráció. Játszva a munkahelyek konfiguráció tudunk teremteni egy kiváló egyensúly a sebesség, a folyamat replikáció, és a megbízhatóság. Vegyünk egy pár OFA forgatókönyvek:

  1. Foglalkoztatáshoz 1 nap minden futtatni: Ez azt jelenti, hogy a dolgozók 15 napon belül kell feldolgozni minden munkát (emlékszem 10%-át az erőt 2/3rds az idő). Ez nyilvánvalóan nem egy okos konfigurációt, a feladat mérete túl nagy! Lenne szükség, legalább kétszer az ideje, hogy munkát kell feldolgozni az eredeti munkavállaló megy AWOL (idő, hogy vegye fel, hogy nem tért vissza következtében plusz újrafeldolgozási idő szerint). Egy ideális ha volna legalább egy teljes munkát, egyszerűen törli a végét Hosszabb üzemszünet, így tartsa a munkahelyek ketyeg újra és legrosszabb esetben a munkát venne igénybe a két nap során figyelembe kell menni az első hiányzik.
  2. Foglalkoztatáshoz 1 perc futtatni: Ez azt jelenti, hogy a dolgozók mintegy 15 percet futni minden munkát. Míg ez eleinte úgy tűnik, ideális, kapsz újabb munkát feldolgozása során ebéd ideje, kávészünetek, találkozók, stb ez a forgatókönyv teszi törzs más területeken a rendszert, és bevezeti a saját problémáit. Például, először a setup / feldolgozási idő arány fog menni, egészen, ezért elveszti a rendszer hatékonyságát. A hálózati lesz állandóan folyamatos munka információkat a különböző munkavállalói bosszantó személyzet dong a napi munkát. Te is megy, hogy nagyobb megterhelést jelent a munka feldolgozó szerver, mivel a kiadagol sok-sok apró munkát rendszeresen. Végül, ebben a helyzetben, ha a munkád szerver leáll fogsz létrehozni egy hatalmas hátsó naplót befejezetlen munka mivel nagyobb munkahely folyamatos feldolgozás szerencsére tudják, hogy a munkát kiszolgáló nehézségei.

A valóságban nem lesz egy ideális beállításait a hálózati beállítás, sok múlik a rendelkezésre álló erőforrásokat, fajta munka, munka átfutási idő követelmények, a hálózati képességek, és így tovább. Azonban néhány iránymutatást a következő lenne:

  • Méret munkahelyek érdekében, hogy minden munkavállaló képes átjutni legalább 3-4 munkahelyet számított 15 óra (a leghosszabb várható készenléti idő)
  • Játssz a feladat méretének úgy, hogy a beállítási idő lesz meglehetősen jelentéktelen, mint a feldolgozási idő (szem előtt tartva a fenti pont).
  • Ha a munka nem teljes, kétszer annyi idő (talán kevesebb), akkor elvárható, hogy töltse ki vállalja, hogy elment AWOL, és kezdje meg a feldolgozást másik munkás. Ez azt jelenti, lehet, hogy várni akár háromszor a szokásos ideje a munkát, hogy teljes (esetleg tovább, ha a következő feladat nem). Ha akarod, hogy csökkenteni ebben az időben, de vigyázzon, hogy ne csökkenjen túl nagy, mivel lehet kezdeni kétszeres feldolgozási feladatok rendszeresen.
  • Aktuális függetlennek kell lennie a külső követelmények a lehető legnagyobb mértékben. A munka szervert, például, csak akkor kell felvenni a kapcsolatot elején és végén minden munkát.
  • Ne telített a hálózat, ez két negatív hatásai, a nappali személyzet fogja találni a hálózat használatáról és bosszantó problémák tapasztalhatók a kapcsolat időtúllépés a probléma, hogy csak rosszabb lesz, mint te skála a rács.
  • A munkahelyek is futhat a dolgozók. Ha munkahelyek túl memória igényes vagy lemezterület intenzív munkahely elindul kilépek, és az egyetlen dolog, észre fogod venni, egy csepp a munkahelyek száma feldolgozott nincs valódi oka.

Benyújtása eredményei a Job

Amikor benyújtása eredményei a feladata, fontos ellenőrizni, hogy az eredmények nem nyújtották be más munkavállaló, különösen, ha a jelenlegi munkavállaló szunnyadó egy ideje.

Ha eredményt nyújtják be arról, hogy a találatok száma megegyezik a rekordok száma a munkát.

Mint azt korábban jeleztük, és nem lehet több mint hangsúlyozni, építeni hibatűrés a munkát visszakeresése és az eredmények benyújtását. A munkavállalók (és valószínűleg lesz) bemegy felfüggeszti módot a legkellemetlenebb az idők, és ezt kell gondoskodjanak. Továbbá ismét absztraháló el az eredményt benyújtási segít kielégíteni a jövőbeni változások a munka ellenőrzési rendszer sokkal könnyebb kezelni.

Összefoglaló

Ebben section már megnézték, hogy mi a feladatuk szervert kell csinálni, és hogyan lehet egy nagyon alap rendszer létrehozása. Megbeszéltük, hogyan kell letölteni a feladatot a rendszer, és hogyan lehet a legjobban beállítani munkahelyet, hogy a legtöbbet mi az Ön irodai hálózati rendszer. A befejezéshez, egy vagy két bekezdést az eredmények közlésekor vissza a munka feletti ellenőrzés szerver be.

  • A munka feletti ellenőrzés szerver kezeli a munkahelyek és biztosítja, hogy minden szervezeti egysége töltik
  • Által absztraháló munkád select / eredmények benyújtását meg tudjuk változtatni a technológiát az ellenőrző szerver nem sok probléma
  • Állítsd be a munkát annak érdekében, hogy futnak a gyors és hatékony, anélkül, hogy túl nagy nyomás nehezedik a hálózati infrastruktúra, valamint megkettőzése nélkül feldolgozási feladatokat rendszeresen.
  • Biztosítani kell, hogy amit építenek hibatűrést és hiba checking be a rutin, a munkavállalók felfüggeszthetjük, illetve folytathatjuk, és a legkellemetlenebb az idők. Ne felejtse el ellenőrizni, hogy az eredmények már benyújtott egy másik munkás.

Legközelebb

A 3. rész hozunk létre a virtuális feldolgozó gép és állítottuk fel windowsos gépek lesz tétlen munkaidőben.

Egy Válasz-hoz "Office Grid segítségével virtuális környezetben - 2. rész"

  1. Hidrolizálnak azt mondja:

    Heya! Jó koncepció, de lehet, hogy ez valóban ezt a munkát?

Hagy egy Válaszol













Panoráma téma Themocracy

6 online látogató jelenleg
4 vendég, 2 botoktól, 0 tag
Max. látogatók ma: 13-án, 12:15 UTC
Ebben a hónapban: 26., 2011/07/05 12:35 UTC
Ebben az évben: 130 at 28-03-2011 22:40 UTC
Az összes idő: 130 at 28-03-2011 10:40 UTC