Bevezetés
Dolgozom a vállalatnál, ahol sok fut kötegelt feladatok feldolgozására millió nyilvántartások adatok minden nap, és én már gondolok a közelmúltban arról, hogy az összes gép ülnek minden nap semmittevés órákon át. Nem lenne jó, ha tudnánk használni az olyan berendezést, mely növeli a feldolgozási teljesítmény a rendszerünk? Ebben a statútum fogom nézni a potenciális előnyei foglalkoztat egy irodai hálózat segítségével virtualizált környezetben.
Az 1. rész áttekintést adtam a rendszer és technológiák fogom használni, valamint tárgyalt néhány a lehetséges okok, hogy miért szeretne létrehozni egy irodai hálózatba.
Állás vezérlés
Ha meg akarsz futni munkahely akkor lesz szükségünk valamilyen módon kezelni őket. A te dolgod ellenőrzési rendszer (a munka szerveren) kell igazán jól átgondolt, még mielőtt megpróbál futtatni egy irodai hálózatba. Tehát először is, mi a feladata állást rendszer:
- Osztogatásával munkahely kérésére dolgozók
- Mondja dolgozók milyen típusú munkákat futtatásához
- Pálya munkahelyek
- Ügyeljen arra, hogy a feladatok csak akkor fut, ha
- Adja meg a feladattal kapcsolatos adatok dolgozók, vagy legalább mondd meg nekik, hogy hol kap ez
A rendszer bővíthető kell lennie, egy megoldás, ami most egy esetben meghosszabbítható futtatására többféle munkahelyet teremteni, mint az üzleti látja érdemes egy grid megoldást. Például, a munkahelyek kerülhetnek a prioritásokat, több típusú munkát is léteznek (azaz több kód bázisok), végül akkor is futhat különböző gépek, amelyeknek a munkavállaló optimalizálva minden típusú feladat (bár ez nem távolodnak az "általános munkás "ötlet). Mindig próbálj gondolkodni a jövőben, amikor rendszereket fejleszt ki, a rövid távú elképzelések vezethet hosszabb távon és nagyobb frusztrációt a fejlesztési időt.
Job Server
Elmegyünk valahová kell kontrollálni a munkahelyek, ez legyen az egyetlen rendszer, amely a rács fix Resource Locator, lehet, hogy egy IP-cím, host név, URL (a belső DNS), stb Ennek oka A munkavállalóknak tudniuk kell, hol keresse 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), hogy kell tárolni egy listát a munkahelyek, munkahelyek kezét, kap eredményeket, majd tárolja őket későbbi visszakeresés. Hogy ezek a részek (mint például a "kezét munkahely") meghatározása is nagyon alap. Később tudjuk kiterjeszteni a rendszer tartalmaz egy adminisztrációs felületet felvenni, szerkeszteni, törölni, felfüggeszteni munkahely de ez túl ezt a gyakorlatot.
Nem ok nélkül, akkor a munkád, hogy szerver nem egy virtuális gépen belül futó szerver a fő feldolgozás, feltéve, hogy nem folyik túl sok erőforrást belőle. A munka azonban nem kell szerver magas rendelkezésre állás, ha lemegy a péntek este fogsz veszíteni egy egész hétvégét a feldolgozás, esetleg olcsóbb neked egy pár hétig értékű feldolgozás (összehasonlítva a főbb feldolgozó kiszolgáló egyedül) . Ha akarod, fontolja meg a munkát a szerver terhelése kiegyensúlyozott környezetben a magas rendelkezésre állás.
Alapbeállítások
Az alap beállítás a mi feladatunk szerver áll, amit hívom az én egyik Limp szerverek (azaz Li Nux, ySql m, P LE). A kód fut Thea munkavállalók ténylegesen dolgoznak ki milyen munkát tud futni kölcsönhatásban áll a munkahelyek rendszer adatbázisok. Később sikerült létrehozni egy webes szolgáltatás és ténylegesen kezét munkahely helyett, amelyek a munkások csinálnak maguknak a kemény munka, de most fogunk továbbra is használja a KISS elv (Keep it Simple, Stupid!).
Szóval, lehetővé teszi létre három mySQL táblákat kezelni munkahely. Ezek lesznek a `munkahely`, `jobRecords`, `és` jobResults.
Itt vagyok használ SQL Buddy egy jó kis alternatívát phpMyAdmin csak azért, mert az egyszerűbb telepíteni a CentOS (mások lásd: 10 Nagy alternatívát phpMyAdmin )
Ez a tábla áll, 5 egyszerű mezők,
- id: egyedi azonosítására a munkát
- név: Lehet, hogy egy ügyfél hivatkozás, vagy akárhány más azonosítók
- Állapot: Tudnod kell, ahol a munka van, például
- 0: nem indult
- 1: felkapott
- 2: Kész
- started_by: Ki elkezdtem a munkát? Ez nem teljesen szükséges, de szép volna. Én javaslom nyomon munkavállalók saját IP-címet a hálózat számára
- started_at: Mikor indul a munkavállaló a munkát? A nyomkövető munkahelyek nem fejeződik be X ideig tudjuk szükségünk, hogy vegye fel a munkát, és kezdje újra egy másik feldolgozó munkás. A munkavállalók tudta megállítani feldolgozás / offline tetszőleges számú oka, áramkimaradás, összeomlás, hálózati veszteség, stb
Könnyen hogyan lehetne kiterjeszteni táblázatban néhány kiegészítő mezőt, hogy a statisztikai követés, a befejezési idő oszlopot, hogy mennyi ideig tartott a munka, egy számlálót, hogy hány munkavállaló felvette a munkát (nyilván ez inkább szükség 1), munka prioritás, a lista megy tovább és tovább. A bonyolultabb feladat forgatókönyvek lehetséges lenne meghatározni, hogy mennyi memóriát a munkavállaló számára hozzáférést kell biztosítani (és ezért csak megfelelő dolgozók), vagy akár a munkavállaló milyen típusú lenne szükség.
Lehetővé teszi, hogy adjunk néhány példát munkahelyek:
A következő táblázat ismét nagyon egyszerű megérteni, ezek munkánk rekordok. Ezek kapcsolódnak a fő munkában asztal mellett oszlop `` jobs_id. Az alkotó az ebben a táblázatban nagyon sok múlik az adatokat, hogy meg kell adnia a munkavállalóknak, lehetővé teszi, hogy egy nagyon egyszerű példát, ahol már négy oszlopot tartalmaz:
- id: Azonosító a rekord
- név: személy neve
- Cím: Személy címét
- jobs_id: a feladat azonosítóját ez a rekord kapcsolódik
A harmadik és egyben utolsó asztalon áll egy asztal eredmények, sokkal ugyanazt teszik ki Adataink asztalra, azzal a kiegészítéssel, néhány oszlopot lehet része 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 ellenőrző munkát! (Bár ez egy nagyon alap szinten) Az én esetemben vagyok arra, hogy egy másik asztalhoz, ahol az adatokat feldolgozni volt található, de ez ugyanúgy volt egy fájl, paraméterek szimulációs programot futtatni, akkor nevezd meg.
Kiválasztása egy munkát
Mint azt korábban jeleztük, a munkavállalók a dolgunkat menedzsment nekünk most, így minden meg kell tennie, hogy valóban talál munkát igénylő feldolgozása és az információk beszerzése. Hogyan csináljuk ezt? Hát vedd munkánkat kiválasztási kritériumok és keresnek állást, az SQL-én az alábbi:
- Tegyen meg minden munkahelyet, amelyek nem jelölt teljes, de a mi munkás és állítsa vissza őket (cseréld __ ME__ azonosítójával, legegyszerűbb lenne IP-cím):
UPDATE `SET` `munkahely` status = 0 WHERE `status` = 1 ÉS started_by `` = __ ME__;
- A mi feladatunk, kiválasztási kritériumok, jelöljön ki egy feladatot, és mondd el a rendszer, hogy ez a munkavállaló foglalkozik vele:
UPDATE `SET` `munkahely` status = 1, started_by `` = __ ME__, started_at `` = NOW () WHERE `` status = 0, vagy
(`Status` = 1 és a `` started_at> DATE_SUB (NOW (), intervallum X óra)) ORDER BY `id` ASC;
Azzal megragadta a munkahelyek még nem tértek vissza eredményeket X ideig tudjuk biztosítani, hogy minden feladat futtatása esetén a munkavállaló összeomlik, vagy megy AWOL.
- Következő megragad a munkahelyek részleteket majd magukat a rekordokat:
SELECT * FROM `munkahely` WHERE `` = __ started_by ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __ JOBID__;
Befejezésekor a munka, amit be is eredmény rekordok és jelöljük ki a teljes munkát. Ne feledje, a munkahely Suspend / Resume bármikor lehetővé teszi néhány robosztusság a script. Lehet, hogy felfüggeszti a feladat felénél frissítésével a munkát ellenőrző rendszer, így ellenőrzi a rekordok száma munkát, és a találatok számát mentette vissza a munka ellenőrzési rendszer lenne bölcs lépés.
Ezen túlmenően, miközben bemutatja, hogyan lehet ezt a munkahelyet lehet kiválasztani, és sikerült egy SQL-lekérdezés keret akkor tényleg kell referáló munkád szabályozás, hogy ha úgy dönt, hogy átvált egy webes szolgáltatás, a fájl alapú rendszer, XML , vagy bármely más Számos rendszer nem fogja befolyásolni a kód fölé.
Állás Configuration
A következő szempont annak megállapítása, a feladat nagysága és konfiguráció. Ha játszol a munkahelyek konfiguráció tudunk teremteni egy kiváló egyensúlyt a sebesség, a replikáció folyamatát, és a megbízhatóság. Vegyünk egy pár OFA forgatókönyvek:
- Állás hogy 1 nap minden futtatni: Ez azt jelenti, hogy a dolgozók 15 napon belül kell dolgozni minden munkát (emlékezzünk 10%-a hatalom számára az idő 2/3-a). Ez nyilvánvalóan nem bölcs konfiguráció, a feladat nagysága nem túl nagy! Lenne, hogy legalább kétszer az idő, hogy kap munkát kell feldolgozni a kezdeti munkás megy AWOL (idő, hogy vegye fel, hogy nem tért vissza következtében plusz újrafeldolgozó idő). Egy ideális azt, hogy legalább egy teljes munkát, egyszerűen törli a végén minden Hosszabb üzemszünet, hogy így tartsa meg a munkahelyeket ketyeg újra és legrosszabb esetben a munkát venne igénybe, hogy két napig folyamat első elkallódna.
- Foglalkoztatáshoz 1 perc futtatni: Ez azt jelenti, hogy a dolgozók körülbelül 15 percet futni minden munkát. Bár kezdetben úgy tűnik, ez ideális, kapsz további munka során feldolgozásra ebédidő, kávészünet, találkozók, stb ez a forgatókönyv teszi törzs egyéb területeire is a rendszer, és bemutatja a saját problémáit. Például, először a setup / feldolgozási idő arány fog menni jobbra lefelé, ezért elveszti a rendszer hatékonyságát. A hálózat lesz állandó folyamatos munka az információkat a különböző munkások idegesítő munkatársak, akik dong a napi munkában. Te is megy, hogy nagyobb terheket ró a munkát feldolgozó kiszolgáló mivel olyan kiadagol sok-sok apró munka rendszeresen. Végül, ebben a helyzetben, ha a szerver leáll munkát akarsz létrehozni egy hatalmas hátsó napló befejezetlen munka míg a nagyobb munkahely eljárás folytatása szerencsére tisztában azzal, hogy a munkát kiszolgáló nehézségekkel küzd.
A valóságban nem lesz egy ideális konfiguráció a hálózat beállítása, sok függ a rendelkezésre álló forrásokat fajta munka, munka átfutási idő követelményeknek, a hálózati képességek, és így tovább. Azonban néhány iránymutatást a következő lenne:
- Méret munkahelyet úgy, hogy minden munkavállaló képes átjutni legalább 3-4 munkahelyet egy olyan időszakban, 15 óra (valószínűleg a leghosszabb készenléti idő)
- Játssz a feladat méretének úgy, hogy a beállítási idő lesz viszonylag jelentéktelen, mint a feldolgozási idő (figyelembe véve a fenti pont).
- Ha a munka nem fejeződött be a duplája az idő (esetleg kevesebb) azt várod, hogy a befejezéséhez feltételezni, hogy az elmúlt AWOL és elkezd feldolgozás másik munkás. Ez azt jelenti, hogy lehet várni akár háromszor a szokásos ideje van állás nélkül, hogy teljes (esetleg hosszabb ideig, ha a következő feladat sikertelen). Érdemes időt csökkenteni, de vigyázzon, hogy ne csökkenjen túl nagy, mivel lehet kezdeni kétszeres feldolgozási feladatokat rendszeresen.
- Jobs függetlennek kell lennie a külső követelmények a lehető legnagyobb mértékben. A munka szervert, például, csak a kapcsolatot elején és végén minden munkát.
- Soha nem telíti a hálózatot, ez két negatív hatásai, a nappali személyzet fogja találni a hálózat használatáról és frusztráló lehet a problémákat tapasztalt kapcsolat időtúllépés a probléma, hogy csak rosszabb lesz, mint átméretezi a rács.
- Biztosítani munkahely fut a munkavállalókat. Ha munkahelyet vált, vagy túlságosan memóriaigényes lemezterület intenzív munkahelyek indul megszakítása és az egyetlen dolog, észre fogod venni, egy csepp a munkahelyek számának feldolgozása nincs valódi oka.
Az eredmények közlésekor a Job
Benyújtásakor a munka eredményeit, fontos ellenőrizni, hogy az eredményeket nem nyújtották be másik munkás, különösen, ha a jelenlegi munkavállaló a szunnyadó egy ideig.
Amikor eredményt nyújtják be arról, hogy a találatok száma megegyezik a rekordok száma belüli munkát.
Mint azt korábban jeleztük, és nem lehet eléggé hangsúlyozni, épít be hibatűrő munkát visszakeresés és az eredmények benyújtását. A munkavállalók (és valószínűleg fog) pihenő módban megy a legkellemetlenebb az idők, és ezt kell gondoskodjanak. Emellett ismét referáló el az eredményt benyújtási segít kielégíteni a jövőbeni változtatásokat a munka ellenőrzési rendszer sokkal könnyebb kezelni.
Összegzés
Ebben section kerestünk, hogy milyen munkát vezérlő szerver kell tennie és hogyan, hogy egy nagyon alap rendszert hozzanak létre. Megbeszéltük, hogyan kell lekérdezni a feladatot a rendszer, és hogyan lehet a legjobban beállítani munkahelyeket, hogy a legtöbbet mi az Office rács rendszer. A befejezéshez, egy vagy két bekezdést az eredmények közlésekor vissza a munkát vezérlő szerver került bemutatásra.
- A munka vezérlő szerver kezeli a munkahelyek és biztosítja, hogy a munka elvégzése egység
- A referáló munkád select / eredmények benyújtását meg tudjuk változtatni a technológiát a vezérlő szerver nélkül sok probléma
- Állítsd be a munkahelyeket, hogy futnak a gyors és hatékony, anélkül, hogy túl nagy nyomás nehezedik a hálózati infrastruktúra, és a feldolgozási feladatok megkettőzése nélkül rendszeresen.
- Ellenőrizze, hogy építsen a hibatűrés és hiba checking be a rutin, a munkavállalók felfüggesztheti és újra, é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 géphez és létrehozta a windowsos gépek lesz tétlen munkaidőben dolgozók.