Úvod
Pracujem vo firme, kde sme sa spustiť veľa dávkové úlohy spracovanie milióny záznamov dát každý deň a ja som bol nedávno premýšľal o všetkých strojoch, ktoré sedia okolo každého a každý deň nerobí nič pre niekoľko hodín. Nebolo by dobré, keby sme mohli využiť týchto strojov pre posilnenie výpočtového výkonu našich systémov? V tomto súbore článkov Idem sa pozrieť na potenciálne výhody zamestnávanie úradu siete pomocou virtualizovaných prostrediach.
V časti 1 som dal prehľad o systéme a technológií, budem používať, rovnako ako diskutoval niektoré z možných dôvodov, prečo by ste chceli vytvoriť kanceláriu mriežky.
Riadenie práce
Ak sa chystáte byť bežiaci úlohy potom budete potrebovať nejaký spôsob, ako riadiť. Vašou úlohou riadiaceho systému (na svoju prácu serveri) musí byť naozaj dobre premyslený ešte predtým, než pokúšať sa spustiť funkciu siete. Tak za prvé, aké sú úlohy pre systém kontroly práce:
- Rozdávať prácu na žiadosť zamestnanca
- Povedzte pracovníkov, aký typ úloh spustiť
- Sledovať pracovných miest
- Uistite sa, že pracovné miesta sú poháňané iba raz
- Poskytnúť zamestnanie údaje na pracovníkov, alebo aspoň povedať, kde ho získať
Systém tiež musí byť rozšíriteľné, riešenie, ktoré funguje zatiaľ v jedinom prípade môže byť predĺžená spustiť niekoľko typov pracovných miest, ako obchodný vidia hodnotu v mriežke riešení. Môžu napríklad získať prácu priority, môže byť viac ako jedno zamestnanie typu existujú (tj niekoľko základní kód), prípadne môžete dokonca prevádzkovať niekoľko rôznych pracovníkov stroje, ktoré sú optimalizované pre každý typ zamestnania (aj keď to nie je odklon od 'všeobecných pracovník 'nápad). Vždy sa snažím myslieť na budúcnosť pri vývoji systémov, môže krátkodobo viesť k vízii dlhodobej frustrácii a zvýšený dobu vývoja.
Server práce
Budeme sa musieť niekde kontrolovať naše práce od, malo by to byť jediný systém vo svojej sieti, ktorá má pevnú Resource Locator, je, že IP adresu, názov hostiteľa, URL (pomocou interné DNS), atď Je to preto, pracovníci musia vedieť, kde hľadať prácu, pracovníci musia nájsť prácu kontrolného systému (nie práca kontrolného systému nájdete pracovníkov).
Zamestnanie server sám o sebe nemá naozaj zložitá úloha (v základnom systéme v každom prípade), je potrebné uložiť zoznam miest, ruku pracovných miest, dostane výsledky, a následne uložiť na neskoršie použitie. Ako sú tieto súčasti (napr. 'ruku pracovných miest') definovaný môže byť veľmi jednoduchý. Neskôr môžeme rozšíriť systém zahŕňa administračné rozhranie pridávať, upravovať, mazať, pozastaviť pracovných miest, ale to je nad rámec tohto cvičenia.
Nie je žiadny dôvod vôbec potom, že vaša práca server nemohol byť virtuálny stroj bežiaci vo Vašom hlavnom spracovanie server predpokladu, že nedôjde mozgov príliš veľa prostriedkov z nej. Zamestnanie server však nemá potrebu vysokej dostupnosti, pokiaľ to ide dole v piatok večer budete strácať celý víkend spracovanie, prípadne vás to stálo za pár týždňov v hodnote čas spracovania (v porovnaní s hlavným spracovania server sám) . Môžete chcieť, aby zvážila svojej práci na serveri zaťaženie vyvážené prostredie pre vysokú dostupnosť.
Základné nastavenie
Základné nastavenie pre náš server práce sa bude skladať z toho, čo som volať jeden z mojich serverov Limp (to je Li Nux, m ySql, P HP). Kód bežiaci na Thea zamestnancov bude skutočne fungovať, aké zamestnanie to môže bežať v interakcii s databázami práce s riadiacim systémom. Neskôr by sme mohli vytvoriť webové služby, a skutočne ruku pracovné miesta skôr než mať pracovníci robiť ťažkú prácu sám, ale teraz budeme pokračovať v používaní princípe KISS (Keep It Simple, Stupid!).
Takže, umožňuje vytvoriť tri mySQL tabuľky sa zaoberať pracovných miest. Tie budú "pracovných miest", `jobRecords` a `` jobResults.
Tu som pomocou SQL Buddy veľký malý alternatíva k phpMyAdmin len preto, že jeho ľahšiu inštaláciu na CentOS (pre ostatné pozri: 10 Veľké alternatívy k phpMyAdmin )
Táto tabuľka sa skladá z 5 jednoduchých polí,
- id: Jedinečná identifikácia práce
- Meno: Mohol by to byť klientom odkaz, alebo ľubovoľný počet iných identifikátorov
- Stav: Musíte vedieť, kde je práca na napr.
- 0: Nie je začal
- 1: vyzdvihli sme
- 2: Dokončené
- started_by: Kto je začal robiť prácu? To nie je úplne nutné, ale je pekné mať. Ja by som navrhnúť sledovanie zamestnancov podľa ich IP adresy vo vašej sieti
- started_at: Kedy sa pracovník štart prácu? Do sledovania pracovných miest, ktoré nie sú dokončená do množstva X čas vieme, že je potrebné vyzdvihnúť prácu znova a začať spracovanie iným pracovníkom. Pracovníci by mohli zastaviť spracovávanie / go offline pre ľubovoľný počet dôvodov, výpadku napájania, havárie, strata siete, atď
Je to jednoduché, ako by to mohlo rozšíriť tabuľku s niekoľkými ďalších oblastiach s cieľom umožniť sledovanie štatistík, konečný čas stĺpce vidieť, ako dlho trvalo zamestnanie, počítadlo, koľko pracovníkov zdvihol prácu (samozrejme to musí zvyčajne 1), pracovné priority, môže do zoznamu pokračovať ďalej a ďalej. V zložitejších pracovných scenárov, že by bolo možné určiť, koľko pamäte pracovník by potrebujú prístup k (a teda použiť len vhodných pracovníkov), alebo dokonca aký typ pracovníka, by bolo potrebné.
Umožňuje pridať niekoľko príkladov pracovných miest:
Nasledujúca tabuľka opäť je docela jednoduchý na pochopenie, to sú naše práce záznamov. Tie sú napojené na hlavné pracovné miesta tabuľky stĺpec `jobs_id". Tvoria z tejto tabuľky veľmi závisí od typu dát, ktoré musíte zadať do svojho zamestnanca, nechá urobiť veľmi jednoduchý príklad, kde máme štyri stĺpce:
- id: ID záznamu
- meno: meno osoby
- adresa: osoby adresa
- jobs_id: ID zamestnanie, že tento záznam je spojená
Tretia a posledná stôl sa skladá z výsledkov tabuľky, to má veľa rovnaký tvoria ako naše záznamy stôl, a s pridaním niektorých stĺpcov by mohlo byť súčasťou záznamov tabuľky:
- job_record_id: Odkaz výsledok práce stola
- Výsledok: Výsledkom dáta
... A to je všetko, čo potrebujete pre prácu kontrolou! (Aj keď na veľmi základnej úrovni) V mojom prípade ja som uviedol do inej tabuľky, kde sa nachádza moje osobné údaje na spracovanie, ale toto mohlo práve ako ľahko byť súbor, parametre pre spustenie simulácie kód, čo si len spomeniete.
Výber práce
Ako už bolo uvedené skôr, budú pracovníci robiť našu prácu vedenia pre nás teraz, takže musíme naozaj urobiť, je nájsť si prácu, ktorá potrebuje spracovanie a získať informácie. Ako by sme to urobiť? No vyzdvihnúť naše kritériá výberu zamestnania a hľadať prácu v SQL som nasledovné:
- Vezmite všetky úlohy, ktoré nie sú označené ako kompletné, ale z nášho pracovníka, a reset je (náhradné __ME__ s identifikátorom, bude najjednoduchšie je IP adresa):
UPDATE `` SET `zamestnanie status" = 0, kde `štatút` = 1 `A` = started_by __ME__;
- Pomocou našich kritérií výberu povolania, vyberte práce a povedať kontrolný systém, ktorý tento pracovník sa zaoberá sa:
UPDATE `` SET `miest status = 1`, `started_by` = __ME__, `started_at` = NOW (), KDE `štatút` = 0 alebo
(`Status` = 1 A `` started_at> DATE_SUB (NOW (), Interval X HOUR)) ORDER BY `id` ASC;
Tým, že chytí úlohy, ktoré neboli vrátené výsledky vo výške X sme zabezpečiť, že všetky úlohy sú spúšťané v prípade pracovníka zhadzovať alebo ísť AWOL.
- Ďalšie uchopiť zamestnanie podrobnosti nasleduje záznamov sami:
SELECT * FROM `pracovných miest", ak `` = started_by __ME__ LIMIT 1;
SELECT * FROM `` job_records Kde `id` = __JOBID__;
Po dokončení práce vložíme náš výsledok záznamy a označiť prácu ako kompletné. Pamätajte si, ako pracovných miest môže pozastaviť / obnoviť kedykoľvek počítať s nejakou robustnosť v skripte. To by mohlo byť, že úloha odložia polke aktualizácie prácu kontrolného systému, takže kontrola počtu záznamov v zamestnaní a počet výsledkov uloží späť do systému kontroly práce by múdry ťah.
Okrem toho, aj keď to ukazuje, ako možno pracovné miesta byť vybrané a riadené z SQL-query rámec, ktorý by mal byť naozaj oddeľovať vaša práca kontrolu tak, že ak sa rozhodnete prejsť na používanie webových služieb, súborov založený systém, XML , alebo akékoľvek iné rad systémov to nebude mať vplyv na kód, nad ňou.
Konfigurácia práce
Ďalším aspektom je, aby zvážila veľkosti úlohy a konfigurácie. Tým, že hrá s konfiguráciou práci môžeme nájsť vynikajúcu rovnováhu medzi rýchlosťou, proces replikácie a spoľahlivosť. Vezmite pár OFA scenáre:
- Pracovných miest trvať 1 deň každý spustiť: To znamená, že vaši zamestnanci potrebujú 15 dní na spracovanie jednotlivých zamestnaní (pamätajte 10% energie pre 2/3rds času). To je jasne nie je múdre konfiguráciu, vaša práca je veľkosť príliš veľká! To by trvalo minimálne dvakrát čas, aby si prácu spracovaných mala pôvodná pracovník ísť AWOL (čas zdvihnúť to, že nie je vrátený výsledok plus prepracovanie času). V ideálnom by ste mať aspoň jeden celý pracovný ľahko schváliť do konca každého dlhej nečinnosti obdobia, tak budete mať prácu cez tikanie a v najhoršom prípade zamestnania trvalo dva dni proces by mal ísť prvý chýba.
- Pracovných miest trvať 1 minútu plynúť: To znamená, že vaši zamestnanci trvať asi 15 minút bežať každé pracovné miesto. Aj keď to spočiatku môže zdať ideálne, môžete získať ďalšiu prácu pre spracovanie v čase obeda, prestávok na kávu, stretnutia, atď tento scenár kladie nároky na iné oblasti vášho systému a zavádza svoje vlastné problémy. Napríklad, najprv si setup / doba spracovania je pomer ísť priamo dole, preto stráca účinnosť systému. Vaša sieť bude neustále streamovanie pracovných informácií medzi rôznymi pracovníkmi frustrujúce zamestnanci, ktorí sú dong ich každodennú prácu. Vy ste tiež chystá dať viac napätia na vašom serveri, spracovanie zákaziek, ako to má naservírovať hŕbu malých kúskov práce na pravidelnom základe. Napokon, v tejto situácii, ak vaša práca serveri ide dole sa chystáte vytvoriť obrovské zadné protokol o nedokončenú prácu vzhľadom na to, väčšiu zamestnanosť by mohlo ďalšieho spracovania blaženej nevedomosti, že práca bola server ťažkosti.
V skutočnosti tam bude nikto ideálnu zostavu pre vašu sieť nastavenie, veľa závisí na dostupné zdroje, druh zamestnania, pracovné požiadavky doba obrátky, možnosť práce v sieti, a tak ďalej. Avšak niektoré pokyny by mali mať:
- Veľkosť pracovných miest tak, aby každý zamestnanec môže dostať cez aspoň 3-4 pracovných miest v období 15 hodín (pravdepodobne najdlhšia doby nečinnosti obdobie)
- Hrajte s veľkosti úlohy, takže nastavenie času stáva docela zanedbateľné v porovnaní s dobu spracovania (s prihliadnutím na vyššie uvedenému bodu).
- Ak práca nie je kompletný dvojnásobné množstvo času (možno menej) môžete očakávať, že na jeho dokončenie predpokladať, že jeho preč dezertoval a začať spracovávať to s iným pracovníkom. To znamená, že budete musieť počkať až na trojnásobok bežnej dĺžky práce pre to, aby kompletné (možno aj dlhšie, ak následné prácu zlyhá). Možno budete chcieť skrátiť túto lehotu, ale dávajte pozor, aby ho znížiť príliš veľa, ako si môže začať množiteľský spracovanie úloh na pravidelnom základe.
- Pracovných miest by mali byť nezávislé na externé požiadavky, čo najviac. Pracovný server, napríklad, by mali byť kontaktovaný na začiatku a na konci každé pracovné miesto.
- Nepoužívajte nasýtenia sieti, bude to mať dva negatívne dôsledky, bude vaša denná zamestnanca nájsť pomocou siete frustrujúce a problémy môžu byť skúsenosti s pripojením časového limitu problém, ktorý sa bude len zhoršovať, ako si mierka svojej siete.
- Zabezpečenie pracovných miest môže bežať na vašich zamestnancov. Pokiaľ pracovných miest príliš náročné na pamäť alebo priestor na disku intenzívnej práce začne končím a jediné, čo si všimnete, je pokles počtu pracovných miest spracované žiadny skutočný dôvod, prečo.
Pošlite výsledky práce
Pri predkladaní výsledkov práce je dôležité skontrolovať, že výsledky neboli predložené iným pracovníkom, a to najmä v prípade, že existujúce pracovník bol spiace na nejakú dobu.
Keď výsledky sú predložené, aby počet výsledkov zápasov počet záznamov v práci.
Ako už bolo uvedené, a nemôže byť viac ako zdôrazniť, budovať odolnosť proti chybám v práci a výsledky vyhľadávania podania. Pracovníci môžu (a pravdepodobne bude) ísť do režimu spánku nanajvýš nevhodné časov, a to musí byť pre zaistený. Tiež opäť odstráni preč vaše výsledky podaní pomôžu uspokojiť budúce zmeny systému kontroly práce oveľa jednoduchšie riešenie.
Zhrnutie
V tomto section sme sa zamerali na to, čo kontroly práce server musí urobiť a ako sa dostať veľmi základný systém nastaviť. Diskutovali sme o tom, ako získať prácu z riadiaceho systému, a ako najlepšie nastaviť pracovné miesta, aby čo najviac našich vášho systému úradu siete. Až do konca, alebo dva odseky o predkladaní výsledkov späť na server kontroly práce bola prezentovaná.
- Kontroly práce server spravuje pracovných miest a zabezpečuje, že všetky pracovné jednotky sú dokončené
- Tým, že odstráni svoju prácu vybrať / výsledky podávania môžeme zmeniť technológiu ovládania serveru bez veľké problémy
- Zostavte si svoj pracovné miesta, aby sa zabezpečilo, že sú prevádzkované rýchlo a efektívne, bez príliš veľký tlak na vašej sieťovej infraštruktúry, a nedochádza k zdvojovaniu úloh spracovanie na pravidelnom základe.
- Uistite sa, že budete stavať tolerancie chýb a omylov checking do rutiny, môžu pracovníci pozastaviť a obnoviť a pri najnepriaznivejšom časov. Nezabudnite skontrolovať, či výsledky už boli predložené iným pracovníkom.
Nabudúce
V časti 3 , budeme vytvárať naše virtuálne spracovanie a nastaviť naše okná strojov, aby sa stal nečinnosti-úväzok.