Dinamiškai pridėti puslapių Zend_Navigation konteinerį ne Runtime

, Iki , ketvirtadienis sausis 7, 2010 10:50 pm

Dėl paskutinio mano postą apie Zend_Navigation, tęsti maršruto prašymų sitemap.xml muitinės kontrolierius / veiksmų , šis pranešimas yra apie dymnamically pridėti puslapius taroje Runtime / Script'o paleidimo Zend_Navigation.

Jos visos gerai ir gerai, nurodant savo puslapius Ini arba XML failo, bet tam tikru momentu jūs ketinate keičia savo svetainės puslapius, kad jūs norite, kaip meniu, Sitemap, ar bus įtraukti į jūsų naršymo kelias takas. Todėl tai, ką reikia padaryti, tai pridėti puslapius mūsų Zend_Navigation taroje runtime. Kaip pavyzdį galima būtų pridėti naujienų, dienoraščio, ar puslapio komentarus ir pan.

Toliau skaityti "Dinamiškai pridėti puslapių Zend_Navigation taroje runtime" »

Maršruto prašymai sitemap.xml užsakymą valdytojo / Veikla

, Trečiadienis 6 sausis 2010 12:13 am

Kad tiesioginių prašymų / sitemap.xml užsakymą valdytojo ir veiksmų savo Zend Framework taikymo tiesiog pridėkite šiuos jūsų application.ini arba alternatyviąją config failą (pvz., aš naudoti navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = Indeksas
 resources.router.routes.sitemap.defaults.action = Svetainės struktūra

Pavyzdys kodas, išvedė gali matyti sukurti ieškinį atitinkamame valdytojui (pvz. mano svetainės struktūra yra indekso valdytojo, Sitemap veiksmų):

 < Php
 klasė IndexController
     išplečia Zend_Controller_Action
 {
     / **
      * Teikia Zend_Navigation setup remiantis Sitemap
      * /
     public function sitemapAction ()
     {
    	 echo $ this-> view-> navigaciją () -> Svetainės ();
    	 $ This-> view-> išdėstymas () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (teisinga);
     }
 }

Sitemap gali greitai ir lengvai gaminama naudojant Zend_Navigation , puikus greitai samouczku (ir apskritai labai naudinga Zend Framework samouczków) yra Zend tvarsčiai - Dinamiškai sukurti meniu Sitemap ir džiūvėsėliai .

Zend Framework už modulio pagrindu nustatymai

Autorius , penktadienį 1. sausio 2010 10:40 pm

Aš sukūriau tokį Taip pat į šį postą, kuris reikalauja mažiau konfigūracijos, žr modulis Remiantis išdėstymas - Zend Framework .

Jei naudojate Zend Framework su moduliais, jos akivaizdu, kad jei jūs naudojate įvairius (sub-) - off toje pačioje paraiškoje jūs nebūtinai nori tuos pačius išdėstymo scenarijus kiekvienai daliai. Aš nusprendė eiti su šios svetainės struktūrą:

  / Taikymas
     (Arba) valdikliai
         ...
     / Modeliai
     / Modules
         / Default
             (Arba) valdikliai
             / Išdėstymas
                 Arba scenarijai
             / Views
                 Arba scenarijai
         / AnotherModule
             ...
     Arba scenarijai

Problema buvo įsteigti išdėstymo scenarijus už modulio pagrindu. Atsakymas atėjo naudojantis veiksmų padėjėjas. Įsteigti maketus už modulio pagrindu apima tris žingsnius:

  1. Application.ini (ar panašios konfigūracijos nustatymas):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ Moduliai / admin / maketai ir (arba) scenarijus"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ Moduliai / default / maketai ir (arba) scenarijus"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / maketai ir (arba) scenarijus"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ Moduliai / partnerių / maketai ir (arba) scenarijus" 
  2. Sukurti savo veiksmų Helper:
      <? Php
     / **
      * Nustato išdėstymo kelią už modulio pagrindu
      *
      * @ Author. Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Nuo 2010-01-01
      * /
     klasė Pro_Controller_Action_Helper_SetLayoutPath
         išplečia Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Nustato išdėstymas kelias modulis
          * /
         public function preDispatch ()
         {
        	 $ Module = $ this-> getRequest () -> getModuleName ();
    
    	     jei ($ savirankos = $ this-> getActionController ()
    	                        -> GetInvokeArg (Bootstrap ")) {
    
    	         $ Config = $ savirankos-> getOptions, ();
    
    	         if (isset ($ config [$ modulis] ['išteklių'] ['išdėstymas'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ modulis] ['išteklių'] ['išdėstymas'] ['layoutPath "];
    	             $ This-> getActionController ()
    	                  -> GetHelper (išdėstymas ")
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Ir galiausiai boostrap veiksmų pagalbininkas:
      ...
         / **
          * Nustato skriptus maketams už modulio pagrindu
          * /
         apsaugotas funkcija _initLayoutHelper ()
    	 {
    	     $ This-> savirankos ("frontController);
    	     $ Išdėstymas = Zend_Controller_Action_HelperBroker :: addHelper (
    	         naujas Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doktrina: DATETIME nutylėjimą DABAR. ()

Autorius , trečiadienis 30 gruodžio 2009 06:30

Aš jau kovoja su duomenų bazės schemą naujam Zend Framework projekto. naudojant bando naudoti doktrinos ORM savo duomenų bazių modelius. Man reikia schemos, kad ji man leido nustatyti numatytąją datą ir laiką `Datetime" skiltyje, pavyzdžiui, kai pridedate naują pranešimą gaunu einamosios timestamp. Po daug ieškoti ir eksperimentuoti aš rasiu sprendimą, todėl aš ją dalintis.

Savo schemos yaml failą tiesiog atlikite šiuos veiksmus:

 Žinutė:
   Actas:
     Timestampable:
       sukurta:
         vardas: created_at "
         tipas: laiko žymos
         formatas: YMD H: i: s
       atnaujintas:
         vardas: last_updated
         tipas: laiko žymos
         formatas: YMD H: i: s
   stulpeliai:
     numeris:
       Tipas: integer
       pirminio: tiesa
       autoincrement: tiesa
     vardas: string (255)
     pašto adresas: string (300)
     žinutė: string (2000)

Jei, kita vertus, jūs nenorite, `updated_at` stulpelį, galite naudoti taip:

 Žinutė:
   Actas:
     Timestampable:
       sukurta:
         vardas: created_at "
         tipas: laiko žymos
         formatas: YMD H: i: s
       atnaujintas:
         neįgaliesiems: tiesa
   stulpeliai:
     numeris:
       Tipas: integer
       pirminio: tiesa
       autoincrement: tiesa
     vardas: string (255)
     pašto adresas: string (300)
     žinutė: string (2000)

PHP Design Patterns - Stebėtojas Pattern

, Iki , antradienis 29. gruodžio 2009 10:02

Aš jau svarstymo Head First Design Patterns neseniai ir nusprendė parašyti kai kurie iš šablonų PHP pavyzdžių savo pačių naudai. Pirmasis, kad aš nusprendė kodas Stebėtojas Šablonas . Formalus apibrėžimas stebėtojų Pattern:

Stebėtojas modelis (asinchroninio poaibis publikuoti / prenumeruoti modelis ) yra programinės įrangos dizaino modelis, kurio objektas , vadinamas objektas, išlaiko savo išlaikytinių, vadinamų stebėtojai, sąrašą, ir praneša juos automatiškai jokius valstybinius pokyčių, paprastai paskambinus vienas jų metodai . Jis daugiausia naudojamas įgyvendinti platinami renginio tvarkymo sistemas.

Sistemos tampa silpnai, todėl įsitikinkite, kad kai įvykis atsitinka, yra informuoti visas sistemas, kurios reikalauja žinių apie šiuos atnaujinimus. Pavyzdžiui, dienoraštyje, po išsaugojimo pareigas, gali tekti atnaujinti paieškos sistema (pvz., lucene), atnaujinti mūsų sitemap, žymių, elektroninio pašto pasirašiusios vartotojai ir tt stebėtojas modelis leidžia kūrėjams pridėti papildomų klausytojus be redaguoti savo pastebimą objektą . Įpurškiant į dalyko (ty dienoraštyje redagavimo sistema) stebėtojus, ty paieškos variklis atnaujinimas stebėtojas, Sitemap Generator ir tt), mes galime leisti atlikti visus reikalingus atnaujinimus, be jokių pakeitimų.

Tęsti svarstymas PHP dizaino modelius - stebėtojas modelio "»

Biuro Tinklelis Kompiuterija naudojant virtualias aplinkas - 4 dalis

, penktadienis 4. gruodžio 2009 23:59,

Įvadas

Aš dirbu bendrovėje, kur mes paleisti daug partijos darbo vietų perdirbimo milijonus įrašų duomenų kiekvieną dieną ir aš galvoju neseniai apie visų mašinų, kurie sėdi aplink kiekvieną dieną, kelias valandas nieko nedaryti. Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Šiame straipsnių rinkinyje aš norėčiau pažvelgti į galimą naudą, dirba biuro tinklo, naudojant virtualised aplinką.

3 dalyje mes sukūrėme mūsų virtualios apdorojimo mašinos ir įsteigti langai mašinos tapti nenaudojamas darbo dieną dirbantys darbuotojai.

Veikia naujausią kodą

Neišvengiamai sukūrus savo darbuotojus verslo logika bus pakeisti, klaidų bus rasti, greičiau, efektyviau kodas bus gaminami paliekant Jūsų darbuotojai sėdi aplink, duomenų apdorojimo, naudojant seną smirdantis kodą . Kaip tada mes siekiame, kad mes visada naudojate naujausią ir geriausią variantą mūsų perdirbimo scenarijų?

Yra keli labai paprasti paprastų būdų, kaip galėtume tai padaryti, triukas, tačiau yra sumažinti duomenų apdorojimo galia ir tinklo eismo pasiekti šį tikslą. Leidžia pradėti su paprasčiausias sprendimų ir tobulinti jį lėtai, per keletą iteracijų.

Pirmasis būdas būtų tiesiog prisijunkite prie mūsų darbo kontrolės serveryje per samba, FTP, ar panašiu) ir išgriauti naujausią versiją kodą. Ne labai efektyvus, bet ji atliks savo darbą. Leidžia pagerinti, kad šiek tiek, kaip apie rsync, kuria scenarijų kūrimo ir naudojant, kad kiekvieną kartą, o ne? Arba kas mūsų naujausią apdorojimo scenarijų apie išleidimą į Subversion kodą iš pradžių patikrinti ir tada tiesiog atnaujiname mūsų kodą į kiekvieno reiso metu svn update )?

Galų gale mes gali baigti su bash scenarijus, vadinamas cron kas 10 minučių), kuris atrodo taip paprasta, kaip šis:

  #! / Bin / sh
 jei PS kirvis | grep-v grep | grep PHP > / dev / null
 tada
     echo "Darbo šiuo metu apdoroja, išėjimą"
 kitas
     echo "Darbo neveikia, pradėkite dabar"
     cd / kelias / iki / darbo / nukopijuoti
     svn update
     Php yourJobProcessingScript.php
 internetu 

Dabar galime būti tikri, kad su kiekvieno reiso metu mes tikrai veikia naujausią kodą. Mes užtikriname, tai atnaujinti savo kodą bazę kiekvieną kartą mes atlikti yra paleisti ir mažinti tinklo srautą tik perduoti mūsų tinklo failų skirtumus.

Mano demonstravimo setup, aš tiksliai, kaip nurodyta pirmiau. Subversion buvo įdiegta mano darbo apdorojimo serverio ir aš tiesiog iškedentas naujausią kodą iš filialo "darbuotojas", naudojant "svn update". Aš taip pat pridūrė, versijos numerį žymę mano perdirbimo scenarijų, kuris buvo grąžintas į duomenų bazę kaip Rezultatai grįžta. Tokiu būdu aš galėjau pamatyti, kad mano kodas buvo atnaujinamas kiekvieną kartą aš nukopijavote mano liemenį į darbuotojų filialų, ty, kad aš tikrai buvo įdiegta naujausia apdorojimo scenarijų.

Naudojant naujausius duomenis

Jei jūsų darbas perdirbimas pasinaudoja duomenų šaltinių, tada tam tikru momentu jie turi būti atnaujintas per. Nebent Jūs skambinate savo duomenų šaltinius labai nedažnai jūs ketinate potvynių savo tinklą su eismo kuo greičiau atlikti savo darbą pradeda veikti, todėl viskas į aklavietę. Mano sprendimas, aš nusprendžiau, kad norėčiau perkelti savo duomenų šaltinius aplink su mano VM.

Laikykite esate arkliai ten! Ką daryti, jei mano duomenų šaltiniai yra huge? Na tai tikrai yra, kiek duomenų mes kalbame? Tai gali būti labiau rentabilios įdiegti papildomą didesnį kietąjį diską į kiekvienos mašinos, nei įsigyti papildomą apdorojimo serverį. Šis klausimas yra biudžeto ir iki verslo sprendžia. Tai gal, kad jūsų duomenų šaltiniai yra tokia didelė, kad jos tiesiog neįmanomos išlaikyti tą kiekį duomenų iš savo darbuotojų mašinų. Tokiu atveju ką tu darytum? Na mes galėtume pažvelgti į, paskambinus vietos duomenų serverį, bet tai gali sukelti problemų su tinklu. Šiuo atveju tinklelis, kaip ši sistema gali tapti nerealus įtraukti į savo biuro aplinkoje. Ji taip pat gali būti, kad jūs galite ieškoti alternatyvių veikia strategijų, pavyzdžiui, tik paskambinus savo darbuotojus tarp 8pm ir 6 val. Kiekvieną naktį ir / arba Greičio duomenų šaltinio prašo.

Perėjimas ant leidžia pasakyti mūsų duomenų šaltinių kiekį 100GB duomenų. Na taip, kad tai gana bitų duomenų judėti tinklo atnaujinimą. Kaip mes užtikriname, kad mes turime naujausius Šiuo atveju duomenų kopiją? Rsync yra galimybė, bet asmeniškai aš manau, kad veikia savo naujausią duomenų šaltinio, jūsų darbo pasiūlymų apdorojimo serverį ir sukonfigūruoti šią replikacija kapitono su gražus ilgo bin žurnale) gali būti kelias:

replikacija , Kuriame kiekvienas iš Jūsų darbuotojų darbo kontrolės serverio atnaujinimus į jūsų duomenų šaltinių, kaip vergas nuvarvėti gražiai į savo darbuotojų be tinklo veikla labai padidėti (tai yra, jei jums atlikti didžiulį duomenų atnaujinimą ir visi jūsų darbuotojai ateityje vienu metu). Tai turi privalumų palyginti su rsync, kad jūs negalite gauti ilgą pauzę prieš kiekvieną darbą, duomenų bazės atnaujinimus, jūsų darbuotojo MySQL demonas nuolat atnaujinti savo duomenis, o toliau apdorojimas.

Tai, kaip aš nustatyti savo demonstracinį serverį. Norėdami nustatyti replikaciją aš apie MySQL svetainėje vadovą nustatymas replikacija ), ir per 20 minučių aš turėjau pakartoti inital darbuotojui darbo kontrolė serverių duomenų rinkinį. Už kiekvieną papildomą darbuotojo dubliavimo nustatymai ir procesas dirbo kiekvieną kartą, kai V. buvo nukopijuotas.

Santrauka

Šioje straipsnio dalyje aptarėme, kaip lengvai ir neskausmingai ji yra išlaikyti savo duomenų apdorojimo kodą, iki šiol pagal using rsync ar subverion (SVN) atlikti darbą ir sumažina tinklo srautą tuo pačiu time. Mes taip pat aptarė, kaip išlaikyti savo duomenų šaltinio informaciją up-to-date leisti nuvarvėti vienas iš jūsų darbuotojų. Taigi mes sritis užtikrinant, kad mes nuolat mūsų biuro energetinę sistemą su verslo logika ir informacijos. Be to, be abejo, yra daugybė alternatyvų atlikti šias užduotis, bet čia buvo du paprasti pavyzdžiai rodo, kaip lengva sprendimas atvykti.

Kitą kartą

Baigiamajame šios serijos dalis, taikliai pavadintas 5 dalis , mes aptarsime diegti šią sistemą. Aš apibendrinti, kas buvo išmokta ir kas man pavyko sukurti.

Biuro Tinklelis Kompiuterija naudojant virtualias aplinkas - 3 dalis

, Iki , penktadienis 4. Gruodis 2009 11:37 pm

Įvadas

Aš dirbu bendrovėje, kur mes paleisti daug partijos darbo vietų perdirbimo milijonus įrašų duomenų kiekvieną dieną ir aš galvoju neseniai apie visų mašinų, kurie sėdi aplink kiekvieną dieną, kelias valandas nieko nedaryti. Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Šiame straipsnių rinkinyje aš norėčiau pažvelgti į galimą naudą, dirba biuro tinklo, naudojant virtualised aplinką.

2dalies mes pažvelgė darbo vietų serveris bus paleisti, ir kaip darbo vietų turėtų būti konfigūruojamas, kad būtų pasiekti didžiausią kiekį perdirbti, tuo pačiu užtikrinant, kad kiekvienas darbas yra tvarkomi be uždelsimo.

Įsteigti savo darbuotojui - ar Limp serveris

Kitas žingsnis šiame procese yra sukurti savo virtualų darbuotojus. Dėl to aš ketinu naudoti CentOS naudojant VirtualBox įrenginį. Aš ketinu įdiegti MySQL ir PHP serveryje, taip pat žinomas kaip šlubuoti Li Nux, M ySQL, P AG) Servera aš galėjo padaryti, kad vardas iki).

  • Įdiekite VirtualBox ant jūsų Windows mašina (sekite nuorodą)
  • Atsisiųskite ir įdiekite CentOS (dabartinė versija 5.3) per sukurtos virtualios mašinos

Nėra prasmės man vyksta tai ten tikriausiai 1000 "puikių samouczków ten gerai, štai vienas: kūrimas ir Managing CentOS virtualios mašinos pagal VirtualBox ). Svarbu pažymėti, Aš manau, kad yra kad aš vadinama mano virtuali mašina GridMachine.

Kiek mano virtualizavimo kliento ir operacinės sistemos pasirinkimas eiti nėra didelis svari priežastis, dėl kiekvieno pasirinkimo. VirtualBox yra kažkas, ką aš naudoju mano namų mašina ir palaiko trijų pagrindinių operacinių sistemų. Aš pasirinkau savo geros stabilios OS CentOS kaip ir aš naudoju jį savo savo žiniatinklio serveryje. Aš esu didis tikintysis darbui tinkamus įrankius (nors aš "naudoti greičiausias ir lengviausias jūs mentaliteto čia), tad jei operacinės sistemos X paleidžia kodą greičiau ir efektyviau naudoti, kad vietoj :)

Svarbu įsitikinti, kad jūsų VM naudoja DHCP, kitaip už kiekvieną naują virtualią mašiną, atskirai turėtų būti konfigūruojamas, kuri yra tai, ką mes neturime want.By naudojate DHCP mums nereikia konfigūruoti tinklo nustatymus individualiai darbuotojo mašinų, DHCP ranka jums dėmesį IP. Todėl jūs galite kopijuoti savo virtualią mašiną apie biuro be nerimauti nustatyti kiekvieną iš jų (tai pagerina lankstumą ir mažina darbuotojų administravimą).

Procesas, Jums reikėtų siekti, kad būtų gauti naują fizinį mašina, įdiegti VirtualBox, ir tada beveik panaudoti virtualų vaizdą be daug kitu. Jis gali būti protinga, setup visus savo darbuotojus kitame potinklyje, kad jūs bent jau gali pamatyti, kiek mašinos veikia. Jūs taip pat turite nustatyti savo mašinos ilgalaikei nuomai arba neribotam nuomos DHCP.

Kaip paleisti Darbas darbuotojo

Tai įdomi sritis ir tvarkymo darbuotojo darbo vietas, yra keletas svarbių metodai. Čia aš tik aptarti du akivaizdžiausias:

  • Nuolat veikia scenarijų: scenarijus, tai būtų apvalkalo scenarijus, arba PHP scenarijų yra vykdomas vieną kartą darbuotojo ir veikia kaip begalinis ciklas. Aš diskontuotų šį metodą kaip vieną katastrofos scenarijų ir potencialiai jūsų darbuotojai nustos veikti be tam tikra intervencija.
  • Cron pagrįstą scenarijų vykdymas: kas X minučių demonas Cron prasideda, paskambinti į jūsų scenarijų gauti dalykų vyksta. Be kai tikrinant tai gali sukelti daug daug kopijų jūsų darbuotojų scenarijų važiuoti.

Mano sprendimas buvo eiti su cron, kuris prasideda apvalkalo scenarijus kas 10 minutes. Mano apvalkalo scenarijus atlieka šias užduotis:

  1. Gaukite procesų sąrašą ir grep tai už "PHP". Jei nėra tada tęsti.
  2. Paskambinkite savo darbo kodą, mano atveju tai būtų kažkas PHP
  3. Darbuotojų scenarijus baigia jo paleisti
  4. Pasiruošę eiti vėl kitą atitinkamą kvietimą

Mano bash scenarijus atrodo maždaug taip:

  #! / Bin / sh
 jei PS kirvis | grep-v grep | grep PHP> / dev / null
 tada
     echo "Darbo šiuo metu apdoroja, išėjimą"
 kitas
     echo "Darbo neveikia, pradėkite dabar"
     Php yourJobProcessingScript.php
 internetu 

Pastaba: echo yra beveik visiškai beprasmiška, tačiau gali padėti kitam asmeniui, kuris ateina kartu išbandyti ir juos redaguoti.

Tai daroma išvada, darbuotojo virtualioje mašinoje, greitas, paprastas ir lengvai kopijuoti į kiekvieną naują Aparatinė kad gauna. Tinklų sistema "gudrumą" tikrai nėra yra matomas OS, jos visos su kodo, sukurto proceso darbo vietų, darbo vietų konfigūraciją, ir įsitikinkite, kad darbas eina, kai (ty, kai priimančioji yra nenaudojamas ).

Įsteigti darbuotojus Initialise Windows

Pirmoji užduotis yra dirbti reikia paleisti virtualios mašinos Windows komandinės eilutės komandą. Jei įdiegėte VirtualBox į numatytąją vietą ir jūs pavadino savo darbuotojų GridMachine tada komanda privalo pakrauti savo darbuotoją:

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

Tačiau paleisti scenarijų "begalvis", mes turime naudoti:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe" startvm GridMachine - vrdp = išjungta 

Tai bus pradėti virtuali mašina be GUI ir leidžia išsaugoti valstybę grakščiai. Antrasis argumentas išsijungia KPP, todėl ji nėra konfliktas su Windows KPP, ar suteikti jums žinutę apie klausymas dėl uosto 3389 virtualios mašinos pavadinimas yra didžiosios ir mažosios raidės!

Be to, mes reikia nustatyti langus nusimesti mūsų darbuotojas VM kartą mašina buvo nenaudojamas. Norėdami tai padaryti (Windows XP), jums reikia eiti Start -> All Programs -> Accessories -> System Tools -> Reguliarieji Užduotys, kaip nurodyta toliau:

planuojami uždaviniai

Kitas spustelėkite ant "Pridėti numatytas užduotis", po naršyti pridėti pasirinktinę programą. Vykti į jūsų VBoxManage scenarijų ir spustelėkite Gerai. Planuokite savo užduotį, bet iš variantų (mes tai pakeisti per minutę) ir toliau. Po praleidimo kitą ekraną langai paprašys kas norite paleisti šią užduotį, Norėčiau pasiūlyti arba "Administratorius" arba sukurdami naują vartotojo teisėmis. Atminkite, mes nenorime kištis į standartinio personalo sąskaitos mašinos, bet kuriame taške. Spustelėkite šalia ir patikrinti rodyti pažangias galimybes atlikti šią užduotį.

Į run laukelį pabaigoje pridėti savo "startvm GridMachine" eilutę ir užtikrinti, kad paleisti tik tada, kai prisijungęs paliekamas neatžymėtą. Aplankykite tvarkaraštį, užduotį ir keisti grafikas nukristi iki galimybe ", kai nenaudojamas", pasirinkite, kiek laiko jūs norite, mašina turi būti nenaudojamas, prieš pereinant prie kito skirtuko.

Galiausiai untick variantą, kuriame teigiama, sustabdyti užduotį, jei ji veikia X laiko, bet neturi pažymėkite parinktį, jei norite nutraukti šią užduotį, jei mašina ne ilgiau nenaudojamas.

planuoti

Tai tada Windows priimančiosios sąrankos!

Santrauka

Šioje dalyje mes sukūrėme virtualų mašina veikti kaip darbuotojo, taip pat būdus, kuriais mes vadiname ir vykdyti savo darbo apdorojimo scenarijus (pats PHP skripto). Iš čia pažvelgti, kaip sukurti savo kopijas Windows paleisti virtualios mašinos, Headless režimu, kai kompiuteris tampa neaktyvus, ir išsaugoti savo valstybę, kai vartotojas atnaujina mašinos naudojimą. Tikimės, kad bent šiuo klausimu matome, kaip paprasta yra sukurti tokią sistemą ir niežulys gauti kai kurie eksperimentai vyksta save!

Kitą kartą

4 dalyje mes ieškoti naudojant įvairias priemones, siekiant užtikrinti, kad jūs naudojate naujausią versiją kodo ir duomenų šaltinių, kad gauti rezultatai yra visada up-to-date su naujausia verslo informacija ir logika.

Biuro Tinklelis Kompiuterija naudojant virtualias aplinkas - 1 dalis

, Iki , penktadienis 4. Gruodis 2009 11:23 pm

Įvadas

Aš dirbu bendrovėje, kur mes paleisti daug partijos darbo vietų perdirbimo milijonus įrašų duomenų kiekvieną dieną ir aš galvoju neseniai apie visų mašinų, kurie sėdi aplink kiekvieną dieną, kelias valandas nieko nedaryti. Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Šiame straipsnių rinkinyje aš norėčiau pažvelgti į galimą naudą, dirba biuro tinklo, naudojant virtualised aplinką.

Kaip PHP programuotojo aš ketinate naudoti įrankius, kad aš naudoju kiekvieną dieną, ty, Linux, MySQL , PHP, VirtualBox ir Subversion (SVN). Tačiau aš tikiuosi, kad šis vadovas padės pritaikyti lygiai taip pat kitomis kalbomis ir technologijomis.

I tirpalas bus labai laisvai grindžiamas perdirbimo tipo mes kurią reikia pasiekti, tačiau tai negali būti tiesa, per visą straipsnį, kaip aš keisti dalykų paprastumo, arba gaminti daugiau įdomių naudojimo scenarijus.

Šie virtualised aplinka bus paleisti kompiuteriuose su Windows, nes tai nei dauguma biurų paleisti. , Kad biuro mašinų perdirbimas padaryti, neturėtų trukdyti darbuotojams, naudojant tos mašinos, turėtų reikalauti, neturi palaikyti mašinos, ir būti lengvai dislokuojamos į naujus įrenginius, kai jie taps prieinami. Be to, naujos virtualios mašinos nereikalauja jokios papildomos konfigūracijos, nes tai labai sumažina lankstumą ir paprastumą, kuris tinklo sistema gali būti pratęstas.

Kodėl Diegti Office Kompiuterija Tinklelis?

Pirma jums gali būti galvoja, kodėl gi ne tiesiog naudokite cloud computing išteklių, tokių kaip Amazon EC2 platforma ? Na priežasčių gali būti keletas, pavyzdžiui:

  • Jums nereikės patikėti tam tikrus duomenis cloud computing aplinkoje
  • Jūs negalite įdėti į cloud computing aplinką tam tikrus duomenis dėl teisinių priežasčių (pvz., duomenų išvykstant iš šalies), galbūt dėl ​​teisinių priežasčių, pavyzdžiui, NHS įrašų.
  • Jūs norite išsaugoti jūsų perdirbimo padalinius uždaryti ir visiškai kontroliuoti aparatūros
  • Jūs neturite projekto lėšų paleisti debesys atvejus
  • Jūsų biure neturi turėti ryšį su internetu, ir todėl jos neįmanoma naudoti cloud išteklių
  • Jūs neturite patinka lietus, debesys rodo lietų, todėl jūs nuolat gerokai toliau

Aš tikiu, kad šis sąrašas galėtų tęstis, bet manau, kad užteks dabar.

Privalumai Computing Grid "Office"

Na, leidžia daryti keletą matematikos ir tiesa fizikos stilius leidžia padaryti keletą valymo prielaidas). Įsivaizduokite, kad jūs turite didelį raumeningas apdorojimo serverio 100 darbo vietų per dieną. Jūsų biure turite 50 mašinų, kurios yra nenaudojamas 16 valandas per parą, kiekvienas iš šių mašinų yra 10%, kaip galingas kaip jūsų raumeningas perdirbimo Sever. (Visi rezultatai čia apvalinama iki neįvertina našumo pagerėjimas).

Taigi, 1 mašina * 10% galia * 2/3 laikas = 0,067, ty 1 darbalaukio tvarkymas prastovos laiką galėtų apdoroti 6 visas užduotis per dieną.

Jei dabar masto tai padaryti, ji imasi 15 Nenaudojamą darbastalių apdoroti, kaip daug darbo vietų per dieną, kaip jūsų pagrindinė perdirbimo serveris.

Taigi mūsų apsimesti biuro 50 mašinų galėtume padidinti mūsų duomenų apdorojimo galia nuo 1 serverio iki 4 perdirbimo serverių, ar ​​mes galime būti perdirbti, o ne 100 400 darbo vietų per dieną.

Pranešimas, be investicijų į naują įrangą bendrovė neseniai padidino savo paketinio apdorojimo gebėjimus 4 kartus! Potencialiai jūs ketinate padidinti savo elektros energijos naudojimą, bet iš daugelio biurų aplinkoje buvau mašinų paprastai paliekama per naktį vistiek, kad galėtumėte pamatyti tai kaip žalia iniciatyvos.

Kiti privalumai taip pat reiškia, kad investicijos į naujus (ar atnaujinti) apdorojimo serveriai gali būti atidėtas, jei jūsų biuro mašinos yra pakankama ir kad, kaip jums pagerinti savo su biuro mašinomis galią jūsų biure tinklelis tampa galingesnis automatiškai.

Technologijos

Kas jums reikia? (Arba tiksliau ką aš naudoju):

  • Neveikos biuro mašinos (mano atveju atsarginių metų Windows XP nešiojamas)
  • VirtualBox (arba kitą virtualizavimo kliento programinė įranga)
  • Virtuali mašina su PHP, MySQL running veikia iškirsti OS, aš paskambinus šių mano Limp serverius :)
  • Darbams paleisti
  • Darbo serveris (virtualioji mašina gali būti dar kažkur)

Tipiniai darbo vietų kūrimo

Darbo vietų, kad ši sistema skirta paleisti rūšys yra keičiamas taip:

  • Sistema gauna duomenų sąrašą, ant kurios mes turime suderinti ir grąžinti rezultatus
  • Suderinimas apima tikrinimo / paieškos kelias (beveik nekinta) duomenų šaltinius
  • Duomenų šaltinių rezultatai gali reikalauti tolesnio patvirtinimo, sujungti, tikrinimo papildomais duomenų šaltiniais, reaguojant į rezultatus
  • Duomenys grįžo su atitinkamais įrašais, visiškai pasiteisino ir tvarkomi
  • Kiekvienas darbo rezultatai yra nepriklausomi nuo kitų

Taigi, iš esmės mes ieškome ne veikia darbo vietas, kurios reikia duomenų bazių paieška mišinį ir kai kurių skaičius crunching, gana tipiškas scenarijus verslo aplinkoje.

Grid sprendimai yra ne tik naudinga apdoroti šio tipo darbo vietas. Iš esmės, bet koks procesas, kuris gali būti padalytas į nepriklausomus vienetus gali būti vykdomos lygiagrečiai. Žiūrėti šį Wikipedia pavyzdžių ir daugiau informacijos: Grid Computing , tačiau pora žinomų pavyzdžių yra SETI @ Home ir BIONC . Yra sistema veikia skaičiavimo tinklus, ir tai yra gerai verta pasidomėti.

Ką mes pasiekiame?

Iki šių straipsnių pabaigoje Tikiuosi, kad parodyti, kad diegti biuro tinklelį nereikia būti labai brangu arba laiko. Aš ketinu aptarti:

  • Įsteigti darbo kontrolės sistemą, darbo vietų konfigūracija
  • Sukurti tinkamą perdirbimo virtualios mašinos
  • Kaip sukonfigūruoti sistemą Windows kompiuteryje
  • Užtikrinti jūs naudojate naujausią kodą ir duomenis
  • Įdiegimas ir lyginamoji analizė
  • Žvelgiant į ateitį

Aš būsiu pastatas (ok, aš pastatė, tada parašė šią) pavyzdys taikymas, vietinį kompiuterį naudojate Windows XP ir mano "GridMachine" virtualią mašiną patikrinti sąvokas. Mano darbo kontrolė serveris bus pagrindinis mano mašina, kuri veikia Fedora 11 .

Tai jokiu būdu nėra skirta įrodyti visiškai veikiančią patikimą sistemą, jos reiškė daugiau demonstracijoje ir aptarti rodo, kad šie dalykai gali būti pasiektas per pagrįstai trumpą laiką ir su nedidelėmis sąnaudomis. Prašome atsiųsti man kokių nors pastabų, pataisos, arba tobulinti ir aš darysiu viską, kad išlaikyti šį straipsnį, atnaujintą suderinti.

Kitą kartą

2dalies aš pradėti ieškoti darbo kontrolės sistemos, ir pažvelgti į tai, kaip darbo vietų turėtų būti konfigūruojamas, kad būtų pasiekti didžiausią kiekį perdirbti, tuo pačiu užtikrinant, kad kiekvienas darbas yra tvarkomi be uždelsimo.

Biuro Tinklelis Kompiuterija naudojant virtualias aplinkas - 2 dalis

, Iki , penktadienis 4. Gruodis 2009 11:23 pm

Įvadas

Aš dirbu bendrovėje, kur mes paleisti daug partijos darbo vietų perdirbimo milijonus įrašų duomenų kiekvieną dieną ir aš galvoju neseniai apie visų mašinų, kurie sėdi aplink kiekvieną dieną, kelias valandas nieko nedaryti. Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Šiame straipsnių rinkinyje aš norėčiau pažvelgti į galimą naudą, dirba biuro tinklo, naudojant virtualised aplinką.

1 dalyje Aš daviau aš būsiu naudojant taip pat aptarti kai kurie iš galimų priežasčių, kodėl jūs norite sukurti biuro tinklelį sistemos ir technologijų apžvalgą.

Darbo kontrolė

Jei ketinate veikia darbo vietas, tada jūs ketinate reikia kažkokiu būdu valdyti. Jūsų darbas kontrolės sistema (jūsų darbo pasiūlymų serveryje) turi būti labai gerai apgalvoti dar prieš bandant paleisti biuro tinklelį. Taigi, pirma, kas yra darbo kontrolės sistemos uždaviniai:

  • Ranką prašymu iš darbuotojų darbo vietas
  • Pranešti darbuotojus, kokio tipo darbo vietų paleisti
  • Sportiniai darbo vietų
  • Užtikrinti, kad darbo vietų paleisti tik vieną kartą
  • Pateikite darbuotojų pareigybių duomenis, arba bent pasakykite jiems, kur jį gauti

The system also needs to be extensible, a solution that works for now in a single case may be extended to run several types of jobs as the business sees the worth in a grid solution. For example, jobs may gain priorities, more than one job type may exist (ie several code bases), eventually you may even run several different worker machines that are optimised for each type of job (although that does move away from the 'generic worker' idea). Always try to think about the future when developing systems, a short term vision can lead to longer term frustration and increased development time.

Job Server

We're going to need somewhere to control our jobs from, this should be the only system in your grid that has a fixed resource locator, be that an IP address, host name, URL (using internal DNS), etc. This is because the workers need to know where to look for jobs, workers need to find the job control system (not the job control system find the workers).

The job server itself doesn't really have a complicated task (in a basic system anyhow), it needs to store a list of jobs, hand out jobs, receive results, and subsequently store them for later retrieval. How these parts (such as 'hand out jobs') are defined can be very basic. Later on we can extend the system to include an administration interface to add, edit, delete, suspend jobs but this is beyond this exercise.

There is no reason whatsoever then that your job server could not be a virtual machine running within your main processing server provided it doesn't drain too many resources from it. The job server however does need high availability, if it goes down on a Friday evening you're going to lose a whole weekend of processing, potentially costing you a couple of weeks worth of processing time (when compared to your main processing server alone). You may want to consider putting your job server on a load balanced environment for high availability.

Basic Setup

The basic setup for our job server will consist of what I'm calling one of my LiMP servers (that is Li nux, m ySql, P HP). The code running on the workers will actually work out what jobs it can run by interacting with with job control system databases. Later on we could create a web service and actually hand out jobs rather than having the workers do the hard work themselves, but for now we'll continue using the KISS principle (Keep it Simple, Stupid!).

So, lets create three mySQL tables to deal with jobs. These will be `jobs`, `jobRecords`, and `jobResults`.

jobs table Here I'm using SQL Buddy a great little alternative to phpMyAdmin just because its easier to install on centOS (for others see: 10 Great alternatives to phpMyAdmin )

This table consists of 5 simple fields,

  • id: Uniquely identify the job
  • name: Could be a client reference, or any number of other identifiers
  • Status: You need to know where the job is at, eg
    • 0: Not started
    • 1: Picked up
    • 2: Completed
  • started_by: Who's started doing the job? This isn't entirely required but is a nice to have. I'd suggest tracking workers by their IP address on your network
  • started_at: When did the worker start the job? By tracking jobs that have not completed within X amount of time we know we need to pick up the job once again and start processing by another worker. Workers could stop processing/go offline for any number of reasons, power failure, crash, network loss, etc.

It is easy how this table could be extended with a few additional fields to allow for statistics tracking, a finish time column to see how long the job took, a counter to see how many workers picked up the job (obviously this needs to tend to 1), job priority, the list can go on and on. 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. Jobs take 1 minute to run: This means that your workers take about 15 minutes to run each job. Whilst this may initially seem ideal, you gain additional work processing during lunch time, coffee breaks, meetings, etc this scenario puts strain on other areas of your system and introduces its own problems. For example, firstly your setup/processing time ratio is going to go right down, therefore losing system efficiency. Your network is going to be constantly streaming job information to the various workers frustrating staff who are dong their day to day work. You're also going to put more strain on your job processing server as it has to dish out lots and lots of small pieces of work on a regular basis. Lastly, in this situation if your job server goes down you're going to create a huge back log of uncompleted work whereas bigger jobs could of continued processing blissfully unaware that the job server was experiencing difficulties.

In reality there will be no one ideal configuration for your grid setup, much depends on the available resources, types of job, job turnaround time requirements, network capability, and so on. However some guidelines would be:

  • Size jobs so that each worker can get through at least 3-4 jobs in a period of 15 hours (the longest likely idle time period)
  • Play with the job size so that setup time becomes fairly insignificant compared to the processing time (bearing in mind the above point).
  • If a job doesn't complete in double the amount of time (maybe less) you expect it to complete it assume that its gone AWOL and start processing it with another worker. This means you may have to wait up to three times the normal length of a job for it to complete (possibly longer if the subsequent job fails). You may want to reduce this time, but be careful not to reduce it too much as you may start duplicating processing tasks on a regular basis.
  • Jobs should be independent of outside requirements as much as possible. The job server, for example, should only be contacted at the start and end of every job.
  • Don't saturate your network, this will have two negative effects, your daytime staff will find using the network frustrating and problems may be experienced with connections timing out a problem that will only get worse as you scale your grid.
  • Ensure jobs can run on your workers. If jobs become too memory intensive or disk space intensive jobs will start aborting and the only thing you'll notice is a drop in number of jobs processed with no real reason why.

Submitting Results of a Job

When submitting the results of a job it is important to check that results have not been submitted by another worker, especially if the current worker has been dormant for some time.

When results are submitted ensure that the number of results matches the number of records within the job.

As stated previously, and can not be over emphasised, build fault tolerance into job retrieval and results submission. The workers can (and most likely will) go into suspend mode at the most inconvenient of times and this needs to be catered for. Also once again abstracting away your results submission will help cater for future changes to your job control system much easier to deal with.

Santrauka

In this section we have looked at what a job control server needs to do and how to get a very basic system set up. We discussed how to retrieve a job from the control system and how best to configure jobs to get the most our of your office grid system. To finish, a paragraph or two on submitting results back to the job control server was presented.

  • A job control server manages jobs and ensures that all work units are completed
  • By abstracting your job select/results submission we can change the technology of the control server without much problems
  • Configure your jobs to ensure that they are run quickly and efficiently without putting too much pressure on your network infrastructure, and without duplicating processing tasks on a regular basis.
  • Ensure that you build fault tolerance and error checking into your routines, workers can suspend and resume and the most inconvenient of times. Remember to check if results have already been submitted by another worker.

Next time

In part 3 we'll create our virtual processing machine and set up our windows machines to become idle-time workers.

Biuro Tinklelis Kompiuterija naudojant virtualias aplinkas - 5 dalis

, Iki , penktadienis 4. Gruodis 2009 11:03 pm

Įvadas

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

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. Taigi,

  • 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.

Dislokavimas

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" tema pagal Themocracy

5 lankytojai internete dabar
4 Svečiai, 1 botai, 0 nariai
Max lankytojai šiandien: 13 07:30 pm UTC
Šį mėnesį: 18, 07-05-2012 04:35 pm UTC
Šiais metais: 69 27-02-2012 09:56 am UTC
Visas laikas: 130, 28-03-2011 10:40 pm UTC