Dynamicky stránky Zend_Navigation kontajnera za behu

Tým, a Štvrtok 7Leden 2010 10:50 pm

Pokračovanie na môj posledný príspevok o Zend_Navigation a trasy žiadostí o sitemap.xml na vlastné radič / akcie , tento príspevok je o dymnamically pridávanie stránok do Zend_Navigation kontajnera v behu / script prevedení.

Je to celé dobre a dobre uvedením svojej stránky v ini alebo XML súboru, ale na nejakom mieste budete mať zmenu stránky webu, ktoré chcete ako súčasť ponuky, Mapa stránok, alebo majú byť zahrnuté vo vašom breadcrumb stezce. Preto to, čo musíme urobiť, je pridať stránky našej Zend_Navigation kontajnera za behu. Príklady by to bolo v pridávaní správami, blogu alebo stránky pripomienky apod

Pokračovať v čítaní "dynamicky pridávať stránky Zend_Navigation kontajnera za behu" »

Trasa žiadosti o sitemap.xml na vlastné radič / akcia

Tým, , v stredu 6. januára 2010 12:13 am

Za účelom priamych žiadostí / sitemap.xml do vlastného radiče a akcie vo vašej Zend Framework aplikáciu stačí pridať nasledujúce vo vašom application.ini alebo alternatívne konfiguračnom súbore (napr. ja používam navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = index
 resources.router.routes.sitemap.defaults.action = mapa stránok

Príklad kód pre výstup môže byť videné tým, že vytvorí akcie v príslušnom regulátore napr moja mapa stránok spočíva v indexe regulátora, mapa webu akcie):

 < php
 trieda IndexController
     rozširuje Zend_Controller_Action
 {
     / **
      * Poskytuje súbor Sitemap na základe Zend_Navigation nastavenie
      * /
     public function sitemapAction ()
     {
    	 echo $ this-> view-> Navigácia () -> sitemap ();
    	 $ This-> view-> layout () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemap ľahko a rýchlo vygenerovať Zend_Navigation , veľký rýchly tutorial (a všeobecne veľmi užitočné pre Zend Framework cvičenie) je Zend Odliatky - Dynamické vytvorenie menu a Sitemap a strúhanka .

Zend Framework Per-modul založený nastavenie

Tým, , v piatok 1.1.2010 10:40 pm

Som vytvoril Ísť k tomuto príspevku, ktorý vyžaduje menej konfigurácie, pozri modul založený Layout - Zend Framework .

Pri použití Zend Framework moduly, jeho zrejmé, že ak používate rôzne (sub-) lokalít mimo rovnaké aplikácie nemusíte nutne chcieť rovnaké rozloženie skripty pre každú časť. Rozhodol som sa ísť s nasledujúce štruktúry webu:

  / Aplikácia
     / Regulátory
         ...
     / Modely
     / Modules
         / Default
             / Regulátory
             / Layout
                 / Scripts
             / Pohľady
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Problém bol nastavenie rozloženia skripty pre jednotlivé moduly základe. Odpoveď prišla pri používaní akčné pomocníka. Nastavenie rozloženia na jednotlivé moduly základe zahŕňa tri kroky:

  1. Application.ini (alebo podobné konfigurácie nastavenia):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouty / scripts"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouty / scripts"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / člen / Rozvrhnutie / scripts"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / partnerské / Rozvrhnutie / scripts" 
  2. Vytvorte si svoj akčný Pomocník:
      <? Php
     / **
      * Nastavenie rozloženia na cestu za modulu základe
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Od 2010-01-01
      * /
     trieda Pro_Controller_Action_Helper_SetLayoutPath
         rozširuje Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Sady rozloženie cesta založená na module
          * /
         public function preDispatch ()
         {
        	 $ Modul = $ this-> GetRequest () -> getModuleName ();
    
    	     if ($ Bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ("Bootstrap")) {
    
    	         $ Config = $ Bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ modul] ['zdroje'] ['layout'] ['layoutPath'])) {
    	             $ = LayoutPath
    	                  $ Config [$ modul] ['zdroje'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ("layout")
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. A konečne boostrap akčného pomocníka:
      ...
         / **
          * Nastavuje vzhľad skripty pre jednotlivé moduly základe
          * /
         chránenej funkcie _initLayoutHelper ()
    	 {
    	     $ This-> Bootstrap ("frontController ');
    	     $ Layout = Zend_Controller_Action_HelperBroker :: addHelper (
    	         Nová Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doktrína: DATETIME predvolené NOW ()

Tým, , v stredu 30. decembra 2009 18:30

Bol som zápasil s nastavením až databázové schéma o novej rámcovej Zend projektu. Ja som pomocou snaží využiť doktrína ORM pre moje databázy modelov. Potrebujem nastaviť schému tak, aby mi umožnil nastaviť predvolený dátum a čas k `s` s datetime stĺpca, napr pri pridávaní novú správu som dostal aktuálne časovú pečiatku. Po dlhom hľadaní a experimentovania som našiel riešenie, takže som ich zdieľanie.

Vo vašom schéme Yamli súbor, postupujte nasledujúcim spôsobom:

 Správa:
   actAs slovami:
     Timestampable:
       vytvorené:
         Meno: created_at
         Typ: časovú pečiatku
         formát: Ymd H: i: s
       aktualizácia:
         Meno: last_updated
         Typ: časovú pečiatku
         formát: Ymd H: i: s
   stĺpce:
     id:
       Typ: integer
       Primárne: true
       AutoIncrement: true
     Názov: string (255)
     e-mail: string (300)
     message: String (2000)

Ak na druhú stranu nechcete, aby súbor `` s updated_at stĺpec, môžete použiť nasledovné:

 Správa:
   actAs slovami:
     Timestampable:
       vytvorené:
         Meno: created_at
         Typ: časovú pečiatku
         formát: Ymd H: i: s
       aktualizácia:
         postihnuté osoby: true
   stĺpce:
     id:
       Typ: integer
       Primárne: true
       AutoIncrement: true
     Názov: string (255)
     e-mail: string (300)
     message: String (2000)

PHP Design Patterns - Observer Pattern

Tým, , v utorok 29. decembra 2009 22:02

Čítal som po hlave návrhové vzory nedávno a sa rozhodol napísať niektoré z modelov ako PHP príklady pre vlastný prospech. Prvý z nich, že som sa rozhodol kódu up je vzor Observer . Formálne definície Observer Pattern je:

Pozorovateľ vzor (podmnožina asynchrónne publish / subscribe vzor ) je softvér, návrhový vzor , v ktorom objekt , nazvaný predmet, vedie zoznam svojich rodinných príslušníkov, ktoré sa nazývajú pozorovatelia, a upozorní ich automaticky zo všetkých štátnych zmien, zvyčajne tým, že volá jeden z ich metód . Používa sa predovšetkým na vykonávanie distribuované systémy spracovania udalostí.

Ako systémy stali voľne viazané uistiť, že keď sa stane udalosť všetky systémy, ktoré vyžadujú znalosti o týchto zmenách informovaní. Napríklad, blogu, po uložení príspevok budeme musieť aktualizovať vyhľadávač (napr. Lucene), Mapa stránok, aktualizujeme naše značky, e-mail predplatiteľov atď pozorovateľa vzorom umožňuje vývojárom pridať ďalšie poslucháčov bez úpravy ich pozorovateľný objekt . Tým, že napichne pozorovateľa (tj vyhľadávač aktualizácia pozorovateľ, generátor mapa stránok, atď) do predmetu, tj blogu redakčný systém) môžeme dovoliť, aby vykonať všetky potrebné aktualizácie bezo zmien.

Pokračovať v čítaní "PHP návrhové vzory - Observer Pattern" »

Úrad Grid Computing pomocou virtuálnych prostredí - Časť 4

Tým, , piatok 4. decembra 2009 23:59

Úvod

Pracujem vo firme, kde sme sa spustiť mnoho dávkových úloh spracovanie milióny záznamov dát každý deň a ja som nedávno premýšľal o všetkých tých strojov, ktoré sa nachádzajú okolo každého a každý deň nič nerobiť niekoľko hodín. Nebolo by dobré, keby sme mohli používať tieto stroje k posilneniu výpočtového výkonu našich systémov? V tomto súbore článkov budem sa pozerať na potenciálnych výhodách zamestnávanie kancelársku sieť pomocou virtualizované prostredia.

V časti 3 Vytvorili sme virtuálny stroj pre spracovanie a nastavenie Windows stroja, aby sa stal nečinnosti úväzok.

Spustenie posledný kód

Nevyhnutne po vytvorení svojho pracovníkov obchodnej logiky sa zmení, bude chyby nájsť, bude rýchlejšia efektívnejšia kód vyrobené tak opúšťať vaši zamestnanci sedeli spracovanie dát pomocou starý páchnuce kód . Ako teda zaistíme, že sme vždy používať najnovšie a najlepšie verzii našich spracovanie skriptov?

Existuje niekoľko jednoduchých spôsobov, ako veľmi ľahko by sme mohli urobiť to, trik, však, je zníženie výpočtového výkonu a prevádzka siete v dosahovaní tohto cieľa. Začnime s najjednoduchšie riešenie a zlepšiť to pomaly cez niekoľko iterácií.

Prvá metóda by bolo pripojiť sa k nášmu serveru práce pre ovládanie cez Sambu, FTP, alebo podobný) a zatiahnite smerom nadol najnovšiu verziu kódu. Nie je príliš efektívne, ale to bude robiť svoju prácu. Umožňuje zlepšiť, že niečo, čo vytvára rsync scenár a pomocou tohto zakaždým miesto? Inak čo kladie na našu poslednú spracovanie skriptu do subversion odhlasovaní kód začiatku a potom už len aktualizovať náš kód na každom behu ( svn update )?

V závere sme mohli skončiť s skriptu bash (nazvaný cronu každých 10 minút), ktorá vyzerá ako jednoduché, ako to:

  #! / Bin / sh
 Ak ps ax | grep-v grep | grep php > / dev / null
 potom
     echo "Práca je v súčasnej dobe spracovania výstupu"
 iný
     echo "práca nie je spustená, spustite teraz"
     cd / cesta / k / pracovné / kópia
     svn update
     php yourJobProcessingScript.php
 fi 

Teraz môžeme byť istí, že s každým behu sme definitívne posledná verzia kódu. Sme to zabezpečiť, že sa aktualizuje každý náš kód základňu a zakaždým sme sa vykonať útok a znížiť prevádzku v sieti iba prenos súborov, rozdiely medzi našej siete.

V mojom demonštrácie nastavenia, urobil som presne, ako je uvedené vyššie. Subversion bol inštalovaný na svojom serveri práce spracovanie a proste som stiahol posledný kód z "pracovníka" pobočky pomocou inteligentného svn update '. Tiež som pridal číslo verzie značku do svojho spracovania skriptu, ktorý bol vrátený do databázy ako súčasť výsledkov návratu. Týmto spôsobom som si, že môj kód bol aktualizovaný zakaždým, keď som kopíroval svoj kufor do tj pracovník pobočky, že som určite používate najnovšie spracovanie skript.

Použitie najnovšie dáta

Ak vaša práca spracovanie využíva dátových zdrojov a potom v určitom okamihu sú tieto bude aktualizovaný tiež. Ak budete volať dátové zdroje na veľmi riedkom základe vy budete zaplaviť sieť s prevádzkou, akonáhle vaši zamestnanci začnú prinášať všetko na mŕtvom bode. Pre moje riešenie som sa rozhodol, že by som chcel presunúť svoje zdroje dát si s mojimi VM.

Držte ty si tam kone! Čo keď moje zdroje dát sú obrovské? No to je naozaj prípad, koľko dát je reč? To môže byť z hľadiska nákladov efektívnejšie nainštalovať ďalší väčší pevný disk na každom počítači, než kúpiť ďalšie spracovanie serveru. To je otázka rozpočtu a je na podnikanie, aby rozhodol. Je možno, že vaše zdroje dát sú tak veľké, že je to len neuskutočniteľné, aby toto množstvo dát vo vašich pracovných strojov. V takom prípade čo by ste robili? Tak sme sa mohli pozrieť na volanie miestneho dátového servera, ale to môže spôsobiť problémy so sieťou. V tomto prípade sa distribučná sústava, ako je tento sa môže stať nereálne zahrnúť do kancelárskeho prostredia. To môže tiež byť, že sa môžete pozrieť do iných prevádzkových stratégií, napríklad iba volať svojich pracovníkov medzi 8pm a 6 hodín ráno každú noc a / alebo škrtiace zdroj dát požiada.

Presun na povedzme naše zdroje dát čiastku 100 GB dát. No áno, to je celkom dosť dát sa pohybovať po sieti na aktualizáciu. Ako by sme zabezpečiť, že budeme mať posledné kópiu dát v tomto prípade? Rsync je možné, ale osobne si myslím, spustením svoj najnovší zdroj dát na serveri pracovných spracovanie a toto nastavenie ako majster v replikáciu (s krásnym dlhým bin protokolu) môže byť spôsob, ako ísť:

replikácie Pri nastavení každého z vašich zamestnancov sa ako otrok na pracovnú aktualizácia Control Server do dátových zdrojov sa dostali až pekne k svojim zamestnancom bez obrovského nárastu činnosti siete (to je, ak budete vykonávať aktualizáciu dát obrovský a všetci vaši zamestnanci kopať do naraz). To má výhody v tom, že rsync by ste nedostal dlhú pauzu pred každou prácu, ako aktualizácia databázy, mysql bude démon na pracovníka priebežne aktualizovať svoje údaje, zatiaľ čo spracovanie pokračuje.

To je, ako mám nastaviť môj demonštračné server. Ak chcete nastaviť replikáciu som za vodítko na webe MySQL ( Nastavenie replikácie ) a počas 20 minút som mal Inital pracovníka replikovať na pracovnú ovládanie serverov dátovej sady. Za každý ďalší pracovník replikácie nastavenia a proces sa osvedčil vždy, keď bol kopírovaný VM.

Zhrnutie

V tejto časti článku sme sa zamerali na to, ako ľahké a bezbolestné je, aby vaše spracovanie kód v aktuálnom stave pomocou rsync alebo using subverion (Slov.) robiť prácu a znížiť zaťaženie siete na rovnakom time. Hovorili sme tiež o tom, ako , aby vaše zdroje dát informácie o up-to-date tým, že sa dostali až ku každému z vašich pracovníkov. Tak sme oblasť zabezpečenie toho, že sme sa držať krok s obchodnej logiky a informácie v našom systéme kancelárskej siete. K dispozícii bude samozrejme bezpočet alternatív na plnenie týchto úloh, ale tu boli dva jednoduché príklady, ktoré ukazujú, aké ľahké riešenie je zohnať.

Nabudúce

V záverečnej časti tejto série, vhodne pomenovaný časť 5 , budeme diskutovať o nasadenie tohto systému. Budem zhrnúť, čo sme sa naučili a čo sa mi podarilo vytvoriť.

Úrad Grid Computing pomocou virtuálnych prostredí - Časť 3

Tým, a piatok 4Prosinec 2009 11:37 pm

Úvod

Pracujem vo firme, kde sme sa spustiť mnoho dávkových úloh spracovanie milióny záznamov dát každý deň a ja som nedávno premýšľal o všetkých tých strojov, ktoré sa nachádzajú okolo každého a každý deň nič nerobiť niekoľko hodín. Nebolo by dobré, keby sme mohli používať tieto stroje k posilneniu výpočtového výkonu našich systémov? V tomto súbore článkov budem sa pozerať na potenciálnych výhodách zamestnávanie kancelársku sieť pomocou virtualizované prostredia.

V časti 2 sme sa pozreli na pracovné miesta server beží, a ako by práce byť nakonfigurovaný tak, aby bolo dosiahnuté čo najväčšie množstvo spracovanie a súčasne zabezpečiť, že každá práca je spracovaná bez výnimky.

Nastavenie pracovníka - alebo núdzový serveru

Ďalším krokom v tomto procese je vytvoriť virtuálne pracovníkov. Za to budem používať inštalácia CentOS pomocou VirtualBox. Chystám sa inštalovať MySQL a PHP na serveri, tiež známy ako Limp ods Li Nux, m ySQL, P k) Servera ods Možno som robil, že názov sa).

  • Inštalácia VirtualBox na počítač s Windows (podľa odkazu)
  • Stiahnuť a nainštalovať CentOS (aktuálna verzia 5.3) v rámci vytvoreného virtuálneho stroja

Nemá zmysel, aby som na to ísť je to asi 1000 's veľkými cvičenie vonku (OK, tu je jeden: Vytvorenie a Managing CentOS virtuálny stroj pod VirtualBox ). Dôležité poznamenať, myslím, že som volal môj virtuálny stroj GridMachine.

Čo sa týka mojej voľby virtualizácie klienta a operačného systému tam nie je žiadny vážny dôvod pre každú voľbu. VirtualBox je niečo, čo používam na svojom domácom počítači a je podporovaný tromi hlavnými operačnými systémami. Vybrala som si CentOS ako jeho dobrý stabilný OS a používam ho na svojom vlastnom webovom serveri. Som veľkým zástancom tých správnych nástrojov pre prácu (aj keď som aplikácii "používajú najrýchlejší a najjednoduchší za vás mentality tu), takže ak operačný systém X spustí kód rýchlejšie a efektívnejšie využiť, že miesto :)

Dôležité je, aby vaše VM používa DHCP, inak pre každý nový virtuálny stroj by bolo nutné konfigurovať samostatne čo je niečo, čo nemáme want.By pomocou DHCP nie je potrebné konfigurovať nastavenia siete individuálne pracovných strojov, bude DHCP odovzdá z IP adries pre vás. Preto môžete skopírovať virtuálny stroj o kancelárii bez obáv o nastavení každej z nich sa (to zlepšuje škálovateľnosť a zníži administratívny pracovník).

Proces, ktorý by mal viesť k dosiahnutiu by bolo získať nový fyzický stroj, inštalácia VirtualBox, a potom skoro nasadiť virtuálne obraz bez mnoho iného. To by mohlo byť múdre nastaviť všetkých svojich zamestnancov na iné podsieti, takže môžete aspoň vidieť, koľko stroje sú v prevádzke. Budete tiež musieť nastaviť svoje stroje na dlhodobý prenájom alebo lízing neobmedzenému DHCP.

Ako spúšťať úlohy na pracovníkovi

To je zaujímavá oblasť a tam je niekoľko overených metód pre spracovanie úlohy na pracovníka. Tu som si len diskutovať o dva najviac zrejmé:

  • Trvalo bežiaci skript: skript, či už je to skript, alebo PHP skript je prevedený raz na pracovníkovi a beží ako súčasť nekonečnej slučke. Ja som túto metódu diskontovaných ako jedna havárie scenáre a potenciálne vaši zamestnanci prestane fungovať bez nejakého zásahu.
  • Cron na báze skriptu: každých X minút cron démon štartuje volanie skriptu dostať sa diať veci. Bez nejakej kontroly by to mohlo viesť k mnohým toľko kópií svojho behu skriptu pracovníkov.

Moje rozhodnutie bolo ísť s cronu, ktorý začína shell skript každých 10 minutes. Môj skript vykoná nasledujúce úlohy:

  1. Kúpte si zoznam procesov, a to pre grep 'PHP'. Ak nie je nájdený potom pokračujte.
  2. Zavolajte na pracovné kód, v mojom prípade by to bolo niečo, čo vychádza PHP
  3. Pracovník skript dokončí svoj beh
  4. Pripravení ísť znovu na ďalšie príslušné výzvy

Môj bash skript vyzerá asi takto:

  #! / Bin / sh
 Ak ps ax | grep-v grep | grep php> / dev / null
 potom
     echo "Práca je v súčasnej dobe spracovania výstupu"
 iný
     echo "práca nie je spustená, spustite teraz"
     php yourJobProcessingScript.php
 fi 

Poznámka: echo je takmer úplne zbytočné, ale môže pomôcť ďalšia osoba, ktorá príde, aby sa pokúsila upraviť.

, Ktorý uzavrie súbor z pracovníka virtuálneho stroja, rýchle, jednoduché a ľahko skopírovať do každého nového kusu hardvéru, ktorý ich prijal. "Múdrosť" z distribučnej sústavy, naozaj nie je v vizualizované OS, to celé robiť s kódom vytvorené na spracovanie pracovných miest, na pracovnom konfiguráciu a na tom, aby úlohu spustí v prípade potreby (napr. keď hostiteľ je nečinný ).

Nastavenie systému Windows inicializácia Robotníci

Prvou úlohou je prísť na príkaz potrebné na spustenie virtuálneho počítača z príkazového riadku Windows. Ak máte nainštalovaný VirtualBox v predvolenom umiestnení a vy ste pomenoval svoj ​​pracovný GridMachine potom príkaz načítanie vášho pracovníka je:

  "C: \ Program Files \ nie. \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Avšak na spustenie skriptu v 'bezhlavým' stavu musíme použiť:

  "C: \ Program Files \ nie. \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - VRDP = off 

Tým sa spustí virtuálny stroj bez GUI a nechajte ju uložiť stav elegantne. Druhý argument sa vypne PRV tak to nie je v rozpore s Windows RDP, alebo vám správu o načúva na porte 3389. Virtuálny stroj meno je malé a veľké písmená!

Ďalej budeme potrebovať nastaviť okna až k naštartovaniu náš pracovník VM, akonáhle stroj bol nečinný. K tomu (na Windows XP), budete musieť ísť na Štart -> Všetky programy -> Príslušenstvo -> Systémové nástroje -> Naplánované úlohy ako je uvedené nižšie:

Naplánované úlohy

Potom kliknite na "Pridať naplánovanú úlohu", po ktorom prechádzať pridať vlastný program. Prejdite do VBoxManage skriptu a kliknite na tlačidlo OK. Naplánovať úloha pre niektorú z možností (ak budeme to zmeniť za minútu) a pokračovať. Po preskočenie na ďalšiu obrazovku Windows sa vás opýta, ktorý chcete spustiť túto úlohu, tak by som navrhnúť režime "Administrator 'alebo vytvorenie nového privilegovaný užívateľ. Pamätajte, že nechceme zasahovať do štandardného účtu pracovníkov na zariadenia v každom bode. Kliknite na tlačidlo Ďalej a skontrolujte Ukázať pokročilé možnosti pre túto úlohu.

Ak chcete do konca behu textového poľa pridať náš reťazec 'startvm GridMachine' a zabezpečiť, aby beh len pri prihlásení je vľavo unticked. Navštívte plánu ďalšiu úlohu a zmeniť plán klesnúť až na voľby "pri nečinnosti", zvoliť dobu, po ktorú si prajete stroj nečinnosti pred prechodom na ďalšiu záložku.

Nakoniec Zrušte voľbu, ktorá uvádza, zastaviť úlohu, ak bol spustený X množstvo času, ale zaškrtnite možnosť zastaviť úlohu, ak stroj nie je nečinný.

naplánovať

To je to potom pre nastavenie hostiteľského systému Windows!

Zhrnutie

V tejto časti sme vytvorili virtuálny stroj, aby konala ako pracovník, rovnako ako spôsob, ktorým hovoríme a spúšťať skripty naše pracovné spracovanie (pre seba PHP skript). Odtiaľ sa pozrieme na to, ako nastaviť naše kópie Windows spustiť do virtuálneho počítača v bezhlavom režime, keď je počítač nečinný stane, a uložiť svoj stav, keď užívateľ obnoví využitie stroja. Dúfajme, že na tomto mieste vidíte, aké jednoduché je vytvoriť taký systém a svrbenie sa dostať niektoré experimenty sa deje!

Nabudúce

V časti 4 sa budeme pozerať na použitie nástroja s cieľom zabezpečiť, že používate najnovšiu verziu kódu a dátových zdrojov tak, aby získané výsledky sú vždy aktuálne s najnovšími obchodných informácií a logiky.

Úrad Grid Computing pomocou virtuálnych prostredí - Časť 1

Tým, a piatok 4Prosinec 2009 11:23 pm

Úvod

Pracujem vo firme, kde sme sa spustiť mnoho dávkových úloh spracovanie milióny záznamov dát každý deň a ja som nedávno premýšľal o všetkých tých strojov, ktoré sa nachádzajú okolo každého a každý deň nič nerobiť niekoľko hodín. Nebolo by dobré, keby sme mohli používať tieto stroje k posilneniu výpočtového výkonu našich systémov? V tomto súbore článkov budem sa pozerať na potenciálnych výhodách zamestnávanie kancelársku sieť pomocou virtualizované prostredia.

Ako PHP developer budem používať nástroje, ktoré používam každý deň a to Linux, MySQL , PHP, VirtualBox a podvracanie (Slov.). Avšak dúfam, že tento sprievodca vám prispôsobí do iných jazykov a technológií rovnako dobre.

Riešenie som poskytujú bude veľmi voľne založený na type spracovanie by sme potrebné dosiahnuť však to nemusí byť pravda v priebehu celého článku, ako budem meniť veci pre jednoduchosť, alebo produkovať viac zaujímavé scenáre použitia.

Tieto virtualizovaného prostredia bude bežať na počítačoch s Windows, pretože to je to, čo väčšina kancelárií spustiť. Spracovanie, ktoré sa do kancelárskych strojov by nemala zasahovať zamestnancovi za použitie týchto strojov by nevyžadujú žiadnu údržbu na stroji, a musí byť ľahko nasaditeľné na nové stroje, akonáhle budú k dispozícii. Tiež by nové virtuálne stroje nevyžaduje žiadnu ďalšiu konfiguráciu, pretože to výrazne znižuje škálovateľnosť a jednoduché, pri ktorej môže byť rozšírené distribučná sústava.

Prečo Nasadenie Office Computing Grid?

Po prvé si môžu myslieť, prečo stačí použiť cloud computingu, ako zdroj EC2 platformy Amazon ? No dôvody, môže byť niekoľko, napríklad:

  • Nebudete zveriť niektoré údaje na životné prostredie cloud computingu
  • Nemôžete dať určité dáta do prostredia cloud computingu z právnych dôvodov (napr. údaje o odchode zo zeme), prípadne z právnych dôvodov, napr NHS záznamov.
  • Chcete, aby vaše riadiacej jednotky ukončiť a mať plnú kontrolu nad hardvérom príliš
  • Nemáte projektu finančné prostriedky na spustenie inštancií cloud
  • Vaša kancelária nemá pripojenie k internetu, a preto to nie je možné použiť cloud zdroje
  • Nemáš rád dážď, mraky naznačujú, dážď, preto budete mať ďaleko

Som si istý, zoznam by mohol pokračovať, ale myslím, že to stačí.

Výhody na Grid Computing Office

Dobre, poďme urobiť nejaké matematiku (av pravom fyziky štýlu umožňuje vykonať niektoré radikálne predpoklady). Predstavte si, že majú veľkú svalnatý spracovanie server beží 100 úloh za deň. V kancelárii máte 50 strojov, ktoré sú nečinné 16 hodín denne, každý z týchto strojov je 10% ako silný ako svalnatý spracovanie sever. (Všetky výsledky tu sú zaokrúhlené na podceňovať zvýšenie výkonu).

Takže, 1 stroj * 10% výkonu * 2/3 = 0,067 času, tj o 1 pracovnej plochy spracovanie v nečinnosti môže spracovávať plných 6 úloh za deň.

Ak teraz meradlo toto hore za 15 voľných počítačov pre spracovanie ako mnoho úloh za deň, ako Vám hlavné technologické server robí.

Takže v našej kancelárii predstierať, 50 strojov sme mohli rozšíriť naše výpočtový výkon servera od 1 do 4 plné spracovanie serveroch, alebo by sme mohli byť spracovanie úloh za deň 400 miesto zo 100 možných.

Oznámenia, pretože žiadna investícia do nového hardvéru vaša firma práve zvýšila jej šarže spracovateľské kapacity 4 krát! Potenciálne sa chystáte zvýšiť spotrebu energie, ale z väčšiny kancelárskych prostrediach Bol som strojov sú všeobecne odišiel na noc tak, aby ste mohli vidieť ako zelené iniciatívy.

Ďalšie výhody tiež znamenať, že investície do novej (alebo aktualizované) spracovanie servery môžu byť odložené, ak vaše kancelárske stroje sú dostatočné a že, ako si vylepšiť silu vašich kancelárskych strojov vaša kancelária sieť stala silnejšou automaticky.

Technológia

Čo budete potrebovať? (Alebo presnejšie čo som použiť):

  • Idle kancelárske stroje (v mojom prípade náhradnej staré Windows XP notebook)
  • VirtualBox (alebo iný virtualizačný softvér klienta)
  • Virtuálny stroj s PHP, MySQL running beží zrezané OS, volám týchto mojich Limp servery :)
  • Práca na spustenie
  • Pracovný server (môže byť iný virtuálny stroj niekde)

Typické Zamestnanie

Typy úloh, ktoré tento systém je určený pre prácu je nasledujúci:

  • Systém dostane zoznam dát, na ktorých musíme zápas a vrátiť výsledky
  • Zodpovedajúce zahŕňa kontrolu / hľadať niekoľko (skôr statické) zdroje dát
  • Výsledky zo zdrojov údajov môže požadovať ďalšie potvrdenie, zlúčenie, kontrola ďalších zdrojov údajov v reakcii na výsledky
  • Dáta sa vrátil s vyhľadaných záznamov, plne potvrdená a spracovaná
  • Každý záznam v zamestnaní je nezávislá od ostatných

Takže v podstate sa pozeráme na bežiaci úlohy, ktoré vyžadujú zmes vyhľadávanie v databázach, a nejaké číslo chrumkavý a celkom typický scenár, vo firemnom prostredí.

Grid riešenia sú nielen výhodné pre spracovanie úloh tohto typu. V podstate môže každý postup, ktorý možno rozdeliť na samostatné jednotky prebiehať paralelne. Pozri tento wikipedii pre príklady a ďalšie informácie: Grid Computing , ale pár známych príkladov je Seti @ Home a BIONC . Existujú rámca pre prevádzku výpočtových sietí, a to sú rovnako stojí za to do.

Čo budeme dosiahnuť?

Na konci týchto článkov Dúfam, že sa ukazuje, že nasadenie kancelárskej siete nemusí byť veľmi nákladné alebo časovo náročné. Budem diskutovať:

  • Nastavenie pracovnej kontrolný systém, pracovné konfigurácie
  • Vytváranie vhodného spracovania virtuálny stroj
  • Ako nastaviť systém na počítač so systémom Windows
  • Zabezpečenie, že používate najnovšie kód a dáta
  • Nasadenie a benchmarking
  • Pri pohľade do budúcnosti

Budem budova (ok som postavil, tak to písal) príklad aplikácie vyskúšať koncepcie na lokálnom počítači používajúcim Windows XP a môj Hasičské GridMachine 'virtuálny stroj. Mojou úlohou kontroly server bude môj hlavný stroj, ktorý beží Fedora 11 .

To sa v žiadnom prípade určený na preukázanie plne funkčný spoľahlivý systém, jeho znamenalo viac demonštrácii a diskutovať o tom, že tieto veci sa dajú dosiahnuť v pomerne krátkom čase a za nízku cenu. Prosím, neváhajte a pošlite mi nejaké pripomienky, opravy a vylepšenia, a ja v mojich silách, aby tento článok aktualizovaný, aby zodpovedal.

Nabudúce

V časti 2 sa mi začať tým, že pri pohľade na systém riadenia pracovných miest, a pozrite sa na to, ako by mala práca byť nakonfigurovaný tak, aby bolo dosiahnuté čo najväčšie množstvo spracovanie a súčasne zabezpečiť, že každá práca je spracovaná bez výnimky.

Úrad Grid Computing pomocou virtuálnych prostredí - Časť 2

Tým, a piatok 4Prosinec 2009 11:23 pm

Úvod

Pracujem vo firme, kde sme sa spustiť mnoho dávkových úloh spracovanie milióny záznamov dát každý deň a ja som nedávno premýšľal o všetkých tých strojov, ktoré sa nachádzajú okolo každého a každý deň nič nerobiť niekoľko hodín. Nebolo by dobré, keby sme mohli používať tieto stroje k posilneniu výpočtového výkonu našich systémov? V tomto súbore článkov budem sa pozerať na potenciálnych výhodách zamestnávanie kancelársku sieť pomocou virtualizované prostredia.

V časti 1 Dal som prehľad o systéme a technológií budem používať, rovnako ako prediskutovala niektoré z možných dôvodov, prečo by ste chceli vytvoriť kancelárskej siete.

Job Control

Pokiaľ bude bežiaci úlohy potom budete potrebovať nejaký spôsob, ako ich riešiť. Vašou úlohou riadiaci systém (na vašom pracovnom serveru) musí byť naozaj dobre premyslený ešte predtým, než pokusom o spustenie programu balíka Office mriežku. Tak za prvé, aké sú úlohy pre systém riadenia práce:

  • Rozdávať prácu na žiadosť zamestnanca
  • Povedzte pracovníkov, aký typ úlohy na spustenie
  • Sledovanie práce
  • Uistite sa, že úlohy sú spustiť iba raz
  • Poskytnúť pracovné dát pre pracovníkov, alebo aspoň povedať, kde ho získať

Systém musí byť tiež rozšíriteľná riešenie, ktoré funguje zatiaľ v jednom prípade môže byť predĺžená spustiť niekoľko typov pracovných miest, ako je podnikanie vidí hodnotu v mriežke riešenia. Napríklad, práca získať priority, viac ako jeden druh povolania môžu existovať (tj niekoľko kód základne), prípadne môžete dokonca spustiť niekoľko rôznych pracovníka stroje, ktoré sú optimalizované pre každý typ zamestnania (aj keď to sa vzdiali od generický liek pracovníka "nápad). Vždy sa snažím premýšľať o budúcnosti pri vývoji systémov, môže krátkodobo viesť k videniu dlhodobejšie frustráciu a navýšenie rozvojovej čas.

Pracovný server

Budeme potrebovať niekde kontrolovať našu prácu od, malo by to byť jediný systém vo vašej sieti, ktorá má pevnú Resource Locator, byť to, že IP adresa, meno počítača, URL (pomocou internej DNS), atď Je to preto, pracovníci potrebujú vedieť, kde hľadať prácu, pracovníci musia nájsť zamestnanie kontrolný systém (nie je úlohou riadiaci systém nájsť pracovníkov).

Práce server sám o sebe nie je naozaj zložitá úloha (v základnom systéme tak ako tak), je potrebné uložiť zoznam miest, ruku pracovných miest, obdrží výsledky a následne ich uložiť na neskoršie použitie. Ako sú definované tieto časti (napr. "ruku zamestnanosti"), 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.

Neexistuje žiadny dôvod potom, že vaša práca serveru nemôže byť virtuálny stroj beží v rámci hlavného spracovania servera, ak nie je kanalizácia príliš veľa zdrojov, z nej. Práca serveru však nie je potreba vysokej dostupnosti, pokiaľ to ide dole v piatok večer vy budete stratiť celý víkend spracovania, prípadne vás to stálo pár týždňov v hodnote spracovanie času (v porovnaní s hlavným spracovanie samotného servera) . Možno budete chcieť, aby zvážila svoje pracovné server na zaťaženie vyvážené prostredie pre vysokú dostupnosť.

Základné nastavenie

Základné nastavenie pre nášho servera práce bude skladať z toho, čo Volám jeden z mojich Limp serverov (to je Li Nux, m ySql, P HP). Kód bežiaci na pracovníkov Thea bude skutočne fungovať, čo práce to môže bežať interakcií s databázou s úradmi práce riadiaceho systému. Neskôr by sme mohli vytvoriť webovú službu a skutočne vyplácajú pracovných miest skôr než mať pracovníci Ťažkú prácu sami, ale teraz budeme pokračovať v používaní princípe KISS (Keep It Simple, Stupid!).

Takže, poďme vytvoriť tri MySQL tabuľky sa vysporiadať s pracovnými miestami. Tie budú práce ``, `jobRecords` a `jobResults`.

pracovných miest tabuľky Tu som pomocou SQL Buddy veľký trochu alternatívu k phpMyAdmin len preto, že jeho ľahšiu inštaláciu na CentOS (pre ostatné viď: 10 Veľké alternatívy k phpMyAdmin )

Táto tabuľka sa skladá z 5 jednoduchých polí,

  • id: Jedinečná identifikácia prácu
  • Meno: Môže to byť klient odkaz, alebo ľubovoľný počet iných identifikátorov
  • Stav: Musíte vedieť, kde práca je, napr
    • 0: Nezačatie
    • 1: vyzdvihli sme
    • 2: Dokončené
  • started_by: Kto začal robiť svoju prácu? To nie je úplne nutné, ale je pekné mať. Ja by som navrhnúť, sledovanie pracovníkov podľa ich IP adresy v sieti
  • started_at: Kedy sa pracovník začať prácu? Sledovaním práce, ktoré neboli dokončené vo výške X dobu vieme, že je potrebné vyzdvihnúť prácu znovu a začať spracovanie iným pracovníkom. Pracovníci mohol zastaviť spracovanie / offline pre ľubovoľný počet dôvodov, výpadok prúdu, havárie, strata siete atď

Je to jednoduché, ako by táto tabuľka byť predĺžená až na niekoľko ďalších oblastí, čo umožňuje sledovanie štatistík, čo je cieľový čas stĺpca, ako dlho trvalo práce, počítadlo, koľko pracovníkov zdvihol práci (zrejme to potrebuje skôr 1), práca prioritou, možno zoznam pokračovať ďalej a ďalej. In more complex job scenarios it would be possible to specify how much memory the worker would need access to (and therefore only use suitable workers), or even what type of worker would be required.

Lets add a few example jobs:

example jobs

The next table again is quite simple to understand, these are our job records. They are linked to the main jobs table by a column `jobs_id`. The make up of this table very much depends on the data that you need to supply to your workers, lets make a very simple example where we have four columns:

  • id: ID of the record
  • name: Person's name
  • address: Person's address
  • jobs_id: The job ID that this record is linked to

The third and final table consists of a results table, it has much the same make up as our records table, and with the addition of some columns could be part of the records table:

  • job_record_id: Link the result to the job table
  • result: The result data

…and that's all you need for job control! (albeit at a very basic level) In my case I'm pointed to another table where my data to process was located, but this could just as easily been a file, parameters to run simulation code, you name it.

Selecting a job

As stated previously, the workers will do our job management for us for now, so all we need to really do is find a job that needs processing and get the information. How would we do this? Well pick our job selection criteria and look for jobs, in SQL I did the following:

  1. Take any jobs that are not marked as complete but from our worker and reset them (substitute __ME__ with an identifier, easiest would be IP address):
     UPDATE `jobs` SET `status` = 0 WHERE `status` = 1 AND `started_by` = __ME__; 
  2. Using our job selection criteria, select a job and tell the control system that this worker is dealing with it:
     UPDATE `jobs` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW() WHERE `status` = 0 OR
    (`status` = 1 AND `started_at` > DATE_SUB(NOW(), INTERVAL X HOUR)) ORDER BY `id` ASC; 

    By grabbing jobs that haven't returned results in X amount of time we ensure that all jobs are run in the event of a worker crashing or going AWOL.

  3. Next grab the jobs details followed by the records themselves:
     SELECT * FROM `jobs` WHERE `started_by` = __ME__ LIMIT 1;
    SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Upon completion of the job we insert our result records and mark the job as complete. Remember as jobs can suspend/resume at any time allow for some robustness in your script. It might be that the task suspends half way through updating the job control system, so checking the number of records in a job and the number of results saved back to the job control system would be a wise move.

In addition, whilst this demonstrates how jobs can be selected and managed from an SQL-query frame you should really be abstracting your job control so that if you decide to switch to using a web service, a file based system, XML , or any other number of systems it will not affect the code above it.

Job Configuration

The next aspect to consider is job size and configuration. By playing with job configuration we can strike an excellent balance between speed, process replication, and reliability. Take a couple of scenarios:

  1. Jobs take 1 day each to run: This means that your workers need 15 days to process each job (remember 10% of the power for 2/3rds of the time). This is clearly not a wise configuration, your job size is way too big! It would take at least double the time to get a job processed should the initial worker go AWOL (time to pick up that it hasn't returned a result plus reprocessing time). In an ideal you'd have at least one full job easily cleared by the end of each long idle period, that way you keep the jobs ticking over and at worst case a job would take two days to process should the first go missing.
  2. Práca sa 1 minútu bežať: To znamená, že vaši zamestnanci trvať asi 15 minút bežať každú prácu. Aj keď to spočiatku môže zdať ideálne, získate ďalšie pracovné spracovanie v čase obeda, coffee breaky, schôdzky, atď Tento scenár kladie tlak na ďalšie oblasti vášho systému a zavádza svoje vlastné problémy. Napríklad, najprv sa vaše nastavenia / doba spracovania pomer sa chystá ísť priamo dole, teda strácajú účinnosť systému. Vaša sieť bude neustále streamovanie pracovných informácií medzi rôznymi pracovníkmi frustrujúce personálu, ktorí sú dong ich každodennú prácu. Tie tiež bude klásť väčšie nároky na serveri zamestnanie spracovanie, pretože musí naservírovať veľa a veľa malých kúskov práce na pravidelnom základe. Napokon, v tejto situácii, ak vaša práca server zlyhá budete vytvoriť obrovský zadný protokol nedokončenú prácu vzhľadom k tomu, väčších pracovných miest by v pokračovaní konania blažene nevedomí, že úloha server bol do problémov.

V skutočnosti tam bude nikto ideálne konfigurácie pre nastavenie siete, veľa záleží na dostupných zdrojoch, druh zamestnania, pracovná doba odozvy požiadavky a 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ý pracovník môže prejsť najmenej 3-4 pracovných miest v období 15 hodín (najdlhšia doba nečinnosti pravdepodobné)
  • Hrajte s pracovným veľkosti tak, aby nastavenie času stáva celkom zanedbateľné v porovnaní s dobou spracovania (pri zohľadnení vyššie uvedených bodov).
  • Ak úloha nie je dokončená v dvojnásobné množstvo času (možno menej) môžete očakávať, že na dokončenie predpokladať, že jeho preč dezertoval a začať spracovávať iným pracovníkom. To znamená, že budete musieť počkať až na trojnásobok normálnej dobu práce na jej dokončenie (možno aj dlhšie, ak následné práce zlyhá). Možno budete chcieť znížiť túto dobu, ale dávajte pozor, aby ho znížiť príliš veľa, ako môžete začať duplikácie spracovanie úlohy na pravidelnom základe.
  • Práce by mali byť nezávislé na externé požiadavky čo možno najviac. Práce server, napríklad by mal byť kontaktovaný na začiatku a na konci každej práci.
  • Nie saturovať svoju sieť, bude to mať dva negatívne dopady, bude vaše denné pracovníci nájsť pomocou siete frustrujúce a problémy môžu nastať s pripojenie časového limitu problém, ktorý sa bude len zhoršovať, ako si škálovanie siete.
  • Zaisťujú pracovné miesta môže bežať na vašich pracovníkov. Ak je práca príliš náročné na pamäť a miesto na disku intenzívnej práce začne končím, a jediná vec, ktorú si všimnete, je pokles počtu pracovných miest nejakú žiadny skutočný dôvod.

Pošlite nám Výsledky prácu

Pri predkladaní výsledkov práci je dôležité skontrolovať, že výsledky neboli predložené iným pracovníkom, a to najmä v prípade, že súčasný pracovník spiace na nejakú dobu.

Ak sú výsledky nám zabezpečí, že počet výsledkov zodpovedá 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 pracovných výsledkov vyhľadávania a podriadenosti. Pracovníci môžu (a pravdepodobne bude) prejsť do režimu spánku v najnevhodnejšej časov, a to musí byť postarané. Tiež opäť abstrahovanie preč vaše výsledky podanie pomôže uspokojiť budúce zmeny v systéme práce kontrolného oveľa jednoduchšie riešiť.

Zhrnutie

V tomto section sme sa zamerali na to, čo práca Control Server musí urobiť a ako sa dostať veľmi základné nastavenie systému. Diskutovali sme o tom, ako získať prácu z riadiaceho systému a ako čo najlepšie nastaviť pracovné miesta, aby čo najviac našich vášho systému kancelárskej siete. Na záver bol predstavený nový odsek alebo dva na predkladanie výsledkov späť na server pre ovládanie úloh.

  • Riadenie úlohy server spravuje pracovných miest a zaisťuje, že všetky pracovné jednotky sú dokončené
  • Abstrahovaním svoju prácu select / Výsledky podanie môžeme zmeniť technológiu konanie bez väčších problémov serveru
  • Konfigurácia svoju prácu, aby zabezpečili, že sa bežať rýchlo a efektívne, bez príliš veľký tlak na sieťovej infraštruktúry, a bez zdvojovanie spracovanie úloh na pravidelnom základe.
  • Uistite sa, že budete stavať odolnosť proti chybám a chyby checking do svojich postupov, môžu pracovníci pozastaviť a obnoviť a najnevhodnejšej časov. Nezabudnite skontrolovať, či výsledky už boli predložené iným pracovníkom.

Nabudúce

V časti 3 sa budeme vytvárať náš virtuálny stroj pre spracovanie a nastaviť naše Windows stroja, aby sa stal nečinnosti úväzok.

Úrad Grid Computing pomocou virtuálnych prostredí - Časť 5

Tým, a piatok 4Prosinec 2009 11:03 pm

Úvod

Pracujem vo firme, kde sme sa spustiť mnoho dávkových úloh spracovanie milióny záznamov dát každý deň a ja som nedávno premýšľal o všetkých tých strojov, ktoré sa nachádzajú okolo každého a každý deň nič nerobiť niekoľko hodín. Nebolo by dobré, keby sme mohli používať tieto stroje k posilneniu výpočtového výkonu našich systémov? V tomto súbore článkov budem sa pozerať na potenciálnych výhodách zamestnávanie kancelársku sieť pomocou virtualizované prostredia.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. Takže,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Nasadenie

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Stop!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

The virtual machine was set up with PHP, subversion, and mySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.













Panorama Téma, ktoré Themocracy

6 visitors online now
4 guests, 2 bots, 0 members
Max návštevníkov dnes: 19 v 05:00 UTC
Tento mesiac: 26 v 04-04-2012 10:27 GMT
This year: 69 at 27-02-2012 09:56 am UTC
Za celé obdobie: 130 28-03-2011 10:40 hod v UTC