Úvod
Pracuji ve firmě, kde jsme se spustit mnoho dávkové zpracování úlohy miliony záznamů dat každý den a já jsem v poslední době přemýšlel o všech strojů, které sedět každý den dělat nic, po dobu několika hodin. Nebylo by dobré, kdybychom mohli použít ty stroje pro posílení výpočetního výkonu našich systémů? V tomto souboru článků budu dívat na potenciální výhody zaměstnávání Office sítě prostřednictvím virtualizovaných prostředích.
V části 1 jsem dal přehled o systému a technologií, budu používat, stejně jako diskutoval některé z možných důvodů, proč byste chtěli vytvořit kancelář sítě.
Řízení práce
Pokud se chystáte být spuštěna práci pak budete potřebovat nějaký způsob, jak spravovat. Vaším úkolem řídicího systému (na svou práci serveru) musí být velmi dobře promyšlené ještě předtím, než pokusem o spuštění aplikace systému Office sítě. Tak za prvé, jaké jsou úkoly, systém kontroly práce:
- Pracovních míst ruku na žádost zaměstnance
- Řekni pracovníků, jaký typ úloh spustit
- Sledování úkolů
- Ujistěte se, že pracovní místa jsou poháněna pouze jednou
- Poskytují zaměstnání dat pro pracovníky, nebo alespoň říct, kde si to
Systém také musí být rozšiřitelné řešení, které funguje zatím v jediném případě může být rozšířena spustit několik typů pracovních míst a podnikání vidí hodnotu v mřížce řešení. Například může získat zaměstnání priorit, více než jeden typ úlohy může existovat (tj. několik základen kód), případně můžete dokonce provozovat několik různých pracovníků stroje, které jsou optimalizovány pro každý typ zaměstnání (i když to není odklon od "obecné pracovník "nápad). Vždy se snažím přemýšlet o budoucnosti při vývoji systémů, může krátkodobě vést k vizi dlouhodobé frustraci a zvýšený dobu vývoje.
Server práce
Budeme potřebovat někde ovládat naši práci od, mělo by to být jediný systém ve své síti, která má pevnou Resource Locator, je, že IP adresa, jméno počítače, URL (pomocí interní DNS), atd. To je proto, že pracovníci musí vědět, kde hledat práci, pracovníci musí najít práci řídící systém (není práce řídicího systému najít zaměstnance).
Úloha server sám o sobě nemá opravdu složitý úkol (v základním systému, stejně), je třeba uložit seznam míst, ruku pracovních míst, obdrží výsledky, a následně je uložit pro pozdější. Jak se tyto části (např. "rozdávat práci"), jsou definovány může být poměrně jednoduchý. Později můžeme rozšířit systém zahrnuje administrační rozhraní můžete přidávat, upravovat, mazat, pozastavit pracovních míst, ale to je mimo toto cvičení.
Neexistuje žádný důvod pak, že vaše práce serveru nebylo možné virtuální stroj běží v rámci svého hlavního zpracování serveru, pokud to není kanalizace příliš mnoho prostředků z ní. Úloha serveru však potřebuje vysokou dostupnost, pokud to jde dolů v pátek večer budete ztrácet celý víkend zpracování, případně vás to stálo za pár týdnů v hodnotě doba zpracování (ve srovnání s hlavním serverem pro zpracování sám) . Můžete chtít, aby zvážila své práci na serveru zatížení vyvážené prostředí pro vysokou dostupnost.
Základní nastavení
Základní nastavení pro server, naše práce se bude skládat z toho, co jsem volat jeden z mých LIMP serverů (to je Li nux, ySql m, P HP). Kód běžící na pracovníky Thea bude skutečně fungovat, jaké úlohy může běžet interakcí s databází, práce s řídícím systémem. Později bychom mohli vytvořit webové služby, a ve skutečnosti ruku pracovních míst, spíše než mít pracovníci tvrdou práci sám, ale teď budeme pokračovat v používání principu KISS (Keep It Simple, Stupid!).
Takže, pojďme vytvořit tři mySQL tabulky řešit úlohy. Tyto práce budou ``, `jobRecords` a `` jobResults.
Zde jsem pomocí SQL Buddy Výborný alternativu k phpMyAdmin jen proto, že jeho snadnější instalaci na CentOS (další viz: 10 Velké alternativy k phpMyAdmin )
Tato tabulka se skládá z 5 jednoduchých polí,
- ID: Jedinečná identifikace práci
- Název: Může to být klientem odkaz, nebo libovolný počet jiných identifikátorů
- Stav: Musíte vědět, kde je práce na, např.
- 0: není zahájena
- 1: Vyzvedli jsme
- 2: Dokončeno
- started_by: Kdo je začal dělat práci? To není úplně nutné, ale je hezké mít. Já bych navrhnout sledování zaměstnanců podle jejich IP adresy v síti
- started_at: Kdy se pracovník začít práci? Sledováním práce, které nebyly dokončeny v množství X dobu víme, že je třeba vyzvednout práci znovu a začít zpracovávat další pracovník. Pracovníci by mohly zastavit zpracovávání / go Offline pro množství důvodů, výpadku napájení, havárie, ztráta sítě, atd.
Je to snadné, jak by tato tabulka být rozšířena o několik dalších oblastech s cílem umožnit sledování statistik, konečný čas sloupce, jak dlouho zaměstnání trvalo, počítadlo, kolik pracovníků zvedl práci (samozřejmě to musí obvykle 1), pracovní priority, seznam pokračovat dál a dál. Ve složitějších pracovních scénářů, že by bylo možné určit, kolik paměti by se pracovník musí mít přístup k (a tedy použít pouze vhodných pracovníků), nebo dokonce jaký typ pracovníka by bylo zapotřebí.
Umožňuje přidat několik příklad práce:
V následující tabulce je opět velmi jednoduchý na pochopení, jsou to naše práce záznamů. Jsou spojeny s hlavním zaměstnání tabulky sloupec `` jobs_id. Tvoří v této tabulce velmi záleží na data, která potřebujete dodávky vašich pracovníků, umožňuje dělat velmi jednoduchý příklad, kde máme čtyři sloupce:
- ID: ID záznamu
- Jméno: Jméno
- Adresa: Osoba na adresu
- jobs_id: ID úlohy, že tento záznam je spojena
Třetí a poslední stůl se skládá z výsledků tabulky, má podobně jako tvoří naše záznamy tabulky, a navíc některé sloupce by mohlo být součástí záznamů tabulky:
- job_record_id: Odkaz výsledek práce stolu
- Výsledek: Výsledek dat
... A to je vše, co potřebujete pro práci kontrolou! (I když na velmi základní úrovni) V mém případě jsem ukázal jsem k dalšímu stolu, kde se nachází moje osobní údaje ke zpracování, ale toto mohlo právě jak snadno se soubor parametrů, spustit simulaci kód, co si jen vzpomenete.
Výběr práce
Jak bylo uvedeno dříve, budou dělníci dělat svou práci managementu pro nás, takže vše, co potřebujete udělat, je opravdu najít si práci, která potřebuje zpracování a získat informace. Jak bychom to? Dobře vybrat naše kritéria výběru zaměstnání a hledat práci v SQL jsem se následující:
- Přijmout jakékoli zaměstnání, které nejsou označeny jako kompletní, ale z našich pracovníků a resetovat (náhradní __ME__ s identifikátorem, že nejjednodušší bude IP adresa):
UPDATE `` SET `zaměstnání status` = 0, kde `status` = 1 `a` started_by = __ME__;
- Pomocí našich kritérií pro výběr úlohy, vyberte si práci a řekne řídicího systému, který tento pracovník se zabývá se:
UPDATE `` SET `zaměstnání status = 1`, `=` started_by __ME__, `started_at` = Now (), kde `status` = 0 nebo
(`Status` = 1 `a` started_at> DATE_SUB (NOW (), interval X HOUR)) ORDER BY `id` ASC;
Tím, že chytne práce, které nebyly vráceny výsledky ve výši X jsme zajistit, že všechny úlohy jsou spouštěny v případě, že zaměstnanec bude shazovat nebo neomluvenou absenci.
- Další uchopit zaměstnání podrobnosti následují záznamy sami:
SELECT * FROM `pracovních míst: Kam started_by` `= __ME__ LIMIT 1;
SELECT * FROM `job_records: Kam` id `= __JOBID__;
Po dokončení práce vložíme náš výsledek záznamy a označit práci dokončit. Pamatujte si, jak práce může pozastavit / obnovit kdykoliv počítat s nějakou robustnost ve skriptu. To by mohlo být, že úkol pozastaví půli aktualizace práci kontrolního systému, takže kontrola počtu záznamů v zaměstnání a počet výsledků uloží zpět do systému kontroly práce by moudré.
Navíc, když to ukazuje, jak je možné práci vybírat a řízeny z SQL dotazu rámec, který by měl být opravdu oddělovat vaše práce ovládat tak, že pokud se rozhodnete přejít na používání webové služby, soubor založený systém, XML , nebo jiné počet systémů, nebude mít vliv na kód, nad ním.
Pracovní konfigurace
Dalším aspektem je, aby zvážila velikosti úlohy a konfigurace. Tím, že hraje s prací konfigurací můžeme zasáhnout vynikající rovnováhu mezi rychlostí procesu replikace a spolehlivost. Udělejte si pár scénářů OFA:
- Práce trvat 1 den každý spustit: To znamená, že pracovníci potřebují 15 dnů na zpracování každého zaměstnání (pamatujte 10% energie pro 2/3rds času). To zjevně není moudré konfiguraci, vaším úkolem velikost je příliš velký! To by trvalo minimálně dvakrát čas na zpracování úlohy by měl jít první zaměstnanec neomluvenou absenci (čas vyzvednout, že se nevrátí a výsledkem přepracování času). V ideálním případě byste si mít alespoň jeden full job snadno vyklizena na konci každého období dlouhé nečinnosti, tak budete mít práci běží znovu a v nejhorším případě, že práci bude trvat dva dny, aby proces by měl jít první chybí.
- Práce se 1 minutu běžet: To znamená, že pracovníci trvat asi 15 minut běžet každou práci. I když to zpočátku může zdát ideální, můžete získat další práci pro zpracování v době oběda, občerstvení, setkání, atd. tento scénář klade nároky na další oblasti vašeho systému a zavádí své vlastní problémy. Například, nejprve si setup / doba zpracování je poměr půjde vpravo dolů, a proto ztrácí účinnost systému. Vaše síť se bude stále streaming práce informace k jednotlivým pracovníkům frustrující zaměstnanci, kteří jsou Dong jejich každodenní práci. Vy jste také bude klást větší nároky na serveru zpracování zakázek, protože musí rozdávat spousty malých kousků práce na pravidelném základě. Konečně, v této situaci, pokud vaše práce server selže budete vytvářet velké zadní protokol nedokončenou práci zatímco větší pracovní místa, by na pokračování v řízení blažené nevědomosti, že práce server potíže.
Ve skutečnosti tam bude nikdo ideální nastavení pro nastavení sítě, záleží na dostupné zdroje, druhy práce, pracovní podmínky obrátky času, možnost práce v síti, a tak dále. Nicméně některé zásady by bylo:
- Velikost pracovních míst tak, aby každý zaměstnanec může dostat do minimálně 3-4 pracovních míst v období 15 hodin (pravděpodobně nejdelší dobu nečinnosti)
- Hrajte s velikosti úlohy tak, aby nastavení času stává docela zanedbatelné ve srovnání s dobu zpracování (s ohledem na výše uvedený bod).
- Pokud se o práci nedokončí v dvojnásobné množství času (možná i méně), můžete očekávat, že na jeho dokončení předpokládat, že už dezertoval a začít zpracovávat s jiným pracovníkem. To znamená, že budete muset počkat až na trojnásobek normální délku práce na dokončení (možná i déle, pokud následné práci selže). Možná budete chtít snížit tomto okamžiku, ale dávejte pozor, aby jeho omezení příliš mnoho, jak můžete začít duplikace zpracování úkolů v pravidelných intervalech.
- Práce by měly být nezávislé na vnější podmínky co nejvíce. Pracovní server, například, by mělo být kontaktován na začátku a na konci každé pracovní místo.
- Nepoužívejte nasycení sítě, bude to mít dva negativní důsledky, bude vaše denní zaměstnance najít pomocí sítě frustrující a problémy mohou nastat s připojením časového limitu problém, který se bude jen zhoršovat, jak si škálovat síť.
- Zajistit pracovní místa může běžet na vašich zaměstnanců. Pokud se práce příliš náročné na paměť a diskový prostor intenzivní práce začne potracení a jediné, co si všimnete, je snížení počtu pracovních míst zpracována žádný skutečný důvod, proč.
Předkládání výsledků zaměstnání
Při předkládání výsledků práce je důležité zkontrolovat, že výsledky nebyly předloženy jiným pracovníkem, a to zejména v případě, že současný pracovník byl spící po určitou dobu.
Pokud nejsou předloženy výsledky zajistí, že počet výsledků odpovídá počtu záznamů v práci.
Jak již bylo řečeno, a nemůže být více než zdůraznit, budovat odolnost proti chybám v práci a výsledky vyhledávání podání. Pracovníci mohou (a pravděpodobně bude) jít do režimu spánku v nejnevhodnější dobu a na to je třeba pro zajištěný. Také jednou pryč oddělovat své výsledky podání pomůže uspokojit budoucí změny systému kontroly práce mnohem jednodušší řešení.
Přehled
V tomto section jsme se zaměřili na to, co práci Control Server je třeba udělat a jak se dostat velmi základní nastavení systému. Diskutovali jsme o tom, jak získat práci z řídicího systému a jak nejlépe nastavit pracovních míst, aby co nejvíce našich vašeho systému Office sítě. Na závěr byl prezentován jeden nebo dva odstavce na předkládání výsledků zpět na server kontroly práce.
- Ovládání úloh server spravuje pracovní místa a zajistí, že všechny pracovní jednotky jsou dokončeny
- Abstrahováním svou práci vybrat / odevzdání výsledků můžeme změnit technologii ovládání serveru bez velké problémy
- Nastavte si zaměstnání, aby se zajistilo, že jsou provozovány rychle a efektivně, aniž by příliš velký tlak na vaší síťové infrastruktury, a bez zdvojování zpracování úkolů v pravidelných intervalech.
- Ujistěte se, že budování tolerance chyb a omylů checking do rutiny, mohou pracovníci pozastavit a obnovit a nejnevhodnější časů. Nezapomeňte zkontrolovat, zda výsledky již byly předloženy jiným pracovníkem.
Příště
V části 3 se budeme vytvářet virtuální zpracování a nastavení našich strojích s Windows, aby se stal nečinnosti úvazek.