Kategorija: PHP

Maršrutas prašymus sitemap.xml užsakymą valdytojas / veiksmų

, trečiadienis 6 sausis 2010 12:13 esu

Kad tiesioginiai prašymai / sitemap.xml užsakymą kontroleris ir veiksmus savo Zend Framework tiesiog pridėkite savo application.ini arba alternatyviąją konfigūracijos failo (pvz., aš naudoti navigation.ini) taip:

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

Pavyzdžiui kodą, išvedė sukurti kontrolieriaus veiksmų (pvz., mano Sitemap yra indeksas valdytojas, Sitemap) gali būti vertinamas:

 < PHP
 klasės IndexController
     išplečia Zend_Controller_Action
 {
     / **
      * Teikia Svetainės Zend_Navigation sąrankos
      * /
     viešoji funkcija sitemapAction ()
     {
    	 echo $ this-> view-> Navigacija () -> Svetainės ();
    	 $ This-> view-> maketą () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (teisinga);
     }
 }

Sitemaps, gali greitai ir lengvai būti generuojami naudojant Zend_Navigation , labai greitai samouczku (ir apskritai labai naudinga Zend Framework, vadovėliai) , Zend casts - Dinamiškai sukurti meniu struktūra ir džiūvėsėliai .

Zend Framework už modulių nustatymai

, penktadienis sausio 1 d. 2010 10:40 pm

Aš sukūriau followup į šį pranešimą, kuris reikalauja mažiau konfigūracijos, žr modulis pagrįstas išdėstymas - Zend Framework .

Jei naudojate Zend Framework moduliai, akivaizdu, kad, jei jūs naudojate įvairius (sub-) svetaines ne ta pati paraiška, jūs nebūtinai nori to paties išdėstymo scenarijus kiekvienai daliai. Aš nusprendė eiti su svetainės struktūrą:

  / Taikymas
     / Valdikliai
         ...
     / Modelių
     / Moduliai
         / Nutylėjimą
             / Valdikliai
             / Išdėstymas
                 / Scenarijus
             / Peržiūros
                 / Scenarijus
         / AnotherModule
             ...
     / Scenarijus

Problema buvo įsteigti už modulių išdėstymo scenarijus. Atsakymas atėjo naudojantis veiksmų padėjėjas. Už modulių maketai nustatymas apima tris žingsnius:

  1. Application.ini (ar panašios konfigūracijos setup):
     admin.resources.layout.layoutPath = APPLICATION_PATH "/ modulių / admin / maketų / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ modulių / default / maketų / scenarijai" member.resources.layout.layoutPath = APPLICATION_PATH "/ moduliai / nario / maketų / scenarijai "affiliate.resources.layout.layoutPath = APPLICATION_PATH" / modulių / partnerių / maketų / scenarijai " 
  2. Sukurkite savo veiksmų Helper:
      <? Php
     / **
      * Nustato už modulių išdėstymo kelią
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Nuo 2010/1/1
      * /
     klasės Pro_Controller_Action_Helper_SetLayoutPath
         išplečia Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Nustato modulis pagrįstas išdėstymas kelias
          * /
         viešoji funkcija preDispatch ()
         {
        	 $ Module = $ this-> getRequest () -> getModuleName ();
    
    	     jei ($ bootstrapu = $ this-> getActionController ()
    	                        -> GetInvokeArg (bootstrapu ")) {
    
    	         $ Config = $ bootstrapu> 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 už modulių išdėstymas scenarijus
          * /
         protected function _initLayoutHelper ()
    	 {
    	     $ This-> bootstrapu (frontController ");
    	     $ Išdėstymas = Zend_Controller_Action_HelperBroker: addHelper (
    	         naujas Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doktrina: DATETIME default ()

Autorius , trečiadienis 30 dieną Gruodis 2009 m. 6:30 pm

Aš jau kovoja su duomenų bazės naują Zend Framework projekto. Aš esu naudojant bando naudoti doktrinos ORM savo duomenų bazės modeliai. Man reikia schemos, kad jis leido man nustatyti `datetime` stulpelio numatytąją datą ir laiką, pavyzdžiui, kai pridedate naują pranešimą gaunu dabartinę laiko žymos. Po daug ieškoti ir eksperimentuoti Radau sprendimas, todėl aš dalintis.

Savo schemą YAML failą, tiesiog atlikite šiuos veiksmus :

 Žinutė:
   Actas:
     Timestampable:
       Sukurta:
         pavadinimas: created_at
         tipo: timestamp
         formatas: YMD H: i: s
       atnaujintas:
         vardas: last_updated
         tipo: timestamp
         formatas: YMD H: i: s
   stulpeliai:
     ID:
       Tipas: integer
       pirminio: true
       autoincrement: tiesa
     vardas: string (255)
     elektroninio pašto adresas: string (300)
     pranešimas: string (2000)

Jei, kita vertus, jūs nenorite "updated_at" stulpelyje galite naudoti taip:

 Žinutė:
   Actas:
     Timestampable:
       Sukurta:
         pavadinimas: created_at
         tipo: timestamp
         formatas: YMD H: i: s
       atnaujintas:
         neįgaliesiems: tiesa
   stulpeliai:
     ID:
       Tipas: integer
       pirminio: true
       autoincrement: tiesa
     vardas: string (255)
     elektroninio pašto adresas: string (300)
     pranešimas: string (2000)

PHP dizaino modelius - stebėtojų Pattern

, Antradienis 29th gruodžio 2009 10:02 val

Aš jau svarstymo Head First Design Patterns neseniai ir nusprendė parašyti keletą šablonų PHP pavyzdžius savo naudai. Pirmasis, kad aš nusprendė kodą iki stebėtojo Šablonas . Oficialaus stebėtojos modelio apibrėžimas:

Stebėtojo modelis (asinchroninis pogrupį publikuoti / prenumeruoti modelis ) yra programinės įrangos dizaino šabloną , objektas, vadinamas temą, palaiko jo išlaikomų asmenų sąrašą, stebėtojai, ir praneša apie juos automatiškai pasikeičia bet kurios valstybės , paprastai telefonu vienas iš jų metodai . Jis daugiausia naudojamas įgyvendinti platinami renginio tvarkymo sistemos.

Kaip sistemos tapo silpnai susijusios įsitikinęs, kad kai įvykis atsitinka visų sistemų, kurios reikalauja žinių apie šiuos naujinimus yra informuojami. Pavyzdžiui, dienoraštyje, Įrašę paštu gali prireikti atnaujinti paieškos (pvz. Lucene), atnaujinti mūsų Sitemap, žodžius, elektroninio pašto pasirašyto vartotojai, ir tt stebėtojo modelis leidžia kūrėjams pridėti papildomų klausytojų be redaguoti savo stebimų objektą . Įpurškiant į temą (ty dienoraštyje redagavimo sistema) stebėtojų (ty paieškos atnaujinti stebėtojas, Sitemap Generator ir tt), mes galime leisti IT atlikti visus būtinus atnaujinimus be jokių pakeitimų.

Toliau svarstymo "PHP dizaino modelius - stebėtojų struktūra" »

Office Gridu naudojant virtualių aplinkų - 4 dalis

, penktadienis 4th gruodžio 2009 11:59 pm

Įvadas

Aš dirba įmonė, kur mes paleisti daug partijos milijonų įrašų duomenų tvarkymo darbo vietas kiekvieną dieną ir aš galvoju apie visus mašinos, sėdi aplink kiekvieną ir kiekvieną dieną keletą valandų nieko nedaryti . Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Į šį straipsnių rinkinį aš pažvelgti į galimą naudą įdarbinimo biuro tinklo , naudojant virtualised aplinką .

3 dalyje mes sukūrėme mūsų virtualios apdorojimo mašinos ir įsteigė langai mašinos tampa nenaudojamas laiko darbuotojų.

Veikia naujausias kodą

Sukūrus jūsų darbuotojams, verslo logika, neišvengiamai keisis, blakės, greičiau, efektyviau bus rasti kodas, kuris bus gaminamas taip sėdėjo aplink , duomenų apdorojimo , naudojant senas smirdantis kodas palikti savo darbuotojus. Kaip tada mes užtikrinti, kad mes visada naujausia ir geriausia versija mūsų perdirbimo scenarijus?

Yra keletas labai lengva paprasta būdų, kaip galėtume tai padaryti pavyko, tačiau, siekiant sumažinti duomenų apdorojimo galia ir tinklo eismo šiam tikslui pasiekti. Leidžia pradėti su sprendimų paprasčiausias ir pagerinti lėtai, per keletą iteracijų.

Pirmasis būdas būtų tiesiog prisijungti prie mūsų darbo kontrolė serverio (naudojant Samba, FTP, arba panašių) ir traukite žemyn naujausią kodą. Tai nėra labai veiksminga, tačiau ji atliks savo darbą. Leidžia patobulinti, kad šiek tiek, kaip apie rsync, kuria scenarijų kūrimo ir naudojimo, kad kiekvieną kartą, o ne? Arba kas mūsų naujausius perdirbimo scenarijų apie išleidimą į subversion kodą iš pradžių patikrinti ir tada tiesiog atnaujiname mūsų kodą į kiekvieną paleisti ( svn update ) ?

Galų gale mes su bash scenarijų (vadinamas cron kas 10 minučių), kuris atrodo taip paprasta, kaip gali baigtis:

  #! / Bin / sh
 jei kirvis ps | grep-v grep | grep Php > / dev / null
 tada
     echo "Darbas" šiuo metu apdoroja, išeiti "
 kitas
     echo "Darbo nėra, pradėkite dabar"
     cd / kelias / iki / darbo / kopija
     svn update
     Php yourJobProcessingScript.php
 FI 

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

Mano demonstravimo sąranką, aš lygiai taip pat, kaip aukščiau. Subversion buvo mano darbas apdorojimo serverį įdiegta ir "darbuotojas" filialas naudojant "svn update" Aš tiesiog iškedentas naujausią kodą iš. Aš taip pat pridūrė, versijos numeris tegus mano apdorojimo scenarijų, kuris buvo grąžintas į duomenų bazę kaip dalis rezultatų grąžinimo. Tokiu būdu galėjau pamatyti, kad mano kodas buvo atnaujinamas kiekvieną kartą aš nukopijavote mano liemens į darbuotojo, filialo, ty, kad aš tikrai buvo įdiegta naujausia apdorojimo scenarijų.

Naujausius duomenis naudojant

, Jei jūsų darbas perdirbimas pasinaudoja duomenų šaltinių, tada tam tikru momentu jie ketina būti atnaujintas per daug. Nebent Jūs skambinate savo duomenų šaltiniai labai retai jūs ketinate potvynių savo tinklą su eismo taip greitai, kaip jūsų darbuotojai pradeda veikti, kad viskas sustojo. Mano sprendimas, aš nusprendžiau, kad norėčiau perkelti savo duomenų šaltiniai aplink su savo LSS.

Laikykite jūs arklių ten! Ką daryti, jei mano duomenų šaltinių yra didžiulė? Na tai tikrai yra, kiek duomenų mes kalbame? Tai gali būti labiau rentabilios įdiegti papildomą kietąjį diską į kiekvienos mašinos, nei pirkti papildomo apdorojimo serverį . Tai biudžeto klausimą ir iki verslo nuspręsti. Tai gal, kad jūsų duomenų šaltinių yra tiek daug, kad jos tiesiog neįmanomos laikyti, kad duomenų kiekis jūsų darbuotojas mašinos. Tokiu atveju, ką jūs darytumėte ? Na mes galėtume pažvelgti skambinti vietos duomenų serverį, bet tai gali sukelti problemų su tinklo. Šiuo atveju energetinę sistemą, tokių kaip šis gali tapti nerealu įtraukti į savo biuro aplinkoje . Ji taip pat gali būti, kad jūs galite ieškoti į alternatyvias veiklos strategijas, pavyzdžiui, tik paskambinę į darbuotojus tarp 8pm ir 6am kiekvieną naktį ir / arba Greičio duomenų šaltinio prašymus .

Permainos tarkim mūsų duomenų šaltinių suma iki 100GB duomenų. Na taip, kad nemažai duomenų bitų judėti tinklo atnaujinimas. Kaip galime užtikrinti, kad mes turime naujausius duomenis kopiją šiuo atveju? Rsync yra galimybė, bet asmeniškai aš manau, kad rodyti savo naujausią duomenų šaltinio, jūsų perdirbimo serverio ir nustatyti šios operacijos kaip replikacijos meistras (gražus ilgas bin žurnalas) gali būti būdas eiti:

replikacijos Nustatyti kiekvienai savo darbuotojus kaip vergas darbo kontrolė serverio atnaujinimus savo duomenų šaltinių nuvarvėti gražiai į savo darbuotojus be daug daugiau tinklo veiklos (ty, jei jums atlikti didelius duomenų atnaujinimo ir visus savo darbuotojų ateityje vienu metu). Tai turi privalumų per rsync, kad jūs nebūtų gauti ilgą pauzę prieš kiekvieną užduotį; mysql demonas savo darbuotojui , kaip duomenų bazės atnaujinimus , nuolat atnaujinti savo duomenis, o apdorojimo toliau.

Tai, kaip aš mano demonstravimo serverio. Iki replikacijos MySQL svetainėje instrukciją ( steigimas replikacija ) ir per 20 minučių turėjau mano inital darbuotojas atkartojantis darbo kontrolė serverių duomenų rinkinį. Už kiekvieną papildomą darbuotojas dirbo replikacijos parametrus ir procesas, kiekvieną kartą, kai VM buvo nukopijuotas.

Santrauka

Šioje straipsnio dalyje aptarėme, kaip lengvai ir neskausmingai, ji yra laikyti savo duomenų apdorojimo kodą dienos using rsync ar subverion (SVN), padaryti darbą ir sumažina tinklo srautą tuo pačiu time. Mes taip pat aptarė, kaip išsaugoti jūsų duomenų šaltinio informacija, up-to-data, leisti nuvarvėti kiekvieno savo darbuotojų. Taigi mes sritį, užtikrinančią, kad mes nuolat su verslo logika ir informaciją mūsų biure energetinę sistemą. , Be abejo, nesuskaičiuojama daugybė alternatyvų atlikti šias užduotis, bet čia buvo du pavyzdžiai parodo, kaip lengvai sprendimas atvykti.

Kitą kartą

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

Office Gridu naudojant virtualių aplinkų - 3 dalis

, penktadienis 4th Gruodis 2009 11:37 pm

Įvadas

Aš dirba įmonė, kur mes paleisti daug partijos milijonų įrašų duomenų tvarkymo darbo vietas kiekvieną dieną ir aš galvoju apie visus mašinos, sėdi aplink kiekvieną ir kiekvieną dieną keletą valandų nieko nedaryti . Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Į šį straipsnių rinkinį aš pažvelgti į galimą naudą įdarbinimo biuro tinklo , naudojant virtualised aplinką .

2 dalis ieškojome darbo vietų, serveris veiks, ir kaip darbo vietų turėtų būti konfigūruojamas, kad pasiekti didžiausią sumą, tvarkymo ir tuo pat metu užtikrinant, kad kiekvienas darbas yra tvarkomi be nepavyks.

Įsteigti savo darbuotojui - ar Limp serverio

Kitas žingsnis šiame procese yra sukurti savo virtualų darbuotojų. Už tai aš ketinate naudoti CentOS naudojant VirtualBox įdiegimas. Aš ruošiuosi įdiegti MySQL ir PHP serverio, taip pat žinomas kaip Limp (Li Nux, m ySQL, P AG) Servera (aš gali turėti, kad pavadinimą iki).

  • Įdiekite jūsų Windows mašina VirtualBox (sekite nuorodą)
  • Parsisiųsti ir įdiegti Centos (dabartinė versija 5.3) sukurta virtuali mašina

Nėra jokios prasmės mane ketinate šį tikriausiai 1000 's puikus samouczków ten (ok, čia viena: kūrimas ir Managing Centos pagal virtualbox virtualioji mašina ). Svarbu pažymėti, manau, kad aš pašaukiau savo virtualios mašinos GridMachine.

Kiek mano pasirinkimų virtualizavimo kliento ir operacinę sistemą eiti, nėra didelis įtikinamų priežasčių, dėl kiekvieno pasirinkimo. VirtualBox yra kažkas, ką aš naudoju mano mašina, ir remia tris pagrindinius operacinės sistemos. Mane pasirinko kaip savo gera stabili OS, CentOS, ir aš naudoju jį savo interneto serveryje. Aš esu labai darbui tinkamus įrankius, tikiu (nors aš naudoti greičiausias ir lengviausias jūs mentalitetas čia), tad jei operacinės sistemos X veikia savo kodą greičiau ir efektyviau naudoti, kad vietoj:)

Svarbu tai įsitikinkite, kad jūsų VM naudoja DHCP, kitaip kiekvienos naujos virtualios mašinos būtų, reikia nustatyti atskirai, yra tai, ką mes neturime want.By naudojant DHCP mums nereikia konfigūruoti tinklo nustatymus individualiai darbuotojo mašinos, DHCP bus ranka Jums iš IP. Todėl jūs galite kopijuoti savo virtualios mašinos apie biure be nerimauti nustatyti kiekvienai iš jų (tai pagerina lankstumą ir sumažina darbuotojo administravimo).

Procesas turėtumėte siekti, kad būtų gauti naujas fizinės mašinos, VirtualBox įdiegti, ir tada beveik panaudoti be daug kitu virtualų įvaizdį. Jis gali būti protinga sukonfigūruoti jūsų darbuotojams kitą potinklį, kad galėtumėte bent pamatyti, kiek mašinų veikia. Jums taip pat reikės sukurti savo mašinos dėl ilgalaikės nuomos sutartį arba neribojama nuomos DHCP.

Kaip skaičiuoti darbo darbuotojas

Tai yra įdomi sritis, ir yra keletas svarbių perdirbimo darbuotojas darbo metodus. Čia aš tik aptarti du akivaizdžiausias:

  • Nuolat veikia scenarijų scenarijų, 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 skripto vykdymo: kas x minučių cron demonas prasideda skambutį į jūsų scenarijų gauti dalykų vyksta. Be kai kurių tikrinimas tai gali būti daug kopijų jūsų darbuotojui scenarijų veikia.

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

  1. Gaukite procesų sąrašą ir grep 'php'. Jei neradote, tada toliau.
  2. Paskambinkite savo darbą kodą, mano atveju tai būtų kažkas PHP pagrįstas
  3. Darbuotojų scenarijų baigia jo paleisti
  4. Pasiruošęs eiti dar kartą kitą į skambutį

Mano bash scenarijus atrodo maždaug taip:

  #! / Bin / sh
 jei kirvis ps | grep-v grep | grep Php> / dev / null
 tada
     echo "Darbas" šiuo metu apdoroja, išeiti "
 kitas
     echo "Darbo nėra, pradėkite dabar"
     Php yourJobProcessingScript.php
 FI 

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

Tai daroma išvada, darbuotojo virtualios mašinos, greitą, paprastą ir lengvai kopijuoti į kiekvieną naują Aparatinė kad yra gautas. Tinklo sistemos "protingumą", tikrai nėra vizualizuojami OS, visi daryti su kodą, sukurta darbo vietų, darbo vietų konfigūraciją, ir užtikrinti, kad darbas baigiasi, kai tinkama (ty, kai priimančiosios nenaudojamas procesas ).

Windows Initialise darbuotojų

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

  "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 = off 

Tai bus paleisti virtualios mašinos be GUI, ir leisti ją taupyti valstybės grakščiai. Antrasis argumentas išsijungia KPP, todėl jis neprieštarauja langai KPP, ar suteikti jums pranešimą apie klausantys 3389 virtualios mašinos pavadinimas yra didžiosios ir mažosios raidės !

Be to, mes reikia nustatyti Windows nusimesti mūsų darbuotojas VM, kai mašina buvo nenaudojamas. Norėdami tai padaryti (Windows XP), jums reikia eiti Start -> All Programs -> Priedai -> System Tools -> numatytas užduotis, kaip nurodyta toliau:

suplanuotų užduočių

Kitas spustelėkite "Pridėti suplanuotų užduočių", po naršyti pridėti pasirinktinę programą. Vykti į savo VBoxManage scenarijų ir spustelėkite Gerai. Planuokite savo užduotį, bet variantų (mes pakeisti šią minutę) ir toliau. Po praleidimo Kitame ekrane Windows paklaus jūsų, kurie norite paleisti šią užduotį, aš manyti, arba "Administratorius", arba sukurti naują vartotojo teisėmis. Atminkite, mes nenorime kištis su standartinio personalo sąskaitą bet kurioje vietoje mašina. Spustelėkite Pirmyn ir patikrinkite parodyti pažangias galimybes atlikti šią užduotį.

Norėdami paleisti teksto lauke pabaigoje pridėti mūsų "startvm GridMachine" eilutę ir užtikrinti, kad paleisti tik tada, kai prisijungęs kairėje unticked. Aplankykite tvarkaraštį užduotis šalia ir keisti tvarkaraštį išskleidžiamajame variantas ", kai nenaudojamas", pasirinkti laiko sumą, kurią norite, kad mašina turi būti nenaudojamas prieš pereinant prie kito skirtuko.

Galiausiai Nuimkite žymėjimą, kuriame teigiama, sustabdyti užduotį, jei ji veikia jau x laiko, bet pažymėkite parinktį sustabdyti darbą, jeigu mašina nebėra prastovos.

tvarkaraštis

Tai tada prieglobos Windows sąrankos!

Santrauka

Šioje dalyje mes sukūrėme virtualų mašina veikti kaip darbuotojo, taip pat būdas, kurį mes vadiname ir vykdyti mūsų perdirbimo scenarijus (sau PHP skriptus). Iš čia mes žiūrime ne tai, kaip sukurti mūsų kopijas Windows paleisti virtualios mašinos begalvis režimas, kai kompiuteris tampa nenaudojamas, ir išsaugoti savo valstybę, kai vartotojas vėl mašinos naudojimo. Tikimės, kad šiuo metu jūs matote, kaip paprasta yra sukurti tokią sistemą ir yra niežulys gauti kai kurie eksperimentai vyksta sau!

Kitą kartą

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

Office Gridu naudojant virtualių aplinkų - 1 dalis

, penktadienis 4th Gruodis 2009 11:23 pm

Įvadas

Aš dirba įmonė, kur mes paleisti daug partijos milijonų įrašų duomenų tvarkymo darbo vietas kiekvieną dieną ir aš galvoju apie visus mašinos, sėdi aplink kiekvieną ir kiekvieną dieną keletą valandų nieko nedaryti . Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Į šį straipsnių rinkinį aš pažvelgti į galimą naudą įdarbinimo 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, šiame vadove bus lygiai taip pat prisitaikyti prie kitų kalbų ir technologijų.

I tirpalas bus labai silpnai pagrįstas perdirbimo mums reikia pasiekti, tačiau tai negali būti tiesa, per visą straipsnį, nes aš ką nors keisti paprastumas, arba gaminti daugiau įdomių naudojimo scenarijus.

Šie virtualised aplinkoje veiks ant langų mašinų, nes tai yra tai, ko dauguma biurų paleisti. Apdorojimo, kad biuro mašinos neturėtų trukdyti šių mašinų darbuotojų, kurie naudojasi, turėtų nereikalauja priežiūros mašinos, ir turi būti lengvai dislokuojamos į naujas mašinas, kai jie tampa prieinami. Be to, naujos virtualios mašinos neturėtų reikalauti jokios papildomos konfigūracijos, nes tai labai sumažina lankstumą ir paprastumą, tinklo sistemos gali būti pratęstas.

Kodėl reikia diegti Office Kompiuterija Tinklelis?

Pirma, jums gali būti mąstymo, 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 Debesis kompiuterija aplinka
  • Jūs negalite įdėti į tam tikrus duomenis dėl teisinių priežasčių (pvz., duomenis iš šalies), gali būti dėl teisinių priežasčių, pavyzdžiui, NHS įrašai Debesis kompiuterija aplinka.
  • Jūs norite išsaugoti savo perdirbimo vienetų uždaryti ir turėti pilną kontrolę aparatūros
  • Jūs neturite projekto lėšų paleisti debesis atvejais
  • Savo biuro neturi prisijungimo prie interneto, ir todėl jo negalima naudoti debesis išteklių
  • Jums nepatinka lietus, debesys rodo, lietaus, todėl jums išlaikyti ir toliau

Aš tikiu, kad sąrašą galima tęsti, bet aš manau, kad pakanka dabar.

Office Kompiuterija Tinklelis privalumai

Na, leidžia daryti kai matematikos (ir tiesa fizikos stilius leidžia padaryti keletą valymo prielaidos). Įsivaizduokite, kad turite didelių raumeningas perdirbimo serverio, kuriame veikia 100 darbo vietų per dieną. Savo biure, turite 50 mašinų, kurios yra nenaudojamas 16 valandas per parą, kiekvienai iš šių mašinų yra 10%, kaip galinga, kaip jūsų raumeningas perdirbimo Sever. (Visi rezultatai čia yra suapvalinti nepakankamai veiklos padidėjimas).

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

Jei dabar masto tai padaryti per 15 nenaudojamas staliniai kompiuteriai procesas kaip daug darbo vietų per dieną, kaip pagrindinė perdirbimo serveryje .

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

Pranešimas, ne investicijos į naują įrangą jūsų bendrovė neseniai padidino savo partijos perdirbimo pajėgumus 4 kartus! Potencialiai jūs ketinate padidinti savo elektros energijos naudojimą, bet iš daugelio biurų, aš į mašinos paprastai paliekama per naktį vistiek, kad galėtumėte pamatyti šį žalia iniciatyva.

Kiti privalumai taip pat reiškia, kad investicijos į naujas (atnaujinta) perdirbimo serveriai gali būti atidėtas, jei jūsų biuro mašinos yra pakankamos ir kad, kaip jums pagerinti jūsų biuro mašinos galia jūsų biuro tinklelį tampa galinga automatiškai.

Technologijas

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

  • Neveikos biuro mašinos (mano atveju atsarginių sena Windows XP nešiojamas)
  • VirtualBox (ar kitą virtualizavimo programinę įrangą kliento)
  • Virtualios mašinos su PHP, MySQL running veikia įpjovą žemyn OS, Aš skambinti šių mano Limp serverius:)
  • Darbams vykdyti
  • Darbo serveris (gali būti kitos virtualios mašinos kažkur)

Tipiška Darbas

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

  • Sistema gauna duomenis, kuriais mums reikia suderinti ir grąžinti rezultatus sąrašas
  • Suderinimas apima tikrinimo / ieško kelių (beveik nekinta) duomenų šaltinių
  • Duomenų šaltinius rezultatai gali reikalauti tolesnio patvirtinimo, sujungti, tikrinti papildomų duomenų šaltinių, kaip atsakas į rezultatus
  • Duomenys grįžo su atitinkamais įrašais, visiškai pasiteisino ir perdirbti
  • Kiekvienas įrašas per darbą yra nepriklausoma nuo likusios

Taigi mes ieškome veikia darbo vietas, kurios reikalauja duomenų bazių paieška ir kai kurių skaičius crunching, gana tipiškas scenarijus verslo aplinkoje mišinys.

Tinklelis sprendimai yra ne tik naudingas šios rūšies darbo vietų tvarkymo. Iš esmės, bet koks procesas, kuris gali būti padalytas į nepriklausomus vienetus gali būti vykdomos arba lygiagrečiai. Žiūrėti šį Wikipedia pavyzdžių ir daugiau informacijos: Tinklelis Kompiuterija , tačiau pora žinomų pavyzdžių yra SETI @ Home ir BIONC . Yra veikia kompiuterinių tinklų sistemas, ir tai verta pasidomėti.

Ką mes pasiekiame?

Iki šių dirbinių pabaigos Tikiuosi, kad parodyti, kad dislokuoti biurą tinklelį nereikia būti labai brangu arba laiko. Aš ketinu aptarti:

  • Steigiant darbo kontrolės sistema, darbo vietų konfigūracija
  • Sukurti tinkamą perdirbimą virtualios mašinos
  • Kaip sukonfigūruoti sistemą Windows kompiuteryje
  • Užtikrinti, kad esate naudojant naujausią kodą ir duomenų
  • Diegimo ir lyginamąją
  • Žvelgiant į ateitį

Aš pastatas (Gerai, Aš pastatyti, tada parašė šią) pavyzdžiui, prašymą patikrinti sąvokas vietinį kompiuterį naudojant "Windows XP" ir "mano" GridMachine "virtualioji mašina. Mano darbo kontrolė serveris bus pagrindinis mano mašina, kuri veikia "Fedora 11 .

Tai jokiu būdu nėra skirta parodyti visiškai patikima sistema, jos reiškė daugiau demonstravimo ir aptarti rodo, kad šių dalykų gali būti pasiektas per pagrįstai trumpą laiko tarpą ir nedidelių sąnaudų. Prašome atsiųsti man komentarus, pataisymai ar patobulinimai, ir aš mano geriausia laikyti atnaujintas, kad atitiktų šį straipsnį.

Kitą kartą

2 dalyje aš pradėti ieškoti darbo kontrolės sistema, ir pažvelgti į tai, kaip darbo vietų turėtų būti konfigūruojamas, kad pasiekti didžiausią sumą, kartu užtikrinant, kad kiekvienas darbas yra tvarkomi be nepavyks perdirbimo .

Office Gridu naudojant virtualių aplinkų - 2 dalis

, penktadienis 4th Gruodis 2009 11:23 pm

Įvadas

Aš dirba įmonė, kur mes paleisti daug partijos milijonų įrašų duomenų tvarkymo darbo vietas kiekvieną dieną ir aš galvoju apie visus mašinos, sėdi aplink kiekvieną ir kiekvieną dieną keletą valandų nieko nedaryti . Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Į šį straipsnių rinkinį aš pažvelgti į galimą naudą įdarbinimo biuro tinklo , naudojant virtualised aplinką .

1 dalyje daviau sistemos ir technologijos bus taip pat aptarti kai kurie iš galimų priežasčių, kodėl Jūs norėtumėte sukurti biuro tinklelį apžvalga .

Darbo kontrolė

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

  • Iš darbuotojų prašymu ranka iš darbo vietų
  • Papasakokite darbuotojams, kokio tipo darbo vietų paleisti
  • Sekti darbo vietų
  • Užtikrinti, kad darbo vietų paleisti tik vieną kartą
  • Suteikti darbo darbuotojų duomenis, arba bent pasakykite jiems, kur jį gauti

Sistema taip pat turi būti galima pratęsti, sprendimas, kuris veikia dabar vienu atveju gali būti pratęstas paleisti kelių tipų darbo vietų, verslo mato tinklelį tirpalo verta. Pavyzdžiui, darbo vietų gali gauti prioritetus, daugiau nei vieną darbą tipas, gali egzistuoti (ty keletą kodo bazės), galų gale jūs net gali vykdyti keletas skirtingų darbuotojas mašinos, optimizuota kiekvienam darbo tipui (nors tai nėra tolti nuo generinis darbuotojas "idėja). Visada stenkitės galvoti apie ateitį, kuriant sistemas, trumpą laiką regėjimas gali sukelti ilgesnį laiką nusivylimas ir padidinti vystymosi laikas.

Darbo Serveris

Mes ketiname reikia kažkur kontroliuoti mūsų darbo vietas, tai turėtų būti tik savo tinklelį sistemą, kad fiksuoto Resource Locator, kad IP adresą, kompiuterio vardą, URL (naudojant vidinio DNS), ir tt Tai yra todėl, kad darbuotojams reikia žinoti, kur ieškoti darbo, darbuotojams reikia rasti darbo kontrolės sistema (ne darbo kontrolės sistema rasti darbuotojų).

Darbo serveris pats nėra tikrai sudėtinga užduotis (bent jau pagrindinės sistemos), ji turi saugoti darbo vietų sąrašą, darbo vietų ranką, gauti rezultatus, o vėliau juos laikyti, kad vėliau. , Kaip šios dalys (pavyzdžiui, "darbo vietų" ranką) yra apibrėžti gali būti labai paprastas. Vėliau mes galime išplėsti sistemos administravimo sąsaja, pridėti, redaguoti, trinti, sustabdyti darbo vietų, tačiau tai yra ne tik šį pratimą.

Nėra jokios priežasties, kokia, tada, kad jūsų darbo serveris negalėjo būti virtualios mašinos veikia per savo pagrindinę perdirbimo serverio, jeigu nėra nutekėjimo per daug išteklių iš. Darbo serverio, tačiau reikia didelio prieinamumo, jei jis krinta nuo penktadienio vakaro jūs ketinate prarasti visą savaitgalį perdirbimo, potencialiai jums kainuos porą savaičių verta perdirbimo metu (lyginant su jūsų pagrindinė perdirbimo serverio vien) . Galbūt norėsite apsvarstyti galimybę pradėti savo darbą serverio apkrovos subalansuotą aplinką didelio prieinamumo.

Bazinė konfigūracija

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

, Kaip nurodyta anksčiau, darbuotojams atlikti savo darbą valdymą mums dabar, todėl visi turime tikrai rasti darbą, reikia perdirbimo ir gauti informaciją. Kaip mes tai darome? Gerai pasirinkti mūsų darbo vietų atrankos kriterijus ir ieškoti darbo, SQL aš taip:

  1. Imtis bet kokių darbo vietų, kurios nėra pažymėtos kaip visiškas, bet iš mūsų darbuotojas ir iš naujo juos (pakeisti __ME__ su identifikatorius, lengviausia būtų IP adresas):
      UPDATE "darbo vietų" SET "statusas" = 0, kai "statusas" = 1 ir `started_by` = __ME__; 
  2. Naudodamiesi mūsų darbo, atrankos kriterijai, pasirinkti darbą ir pasakyti, kad šis darbuotojas yra susijusios su kontrolės sistema:
      UPDATE "darbo vietų" SET ", status` = 1, "started_by` = __ME__, "started_at` = NOW () WHERE `, status` = 0 arba
     ("Statusas" = 1 ir `started_at"> DATE_SUB (NOW (), intervalas X val.)) ORDER BY `id` ASC; 

    Greiferiniai darbo vietų, negrąžinami X laiko užtikrinti, kad visos darbo vietos paleisti darbuotojas kritimo ar vyksta AWOL.

  3. Kitas patraukti darbo vietų duomenys patys įrašus:
      PASIRINKITE * `darbo vietų kūrimo" kur "started_by` = __ME__ limitu 1;
     Pasirinkite * `job_records` WHERE `id` = __JOBID__; 

Baigus darbą, mes įterpti mūsų rezultatų įrašus ir pažymėti kaip užbaigti darbą. Prisiminti darbo vietas gali sustabdyti / atnaujinti bet kuriuo metu galima, kai savo scenarijų atsparumą. Tai gali būti, kad užduotis sustabdo įpusėjo atnaujinti darbo kontrolės sistema, todėl tikrinti darbą įrašų skaičių ir rezultatus, išsaugoti darbo kontrolės sistema būtų protingas žingsnis.

Be to, o tai rodo, kaip darbo vietų gali būti pasirinktas ir valdoma iš SQL užklausos rėmo, jums tikrai turėtų būti savo darbo kontrolė atsiribotų, kad jei nuspręsite pereiti prie naudodami interneto paslaugą, failų sistema , XML, ar bet kurios kitos sistemų skaičius neturi įtakos virš jo kodą.

Darbo konfigūravimas

Kitas svarstytinas aspektas - darbo vietų dydžio ir konfigūracijos. Žaisdami su darbo vietų konfigūraciją galime streikuoti puikų balansą tarp greičio, replikacijos procesas, ir patikimumą. Užtrukti keletą OFA scenarijus:

  1. Darbo pasiūlymai 1 diena kiekvieną paleisti: Tai reiškia, kad jūsų darbuotojams reikia 15 dienų, apdoroti kiekviena darbo vieta (prisimenate 10% laiko, 2/3rds galios ). Tai aiškiai nėra išmintingas konfigūracijos, savo darbą dydis yra per didelis! Tai būtų bent dvigubai daugiau laiko gauti darbą tvarkomi pradinio darbuotojas AWOL (laikas pasiimti, kad ji nėra grąžinamas rezultatas plius perdirbimo metu). Idealiai jums reikia turėti bent vieną visą darbą, lengvai pašalinamas kiekvieno ilgos prastovos laikotarpio pabaigoje, tokiu būdu jūs nuolat tiksi ir blogiausiu atveju darbo darbo vietų būtų dvi dienas procesas turėtų būti pirmasis dingsta.
  2. Darbo pasiūlymai 1 minutę paleisti: Tai reiškia, kad jūsų darbuotojai būtų apie 15 minučių paleisti kiekvieną užduotį . Nors iš pradžių gali atrodyti idealus, jūs gaunate papildomus darbus apdorojimo metu pietų, kavos pertraukos, susitikimai ir tt, šis scenarijus kelia įtampą kitose srityse savo sistemą ir pristato savo problemas. Pavyzdžiui, pirma savo setup / perdirbimo laiko santykis bus eiti teisę žemyn, todėl praranda sistemos efektyvumą. Jūsų tinklas turi būti nuolat transliacijos informacijos apie darbo vietas įvairių darbuotojų nelinksma darbuotojai, kurie yra Dong jų kasdienį darbą. Jūs taip pat ketina skirti daugiau apkrauti savo darbą apdorojimo serverį, nes ji turi daug ir daug mažų gabalėlių darbą reguliariai patiekalas iš. Galiausiai, šioje situacijoje, jei jūsų darbas serveris krinta jūs ketinate sukurti milžinišką Atgal log kadangi didesnis darbo vietų nebaigti darbo galėtų toliau perdirbti palaimingai nežinoti, kad darbo serveris patiria sunkumų.

Iš tikrųjų ten bus niekas idealiai konfigūracijos savo tinklelį sąranką, daug kas priklauso nuo turimų išteklių, darbą, darbo apsisukimo laikas reikalavimai, tinklo pajėgumą, ir tt rūšių. Tačiau kai kurios gairės būtų:

  • Dydis darbo vietas taip, kad kiekvienas darbuotojas gali gauti per bent 3-4 darbo vietų 15 valandų laikotarpį (ilgiausiai tikėtina, tuščiosios eigos laikotarpį)
  • Žaisk su užduoties dydžiui, taip, kad diegimo metu tampa gana nereikšminga, palyginti su perdirbimo metu (turint omenyje pirmiau minėtą aspektą).
  • , Jei darbas nėra baigtas dvigubo laiko (gal mažiau) tikisi, kad jis galėtų užbaigti jį prisiimti, kad jos dingo AWOL ir pradėti ją apdoroti su kitu darbuotoju. Tai reiškia, kad jums gali tekti palaukti iki tris kartus viršijanti įprastą darbą už tai ilgis, užbaigti (galbūt ilgiau, jei vėliau darbą nepavyksta). Galbūt Jūs norite sumažinti šį laiką, bet būkite atsargūs, ne sumažinti per daug, kaip jūs gali pradėti reguliariai kartoti apdorojimo užduotis .
  • Darbo vietų turėtų būti nepriklausomi išorės reikalavimai kiek įmanoma. Serverio darbą, pavyzdžiui, turėtų būti tik susisiekti kiekvieno darbo pradžios ir pabaigos.
  • Ar ne prisigerti savo tinklą, tai turės neigiamą poveikį jūsų dienos personalas rasti naudojant tinklo varginantis ir gali būti problemų patirties su problema, kad bus tik blogiau, kaip jūs savo tinklelį skalę jungtys laiką.
  • Užtikrinti darbo vietų gali paleisti savo darbuotojus. Jei darbo vietos tampa per daug atminties intensyvaus ar diske intensyvaus darbo vietų bus pradėti nutraukimą, ir vienintelis dalykas, kurį pastebėsite yra nėra tikroji priežastis, kodėl tvarkomi su darbo vietų skaičiaus sumažėjimas.

Pateikdamos rezultatus Skelbimas

Pateikti darbo rezultatus, svarbu patikrinti, kad rezultatai nebuvo pateikti kitas darbuotojas, ypač jei darbuotojas buvo ramybės tam tikrą laiką.

Kai rezultatai pateikiami užtikrinti, kad rezultatų skaičius atitinka įrašų skaičius per darbą.

Kaip nurodyta anksčiau, ir negali būti daugiau kaip pabrėžė, kurti gedimui atsparūs į darbo paieškos ir rezultatų pateikimo. Darbuotojai gali (ir greičiausiai bus) pereiti į sustabdyti režimas labiausiai nepatogu kartų ir tai turi būti aptarnavo. Taip pat dar kartą atsiribotų nuo savo rezultatų pateikimo padės patenkinti būsimus pokyčius savo darbo kontrolės sistema daug lengviau susidoroti su.

Santrauka

Section mes pažvelgė, ką turi daryti darbo kontrolė serverio ir kaip gauti labai pagrindinės sistemos. Mes aptarė, kaip gauti iš kontrolės sistemos darbą ir kaip geriau konfigūruoti darbą dauguma mūsų savo biuro tinklo sistemos,. Norėdami baigti, pastraipą ar dvi Pateikdamos rezultatus atgal į darbo kontrolė serverio.

  • Darbo kontrolė serverių valdo darbo vietas ir užtikrina, kad visi darbo vienetų
  • Atsiribotų savo darbo select / rezultatų pateikimo, mes galime pakeisti serverio valdymo technologija, be didelių problemų
  • Konfigūruoti savo darbo vietų, siekiant užtikrinti, kad jie vykdomi greitai ir veiksmingai nesukeliant per daug spaudimo dėl savo tinklo infrastruktūrą, ir vengiant kartojimo ir perdirbimo užduotis reguliariai.
  • Užtikrinti, kad jums sukurti atsparumu gedimui ir klaidų checking į savo kasdienybe, darbuotojai gali sustabdyti ir vėl ir labiausiai nepatogu kartų. Nepamirškite patikrinti, jei rezultatai jau buvo pateiktas kito darbuotojo.

Kitą kartą

3 dalis , mes sukurti mūsų virtualios apdorojimo mašinos ir įsteigti mūsų langų mašinų tapti prastovos dieną dirbančių darbuotojų .

Office Gridu naudojant virtualių aplinkų - 5 dalis

, penktadienis 4th Gruodis 2009 11:03 pm

Įvadas

Aš dirba įmonė, kur mes paleisti daug partijos milijonų įrašų duomenų tvarkymo darbo vietas kiekvieną dieną ir aš galvoju apie visus mašinos, sėdi aplink kiekvieną ir kiekvieną dieną keletą valandų nieko nedaryti . 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.

Deployment

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

Kitas akivaizdus žingsnis būtų faktiškai gauti realaus pasaulio, pavyzdžiu ir pradėti diegti tokių kaip ši sistema biuro aplinkoje ir pamatyti, kas atsitiks. Klausia verslo įsipareigoti be takas Blazing įmonė turi įrodyti, technologiją ir efektyvumą, gali būti šiek tiek sunku. Tinklelis / Paskirstytasis skaičiavimas yra labai populiarus yra apskritimai ir yra keletas didelių programų (BIONC SETI @ Home, Folding @ Home "ir tt). Tačiau aš ne mažesnio masto ir paprasta sistema, kaip mano paieškų galėtų būti išvyniotas per biuro aplinkoje.

Aš sukūriau, iš esmės nemokamai sistemą, naudojant beveik bet kokia įstaiga, daugiausia atviro kodo programinę įrangą ir įrankius. Technologijos iš esmės buvo įrodyta ir rodo atlikti ir dirbti taip, kaip tikėtasi. Tikimės, kad turiu parodyti, kad ne per daug darbo ir labai paprastas setup, galite įdiegti biuro Gridu sistema, kuri yra galinga, pigūs, A ir pritaikyti tuo pačiu metu.

Kartą per sistema yra ir veikia ten yra beveik be galo pritaikymas ir tobulinti, galite padaryti suma. Pavyzdžiui statistika / normos gali būti lengvai įtraukti, tokia sistema verta kiekvieną dieną. Naujos mašinos gali būti dedama greitai ir lengvai, kaip ir kada jie atvyksta su turimos techninės įrangos Derindami savo perdirbimo galia atnaujinimai.

Tikiuosi, jums patiko skaityti šios serijos straipsnių ir atsižvelgiant į maisto minties veikia biuro tinklų sistemos. Atsakymas čia nebūtinai visose situacijose, bet turėtų būti pritaikomos leisti jums gauti savo duomenų tvarkymas atliekamas naudojant savo sprendimą.

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

Zend Framework: Pagrindai - apžvalga

By , Saturday 28th November 2009 10:42 pm

Neseniai mano darbdavys moka mums kūrėjų grupė Zend Framework: pagrindai Žinoma, čia aš apibendrinti savo mintis ir nuomones kitiems. For those looking to save time, here's my summary:

Kūrėjai, kurie neturėjo laiko pažvelgti į šio kurso (Zend Framework: pagrindai) siūlo gerą bendrą vaizdą apie sistemą, įvesti jus į pagrindines sritis ir suteikti pakankamai informacijos, kad toliau Zend Framework. Tiems, kurie praleido laiko žiūri sistemą ir po vieną ar dvi samouczków šio kurso neturi pasiūlyti daug daugiau nei .

Background

PHP programuotojo apie 5-6 metus, ir pradėjo dirbti su Zend Framework komponento pagrindu per pastaruosius 6 mėnesius. I've developed and/or been a developer on a couple of small Zend Framework MVC sites. I'll be honest, I haven't had a huge amount of exposure to other frameworks from a coding point of view but have spent several hours researching the project websites and evaluating them. The framework and the community surrounding Zend Framework it is quite exciting and there seem to be huge possibilities in where its going.

Apie kursą

The course is delivered over 9 two hour webex sessions (with a 10-minute break in the middle). Laiko praleido išgyvena Zend skaidrių diskusiją bet kuriuo metu. Galite naudoti mikrofoną kalbėti instruktorius, tačiau turi būti sąžiningas, aš nemačiau, kad kas nors naudoti nieko daugiau nei pokalbių lange. In addition a VMWare Ubuntu machine is provided that has example code and projects set up an a trial version of Zend Studio. The course leader talks to attendees either over an integrated VoIP solution, or you can dial in using one of the many worldwide dial in numbers.

Kursų metu medžiagos sudaro trumpa apžvalga pagrindų, MVC modelį, prieš antraštę į svečių knygoje taikymo pavyzdį. The discussion demonstrated bootstrapping, Zend_Application, Db Tables, Database access, Forms, Filtering, ACL, Validating, etc, etc. Basically covering all the topics you'd require to get a basic site up an running all the time giving you the tools to go and get more advanced in the framework (although this did amount to 'See the website' much of the time).

Laikas kai kuriuos pavyzdžius, kodą ir kurti "svečių knygoje" ir paprasta "wiki". Asmeniškai aš pajuto, kad teikiant kodą arba kiekvieno app ir tada klausia mums plėtoti esmės yra kopija, kartu su nelabai gera mokymosi patirtis. Būčiau norėjusi sukurti taikymo panašių, bet ne identiški. Pavyzdžiui taikymo vadovas nurodyti naudos. Arba kurti programas nuo nulio parodomasis, galbūt buvo daugiau klausimų apie tai, kodėl ir kaip, ir tokiu būdu geriau suprasti sistemą, juk galite ieškoti po kurso specifiką.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. Po kurso atsiliepimus buvo imtasi, buvo pabrėžta kelis kartus per Žinoma, kad Zend atsiliepimus labai rimtai, tai, matyt, mūsų kurso versija buvo gana naujas. Some of the other developers in the company will be taking the course soon so it will be interesting to see if this has happened.

Žinoma stilius buvo neoficialiai leido grįžtamojo ryšio ir bendradarbiavimo tarp dalyvių ir instruktorius. Kurso vadovas buvo draugiškas, prieinamas (elektroninio pašto adresai buvo dalijamasi klausimai), ir nors jo pristatymą iš skaidrių buvo šiek tiek įtartina atrodė visiškai kompetentinga sistemą. Jis buvo aiškiai kažkas, kas naudojama sistema reguliariai, o ne kažkas, kas mokoma dėstyti kursą, man patiko "realiame pasaulyje" patirtį šiuo atžvilgiu.

Bendras jausmas

In some ways I found the course a waste of time, in others it was very handy. Tikiuosi gausite mano priežastis visoje aiškiai, o gal kai kurie maisto minties ar naudingų atsiliepimų (žinant, man tai mažai tikėtina!).

Už save Šio kurso tikslas buvo per žemas. Having gone through the quickstart guide, read Rob Allen's Zend Framework in Action, and worked with the framework a little I didn't really get anything too much. Norėčiau patiko kurso pasiimti iš Quickstart pabaigos ir sukurti papildomų įgūdžių.

Tai sakė, Modulio pavadinimas aiškiai nurodoma "Zend Framework: pagrindai" ir šiuo aspektu kursas pasiekia kas tai padaryti. Kiti nariai plėtros komanda, kurios nėra praleido laiką ieško į sistemą kiekvieną sesiją baigė su entuziazmu ir paprašė klausimus, kurie buvo tikrai malonu matyti.

All was not lost, it was good to spend time confirming the basic details of the framework and get to ask a couple of questions in areas where I wasn't 100%. Tai buvo laikas, kad aš kiekvieną dieną turime susėsti ir galvoti apie kodavimo sistemą ir būsimus projektus, naudojant ką aš nebūtų galėjo padaryti kitaip (galite įsivaizduoti, jūsų įmonė sutinka, kad:)). Paskutinis, bet ne mažiau kaip jūs taip pat gauti gražus iš Zend sertifikatas pasakyti, kad jūs dalyvavo kursą (nors ir elektroniniu paštu).

Zend Framework, sertifikavimas

Tai buvo vienas klausimas nuolat ateina į galvą kurso metu, tai pasirengti sertifikavimo manęs? Greitai, lengvai, yra aidėjimas Nr . Žinoma instruktorius buvo gana aišku, kad su papildomų patarimų, kad sertifikavimo jums tikrai turėtų būti naudojant kasdien ir jaučiasi labai patogiai ir užtikrintai, jo naudojimas ir metodikos.

Santrauka

Atsižvelgiant į viską, ką aš parašiau aukščiau, aš apibendrinti viską, kas dvi lengva kulka taškų:

  • Nauja Zend Framework: Šis kursas daro būtent tai, ko jūs tikitės, ji suteikia jums gražus įvadas į sistemą ir gerą įžeminimo pagrindus, iš kurių galite statyti. Žinoma atrodo generuoti susidomėjimą ir entuziazmą tarp kūrėjų.
  • Used the Zend Framework: While it was nice to shore up some of the very basics I felt the time, effort, and funds to take the course could of been better spent elsewhere. Jis bus malonu see Zend sukurti naują aukštojo lygio kursas imtis kūrėjams į kitą lygį - bent standartas sertifikavimo ir už jos ribų, kad aš tuoj pat užsiregistruoti .












Panorama tema pagal Themocracy

5 lankytojai internete dabar
2 guests, 3 bots, 0 members
Maksimalus lankytojų šiandien: 15 at 06:02 am UTC
Šį mėnesį: 48 2011/12/09 02:18 am UTC
Šiais metais: 130 28-03-2011 10:40 am UTC
Visą laiką: 130 28-03-2011 10:40 am UTC