Category: compute

Apache proxy sa digest authentication

By Steven Lloyd Watkin , Linggo 27 Mar 2011 12:57

Ang post na ito ay mabilis na ipakita sa iyo kung paano set up proxying na may pangunahing authentication gamit apache .

Sa aking kaso ko nais na may transmission bit torrent client na makukuha sa internet kaya ako ay maaaring suriin sa ang estado at adminster download torrent (tulad ng sa pinakabagong release Fedora) bilang kinakailangan. Pagkakahawa mismo nagpapatakbo nito web client sa port 9091 sa pamamagitan ng default. Sa halip na mag-abala na pagbubukas mas ports sa aking firewall at ang pagdaragdag ng nessecary port alituntunin sa pagpapasa ko nagpasya ang gusto ko lang proxy ang tawag sa pamamagitan ng paghahatid sa pamamagitan ng apache gamit mod_proxy .

Magpatuloy sa pagbabasa 'Apache proxy sa digest authentication' »

Zend Framework: Render Kung Umiiral

By Steven Lloyd Watkin , Linggo 12 Disyembre 2010 16:19

Buod

Ito ay isang mabilis post na talakayin ang mga halip simpleng helper view ko ginawa para sa rendering ng isang Zend Framework style file tingnan lamang kung ito ay umiiral na. Karaniwan ang humihingi ng code upang mabigyan ng isang file na kung saan ay hindi umiiral ay ihagis isang exception. Kaya't ko ginawa ang isang wrapper para sa Zend_View:: render () method na tinutukoy kung ang file ay umiiral at kung gayon render, kung hindi man lamang ay nagbabalik ng isang walang laman na string.
Magpatuloy sa pagbabasa 'Zend Framework: Render Kung Umiiral' »

Zend Certified Engineer (ZCE) 5.3

By Steven Lloyd Watkin , Huwebes 30 Set 2010 21:00

Sa mga opisyal na release ng Certified Engineer (ZCE) programa Zend para sa 5.3 Akala ko gusto ko ibigay ang aking mabilis na mga impression ng kung ano Akala ko ng mga pagsusulit.

Ang isang maliit na background sa aking sarili: ay unang ipinakilala ko sa PHP tungkol sa 7 taon na ang nakaraan at may nagtrabaho sa mga propesyonal na PHP mula noong 2006. Ako kasalukuyang gumagana para sa isang kapanapanabik na start-up na tinatawag na Brightpearl batay sa Bristol, UK , paggawa ng pinagsamang CRM, accountancy, at ecommerce software. Hindi ko pa dati na nakuha ng anumang ng nakaraang mga kwalipikasyon ZCE. Ako kasalukuyang bumuo sa 5.2.X serye at hindi talaga ginagamit ang alinman sa mga tiyak na mga tampok 5.3 (Hinihintay ko Zend Framework 2 at doktrina 2) sa aking mga proyektong pangkaunlaran.
Magpatuloy sa pagbabasa 'Zend Certified Engineer (ZCE) 5.3' »

Zend Framework sa Bawat Module Setting Layout - Sundin Up

By Steven Lloyd Watkin , Martes Pebrero 16, 2010 20:48

Bilang isang follow up sa aking nakaraang post sa bawat module based setting ng layout para sa Zend Framework , ko na-update na ang code sa kailangan mas mababa configuration pagkatapos bago (hindi na ito kailangan pa na ng ilang linya sa iyong application configuration!).
Magpatuloy sa 'pagbabasa' Zend Framework sa Bawat Module Layout Setting - Sundin Up »

Office Grid Computing gamit kapaligiran Virtual - Part 4

By Steven Lloyd Watkin , Biyernes Disyembre 4, 2009 11:59

Pagpapakilala

trabaho ko sa isang kumpanya na kung saan tumakbo kami maraming jobs batch processing milyon-milyong mga talaan ng data sa bawat araw at ako ay iisip kamakailan lamang tungkol sa lahat ng mga makina na umupo sa paligid ng bawat at bawat araw paggawa ng wala para sa ilang oras. Gusto hindi na ito maging mabuti kung maaari naming gamitin ang mga makina sa magbolster ang pagpoproseso ng kapangyarihan ng aming mga sistema? Sa set na ito ng mga artikulo na ako ng pagpunta sa tumingin sa mga potensyal na benepisyo ng employing isang opisina parilya gamit virtualised kapaligiran.

Sa part 3 nilikha namin ang aming mga virtual machine processing at set up ng makina ng windows para maging-time workers na walang ginagawa.

Tumatakbo ang pinakabagong code

Hindi maaaring hindi matapos ang paglikha ng iyong manggagawa ng negosyo na lohika ay magbabago, bugs ay natagpuan, mas mabilis na mas mahusay na code ay ginawa sa gayon Aalis ang iyong mga manggagawa nakaupo sa paligid ng processing ng data gamit ang lumang mabahong code . Paano pagkatapos ay gawin namin matiyak na laging na aming ginagamit sa pinakabagong at pinakadakilang na bersyon ng aming processing script?

May ilang mga tunay madali simpleng mga paraan namin ay maaaring magawa ito, ang bilis ng kamay, gayunpaman, ay upang mabawasan ang pagproseso ng kapangyarihan at trapiko sa network sa pagkamit na ito. Lets magsimula sa ang pinakasimpleng ng mga solusyon at mapabuti ito dahan-dahan sa loob ng isang pares ng mga iteration.

Ang unang paraan ay sa lamang kumonekta sa server natin trabaho kontrol (sa pamamagitan ng samba: FTP, o katulad) at pull down ang pinakabagong bersyon ng code. Hindi masyadong mahusay, ngunit ito ay gawin ang mga trabaho. Lets mapabuti sa na tila, paano ang tungkol sa paglikha ng isang rsync script at gamit na ang bawat oras sa halip? Bilang kahalili kung ano ang tungkol sa paglagay ng aming pinakabagong processing script sa pagsira ng checking out ang code sa simula at pagkatapos lamang pag-update ng aming code sa bawat tumakbo ( svn update )?

Sa katapusan namin ay maaaring end up sa isang malakas na palo script (na tinatawag sa pamamagitan ng cron bawat 10 minuto) na hitsura bilang simpleng bilang na ito:

  #! / Bin / sh
 kung palakol ps | grep-v grep | grep php > / dev / null
 pagkatapos
     echo "Job ay kasalukuyang processing, lumabas"
 iba
     echo "Job ay hindi tumatakbo, simulan ngayon"
     cd / path / sa / nagtatrabaho / kopya
     svn update
     php yourJobProcessingScript.php
 fi 

Ngayon ay maaari naming siguraduhin na sa bawat tumakbo talaga kami ay tumatakbo ang pinakabagong code. Kami ay tiyakin na ito sa pamamagitan ng aming mga pag-update ng code base sa bawat at bawat oras na magsagawa tayo ng isang tumakbo at pagbabawas ng trapiko sa network sa pamamagitan lamang ng paglilipat ng mga file pagkakaiba sa kabuuan ng aming network.

Sa aking demonstration setup, ako did eksakto tulad ng sa itaas. Pagbabagsak ay install sa aking server trabaho processing at ako lang hinila ang pinakabagong code mula sa isang sangay 'manggagawa' gamit ang 'svn update'. Ako din nagdagdag ng isang bersyon tag number sa aking processing script na kung saan ay bumalik sa database bilang bahagi ng mga resulta. Ang paraan ko ay maaaring makita na ang aking code ay ina-update sa bawat oras ko na kinopya ang aking trunk sa ie worker branch na talaga ako ay tumatakbo ang mga pinakabagong script processing.

Gamit ang pinakabagong data

Kung ang iyong trabaho sa pagpoproseso gumagawa ng paggamit ng data sources pagkatapos ay sa ilang mga punto ang mga ito ay pagpunta sa maging masyadong update. Maliban kung ikaw ay tumawag sa iyong mga pinagkukunan ng data sa isang tunay madalang na batayan ang iyong pagpunta sa baha ng iyong network sa trapiko sa sandaling ang iyong mga manggagawa tumakbo ang nagdadala sa lahat ng bagay upang humpay. Para sa aking mga solusyon ako nagpasya na Gusto kong ilipat ang aking mga pinagkukunan ng data sa paligid sa aking mga VMs.

Hold ikaw kabayo doon! Paano kung ang aking data sources ay malaking? Well ito tunay ay isang kaso ng kung magkano ang data na kami ay pakikipag-usap? Ito ay maaaring maging mas epektibong gastos-install ng isang karagdagang mas malaking hard drive sa bawat makina kaysa sa pagbili ng isang karagdagang server processing. Ito ay isang tanong ng badyet at ay hanggang sa mga negosyo upang magpasya. Ito siguro na ang iyong data sources ay kaya malaki na ang kanyang lamang unfeasible upang panatilihin na ang halaga ng data sa iyong machine worker. Sa kaso na kung ano ang gusto mong gawin? Well kami ay maaaring tumingin sa pagtawag ng isang lokal na server ng ​​data, ngunit ito ay maaaring maging sanhi ng mga isyu sa mga network. Sa kasong ito ng isang parilya sistema tulad ng ito ay maaaring maging unrealistic na isama sa iyong opisina ng kapaligiran. Maaari din itong na maaari mong hanapin sa alternatibong tumatakbo estratehiya, halimbawa lamang pagtawag sa iyong manggagawa 8:00-6:00 bawat gabi at / o throttling data source kahilingan.

Paglipat sa nagbibigay-daan sa sabihin ang aming data sources halaga sa 100Gb ng data. Well yes na ang lubos na isang piraso ng data upang ilipat sa paligid sa network sa isang update. Kung paano namin masiguro na kami ay may mga pinakabagong kopya ng data sa kasong ito? Rsync ay isang posibilidad, ngunit ang personal na tingin ko sa pamamagitan ng pagpapatakbo ng iyong mga pinakabagong data source sa iyong server trabaho processing at ang setting na ito up bilang isang master sa pagtitiklop (na may isang magandang mahabang bin log) ay maaaring ang paraan upang pumunta:

pagtitiklop Sa pamamagitan ng pagtatakda ng bawat isa sa iyong mga manggagawa up bilang isang alipin sa trabaho update control server sa iyong data sources ay pumatak down mabuti sa iyong mga manggagawa na walang isang malaking pagtaas sa mga network na aktibidad (na maliban kung gawin sa iyo ng isang malaking update data at lahat ng iyong mga manggagawa sipain sa sa isang beses). Ito ay may pakinabang sa rsync sa na hindi ka kumuha ng isang mahabang pause bago ang bawat trabaho; bilang ng mga update ng database, ang MySQL daemon sa iyong manggagawa ay patuloy na-update data nito habang prinoseso ang patuloy.

Ito ay kung paano ko set up ang aking demonstration server. Upang i-set up ng pagtitiklop sinundan ko ang mga gabay sa MySQL site ( -set up ng pagtitiklop ) at loob ng 20 minuto ako had ang aking inital worker Kinokopya ang mga trabaho control server dataset. Para sa bawat karagdagang manggagawa ang mga setting ng pagtitiklop proseso at nagtrabaho sa bawat oras kapag ang VM ay kinopya.

Buod

Sa seksyon na ito ng mga artikulo na namin tumingin sa kung paano madali at walang sakit na ito ay upang panatilihin ang iyong code sa pagpoproseso ng hanggang sa petsa sa pamamagitan ng using rsync o subverion (SVN) na gawin ang trabaho at mabawasan ang trapiko sa network at sa parehong time. din namin ang napag-usapan kung paano upang panatilihin ang iyong data ng source impormasyon up-to-date sa pamamagitan ng na nagpapahintulot ito upang tumulo pababa sa bawat isa sa iyong mga manggagawa. Ganito kami na lugar ang pagtitiyak na kami panatilihin up sa mga negosyo na lohika at impormasyon sa aming system opisina grid. May ay malinaw naman ay hindi mabilang na mga alternatibo sa gumaganap ang mga gawain, ngunit dito ay dalawang simpleng halimbawa upang ipakita kung paano madali ang isang solusyon ay na dumating sa pamamagitan ng.

Susunod na panahon

Sa huling bahagi ng serye na ito, aptly pinangalanan Part 5 , kami ay talakayin paganahin ang system na ito para sa. Kukunin ko lagumin ano ay natutunan at kung ano ang aking pinamamahalaang upang lumikha ng.

Office Grid Computing gamit kapaligiran Virtual - Part 3

By Steven Lloyd Watkin , Biyernes Disyembre 4, 2009 23:37

Pagpapakilala

trabaho ko sa isang kumpanya na kung saan tumakbo kami maraming jobs batch processing milyon-milyong mga talaan ng data sa bawat araw at ako ay iisip kamakailan lamang tungkol sa lahat ng mga makina na umupo sa paligid ng bawat at bawat araw paggawa ng wala para sa ilang oras. Hindi ba ito ay mabuti kung maaari naming gamitin ang mga makina sa magbolster ang pagpoproseso ng kapangyarihan ng aming mga sistema? Sa set na ito ng mga artikulo na ako ng pagpunta sa tumingin sa mga potensyal na benepisyo ng employing isang opisina parilya gamit virtualised kapaligiran.

Sa part 2 namin tumingin sa ang mga trabaho ng isang server ay tatakbo, at kung paano ang mga trabaho ay dapat na isinaayos upang makamit ang pinakamalaking halaga ng processing habang tinitiyak na trabaho sa bawat proseso ang walang sablay.

Pagse-set up ang iyong mga manggagawa - o Limp server

Ang susunod na hakbang sa proseso ay i-set up ang iyong virtual na manggagawa. Para sa mga ito ako ng pagpunta sa gamitin ang isang installation ng centOS gamit VirtualBox. Ako pagpunta upang i-install ng MySQL at PHP sa server, na kilala rin bilang isang Limp (Li nux, m ySQL, P HP) Server (na aking ginawa na ang pangalan up).

  • VirtualBox install sa iyong machine bintana (sundan ang link)
  • Download at install centOS (kasalukuyang bersyon 5.3) sa loob ng isang nilikha virtual machine

May's point walang ako pagpunta sa na ito mayroong marahil 1,000 's ng mga dakilang Tutorials out doon (ok, ito ang isa: Paglikha at Managing centOS virtual machine sa ilalim ng virtualbox ). Ang mahalagang punto upang tandaan akala ko ay na ako tinatawag ang aking virtual machine GridMachine.

Gaya malayo gaya ang aking mga pagpipilian ng virtualisation client at operating system na pumunta doon ay walang malaking uudyok na dahilan para sa bawat pinili. VirtualBox ay ng isang bagay gamit ko sa aking bahay machine at ay suportado ng tatlong pangunahing mga operating system. Pinili ko centOS bilang nito sa isang magandang kuwadra OS at gamitin ko ito sa aking sariling web server. Ako ay isang malaking naniniwala sa mga karapatan tools para sa trabaho (bagaman ako ng nag-aaplay 'paggamit ng pinakamabilis at pinakamadaling para sa iyo' mentality dito), kaya kung operating system X tumatakbo ang iyong code ng mas mabilis at mas mahusay ang gamitin na sa halip na:)

Mahalaga siguraduhin na ang iyong VM gumagamit ng DHCP, kung hindi, para sa bawat bagong virtual machine ay kailangan na naka-configure na magkahiwalay na kung saan ay isang bagay na hindi namin want.By gamit DHCP hindi namin kailangan upang isaayos ang mga setting ng network para sa mga indibidwal na makina worker, DHCP ay kamay out IPs para sa iyo. Kaya't maaari mong kopyahin ang iyong mga virtual machine tungkol sa opisina nang hindi nababahala tungkol sa pagtatakda ng bawat isa hanggang (ito ay nagpapabuti kakayahang sumukat at binabawasan manggagawa administrasyon).

Ang proseso na dapat mong layunin upang makamit ay upang makakuha ng isang bagong pisikal na makina, install VirtualBox, at pagkatapos ay medyo marami lumawak ang virtual image na walang gaanong sino pa ang paririto. Ito ay maaaring maging pantas sa setup ang lahat ng iyong mga manggagawa sa ibang subnet sa gayon ay maaari kang hindi bababa sa makita kung ilang mga machine ay tumatakbo. Kakailanganin mo ding i-set up ang iyong mga makina sa isang mahabang lease o walang limitasyong lease DHCP.

Kung paano patakbuhin ang Jobs sa mga manggagawa

Ito ay isang nakawiwiling lugar at may mga ilang mga wastong pamamaraan para sa proseso ng mga trabaho sa mga manggagawa. Dito makikita ko lang usapan ang dalawang pinaka halata:

  • Walang katapusan tumatakbo script: Ang isang script, maging ito ng isang shell script, o ng isang PHP script ay naisakatuparan nang isang beses sa manggagawa at tumatakbo bilang bahagi ng isang walang hanggan loop. Ko na bawas ang paraan na ito bilang isa crash ng script at potensyal na ang iyong mga manggagawa ay titigil na tumakbo nang walang ilang mga uri ng interbensyon.
  • Cron based script pagpapatupad: Bawat X minuto ang cron daemon kicks off ng isang tawag sa iyong mga script na makakuha ng mga bagay pagpunta. Walang ilang suri ito ay maaaring humantong sa maraming maraming mga kopya ng iyong mga manggagawa script na tumatakbo.

Aking desisyon ay upang pumunta sa cron na kicks off sa isang shell script bawat 10 minutes. My shell script gumaganap ang mga sumusunod na gawain:

  1. Kumuha ng isang proseso sa listahan at grep ito para sa 'php'. Kung hindi natagpuan pagkatapos ay magpatuloy.
  2. Tawagan ang iyong trabaho code, sa aking mga kaso na ito ay magiging isang bagay PHP based
  3. Worker script nakatapos nito tumakbo
  4. Handa na upang pumunta muli sa susunod na angkop na tawag

My bash script hitsura ng isang bagay tulad ng mga sumusunod:

  #! / Bin / sh
 kung palakol ps | grep-v grep | grep php> / dev / null
 pagkatapos
     echo "Job ay kasalukuyang processing, lumabas"
 iba
     echo "Job ay hindi tumatakbo, simulan ngayon"
     php yourJobProcessingScript.php
 fi 

Tandaan: ang mga echo's ay halos ganap na walang kahulugan, ngunit maaaring makatulong ang mga susunod na taong dumating kasama na subukan mag-edit at kanila.

Concludes na ang set up ng makina worker virtual, mabilis, simple, at madaling kopyahin sa bawat bagong piraso ng hardware na natanggap. Ang 'kabihasnan' ng sistema ng takbuhan tunay ay hindi sa mga visualized OS, ang lahat na gawin sa ang code na nilikha sa trabaho na proseso, ang mga trabaho configuration, at sa siguraduhin na ang trabaho ay tumatakbo nang naaangkop (ibig sabihin kapag ang host ay bakante ).

Pagse-set up ng Windows sa Initialise Manggagawa

Ang unang gawain ay upang gumana ang mga command na kailangan upang patakbuhin ang virtual machine mula sa bintana command line. Kung na-install virtualBox sa lokasyon at default mo na pinangalanan ang iyong mga manggagawa GridMachine pagkatapos ay ang command na kinakailangan upang load up ang iyong mga manggagawa ay:

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

Gayunman na tumakbo ang script sa isang 'walang ulo' estado kailangan naming gamitin:

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

Ito ay magsisimula ang virtual machine na walang ang GUI at payagan ito upang i-save ng estado maganda. Ang ikalawang argument ay lumiliko off RDP kaya ito ay hindi conflict sa bintana RDP, o magbigay sa iyo ng mensahe tungkol sa pakikinig sa port 3389. Ang mga virtual machine pangalan ay case sensitive!

Susunod na, kami ay kailangang magtakda ng mga bintana hanggang sa kick off ang aming worker VM minsan ang makina ay bakante. Upang gawin ito (sa Windows XP) kailangan mong pumunta Start -> All Programs -> Accessories -> System Tools -> Scheduled Tasks bilang sa ibaba:

naka-iskedyul na mga gawain

Susunod na mag-click sa 'Magdagdag ng mga naka-iskedyul ang Gawain' sinundan sa pamamagitan ng browse sa magdagdag ng isang pasadyang programa. Mag-navigate sa iyong VBoxManage script at i-click ok. Iskedyul ang iyong mga gawain para sa alinman sa mga opsyon (kami ay baguhin ito sa isang minuto) at magpatuloy. Pagkatapos ng laktaw sa susunod na mga bintana ng screen ay magtatanong sa iyo na gusto mong patakbuhin ang gawain na ito, gusto ko magmungkahi alinman sa 'Administrator' o paglikha ng isang bagong privileged user. Tandaan na hindi namin nais na makagambala sa standard account kawani sa makina sa anumang point. I-click ang susunod at check ipakita mga advanced na mga opsyon para sa gawain na ito.

Upang sa dulo ng tumakbo textbox idagdag 'startvm GridMachine' string aming at masiguro na tatakbo lamang kapag naka-log in ay kaliwa unticked. Bisitahin ang iskedyul ng susunod na gawain at baguhin ang iskedyul na drop down na ang pagpipiliang 'kapag idle', piliin ang halaga ng oras na gusto mo ng makina na maging idle bago lumipat sa susunod na tab.

Sa wakas untick ang opsyon na nagsasabing itigil ang mga gawain kung ito ay tumatakbo X halaga ng oras, ngunit gawin tik ng opsyon upang ihinto ang gawain kung ang makina ay hindi na walang ginagawa.

iskedyul

Iyan na ito at pagkatapos ay para sa mga bintana setup host!

Buod

Sa bahaging ito namin na-set up ng isang virtual machine upang kumilos bilang isang manggagawa, pati na rin ang paraan kung saan ang tawag namin at execute ang aming scripts trabaho processing (para sa aking sarili ng isang PHP script). Mula dito namin tumingin sa kung paano mag-set up ng aming mga kopya ng mga bintana upang simulan up ang virtual machine sa walang puno na mode kapag ang computer ay nagiging idle, at i-save ang kanyang estado kapag ang user ay Resumes paggamit ng makina. Sana sa puntong ito ikaw ay nakakakita ng kung paano simple ito ay upang set up ng tulad ng isang sistema at ay nangangati upang makakuha ng ilang mga eksperimento ng pagpunta sa iyong sarili!

Susunod na panahon

Sa Part 4 kami ay naghahanap sa paggamit ng mga kasangkapan upang matiyak na ikaw ay nagpapatakbo ng mga pinakabagong bersyon ng mga data at mga pinagkukunan code kaya na nakuha sa mga resulta ay laging up-to-date sa mga pinakahuling impormasyon ng negosyo at lohika.

Office Grid Computing gamit kapaligiran Virtual - Part 1

By Steven Lloyd Watkin , Biyernes Disyembre 4, 2009 11:23

Pagpapakilala

trabaho ko sa isang kumpanya na kung saan tumakbo kami maraming jobs batch processing milyon-milyong mga talaan ng data sa bawat araw at ako ay iisip kamakailan lamang tungkol sa lahat ng mga makina na umupo sa paligid ng bawat at bawat araw paggawa ng wala para sa ilang oras. Gusto hindi na ito maging mabuti kung maaari naming gamitin ang mga makina sa magbolster ang pagpoproseso ng kapangyarihan ng aming mga sistema? Sa set na ito ng mga artikulo na ako ng pagpunta sa tumingin sa mga potensyal na benepisyo ng employing isang opisina parilya gamit virtualised kapaligiran.

Bilang isang PHP developer ako pagpunta sa gamitin ang mga kasangkapan na ginagamit ko sa bawat araw namely, Linux, MySQL , PHP, VirtualBox at pagbabagsak (SVN). Gayunman Umaasa ako gabay na ito ay iakma sa iba pang mga wika at mga teknolohiya lamang pati na rin.

Ang solusyon magbigay ako ay tunay maluwag batay sa uri ng proseso ng gusto namin na kailangan upang makamit subalit ito ay maaaring hindi tunay na sa pamamagitan ng buong artikulo bilang kukunin ko na baguhin ang mga bagay para sa simple, o upang makabuo ng mas interesante sitwasyon ng paggamit.

Ang mga ito virtualised kapaligiran ay tatakbo sa mga bintana machine na ito dahil ito ay kung ano ang karamihan ng mga opisina ng tumakbo. Ang processing na ang mga opisina machine ay hindi dapat makagambala sa staff gamit ang mga makina, dapat ay nangangailangan ng walang maintenance sa mga makina, at maging madaling deployable sa bagong machine bilang sila ay maging magagamit. Gayundin, ang mga bagong virtual machine ay hindi dapat nangangailangan ng anumang karagdagang mga configuration bilang na ito ng malaki binabawasan ang kakayahang sumukat at kadalian sa kung saan ang parilya sistema ay maaaring maging extended.

Bakit lumawak isang Office Grid Computing?

Una ikaw ay maaaring maging iisip, kung bakit hindi lamang gamitin ang isang ulap computing mapagkukunan tulad ng EC2 platform Amazon's ? Well ang mga dahilan ay maaaring maraming, halimbawa:

  • Ikaw ay hindi tiyak na ipagkatiwala data sa isang kapaligiran sa ulap computing
  • Ikaw ay hindi maaaring ilagay sa mga tiyak na data sa isang kapaligiran ulap computing para sa legal na dahilan (halimbawa data umaalis sa bansa), potensyal na para sa legal na dahilan, halimbawa talaan NHS.
  • gusto mong panatilihin ang iyong processing unit malapit at magkaroon ng ganap na kontrol sa mga hardware masyadong
  • Ikaw ay walang mga pondo ng mga proyekto upang patakbuhin ang mga pagkakataon na ulap
  • Ang iyong opisina ay walang koneksyon sa internet at kaya nito hindi posible na gamitin ang ulap na mapagkukunan
  • huwag mong tulad ng ulan, ulap iminumungkahi ng ulan, kaya ingatan mo rin ang layo

ako ba ang listahan ay maaaring magpatuloy, ngunit tingin ko tama na iyan para sa ngayon.

Mga Kalamangan ng isang Grid Computing Office

Well, hinahayaan gawin ang ilang mga matematika (at sa totoo physics style nagbibigay-daan sa gumawa ng ilang pahapyaw pagpapalagay). Imagine ikaw ay may malaking malakas pagpoproseso ng server na tumatakbo 100 jobs sa bawat araw. Sa iyong opisina ikaw ay may 50 machine na kung saan ay idle 16 oras sa isang araw, bawat isa sa mga machine ay 10% malakas na gaya ng iyong malakas processing maputol. (Ang lahat ng resulta dito ay bilugan upang maliitin pagganap dagdagan).

Kaya, 1 machine * 10% ng kapangyarihan * 2 / 3 oras = 0.067 ie 1 desktop processing sa idle time maaaring proseso 6 buong jobs sa bawat araw.

Kung ikaw ngayon ay scale ito hanggang ito ay tumatagal ng 15 idle desktops sa proseso ng maraming trabaho sa bawat araw bilang iyong pangunahing pagpoproseso ng server ay.

Kaya sa aming magpanggap opisina ng 50 machines namin ay maaaring dagdagan ang aming pagproseso ng kapangyarihan mula sa server 1 hanggang 4 na full server processing, o maaari naming maging pagpoproseso ng 400 mga trabaho bawat araw sa halip ng mga 100.

Paunawa, para sa mga walang pamumuhunan sa mga bagong hardware sa iyong kumpanya ay may lamang nadagdagan ang kanyang batch processing kakayahan 4 na beses! Potensyal na ang iyong pagpunta sa dagdagan ang iyong paggamit ng kapangyarihan ngunit mula sa karamihan sa mga kapaligiran opisina ko na na sa machine ay karaniwang kaliwa sa magdamag pa rin, kaya maaari mong makita na ito bilang isang berdeng hakbangin.

Iba pang mga pakinabang rin ibig sabihin na ang pamumuhunan sa mga bagong (o updated) pagpoproseso ng server ay maaaring maantala kung ang iyong mga opisina machine ay sapat na at bilang na pagbutihin ang kapangyarihan ng iyong machine opisina iyong opisina parilya ay nagiging mas malakas na awtomatikong.

Teknolohiya

Ano ang kailangan mo? (O mas tama ano ba ang gamit ko):

  • Idle opisina machine (sa aking kaso ng isang laptop ekstrang lumang bintana XP)
  • VirtualBox (o iba virtualisation software client)
  • Ang isang virtual machine sa PHP, MySQL running pagpapatakbo ng isang cut down OS, ako ng pagtawag sa aking mga server ng ​​Limp:)
  • Jobs na tumakbo
  • Job server (maaaring isa pang virtual machine lugar)

Tipikal Jobs

Ang mga uri ng mga trabaho na ang sistema na ito ay dinisenyo upang tumakbo ay ang sumusunod:

  • Sistema na natatanggap ng isang listahan ng mga data na kung saan kailangan naming tugma at mga resulta
  • Pagtutugma nagsasangkot checking / naghahanap ilang (pantay static) pinagkukunan ng data
  • Resulta mula sa mga pinagkukunan ng data ay maaaring mangailangan ng karagdagang pagpapatunay, merging, check ng mga karagdagang mapagkukunan ng data bilang tugon sa mga resulta
  • Data ay nagbalik sa pagtutugma ng mga talaan, ganap na naiwasto at naproseso
  • Ang bawat record loob ng isang trabaho ay independiyenteng ng iba

Kaya karaniwang namin ay naghahanap sa pagpapatakbo ng trabaho na nangangailangan ng isang timpla ng database lookups at ang ilang mga numero ng crunching, isang medyo tipikal na senaryo sa isang kapaligiran ng negosyo.

Takbuhan ng mga solusyon ay hindi lamang Makakabuti para sa processing jobs ng mga ganitong uri. Karaniwang, ang anumang mga proseso na maaaring nahati sa mga independiyenteng mga yunit ay maaaring magpatakbo ng kahanay. Tingnan ang wikipedia para sa mga halimbawa at karagdagang impormasyon: Grid Computing , ngunit isang pares ng mga tanyag na halimbawa ay Seti @ Home at BIONC . May mga frameworks para sa mga tumatakbo grids computing, at ang mga ito ay nagkakahalaga ng mabuti naghahanap sa.

Ano kami ay makamit?

Sa pamamagitan ng dulo ng mga articles Umaasa ako na ipakita na paganahin isang opisina grid hindi kailangan maging hugely mahal o ubos ng oras. Ako pagpunta upang talakayin:

  • Pagse-set up ang trabaho system control, trabaho configuration
  • Paglikha ng isang naaangkop na processing virtual machine
  • Paano sa setup ang sistema sa makina ng mga bintana
  • Pagtitiyak na ginagamit mo ang pinakabagong code at data
  • Paglawak at benchmarking
  • Hinahanap mauna

Kukunin ko ang gusali (ok ako na binuo, at pagkatapos wrote ito) ang isang halimbawa ng application sa pagsubok ang konsepto sa isang lokal na makina gamit ang mga bintana XP at virtual machine aking 'GridMachine'. Ang aking trabaho control server ay aking pangunahing makina na tumatakbo Fedora 11 .

Ito ay sa walang paraan sinadya upang ipakita ang isang ganap na nagtatrabaho mabulas sistema, ang kanyang sinadya pa ng isang pagtatanghal at pagtalakay na nagpapakita na ang mga bagay na ito ay maaaring makamit sa isang makatwirang maikling space ng oras at sa maliit na gastos. Mangyaring mag-atubili na magpadala ako ang anumang mga puna, pagwawasto, o mga pagpapabuti at makikita ko ang aking pinakamahusay na panatilihin ang artikulong ito update sa match.

Susunod na panahon

Sa part 2 ay ako magsimula sa pamamagitan ng pagtingin sa mga control system trabaho, at tumingin sa kung paano ang mga trabaho ay dapat na isinaayos upang makamit ang pinakamalaking halaga ng pagproseso habang tinitiyak na ang bawat trabaho ay naproseso nang walang mabibigo.

Office Grid Computing gamit kapaligiran Virtual - Part 2

By Steven Lloyd Watkin , Biyernes Disyembre 4, 2009 11:23

Pagpapakilala

trabaho ko sa isang kumpanya na kung saan tumakbo kami maraming jobs batch processing milyon-milyong mga talaan ng data sa bawat araw at ako ay iisip kamakailan lamang tungkol sa lahat ng mga makina na umupo sa paligid ng bawat at bawat araw paggawa ng wala para sa ilang oras. Gusto hindi na ito maging mabuti kung maaari naming gamitin ang mga makina sa magbolster ang pagpoproseso ng kapangyarihan ng aming mga sistema? Sa set na ito ng mga artikulo na ako ng pagpunta sa tumingin sa mga potensyal na benepisyo ng employing isang opisina parilya gamit virtualised kapaligiran.

Sa Part 1 ako nagbigay ng isang pangkalahatang ideya ng mga sistema at teknolohiya ay ako ay gumagamit pati na rin ang usapan na ang ilan sa mga potensyal na kadahilanan kung bakit nais mo nais na lumikha ng isang opisina grid.

Job Control

Kung ikaw ay pagpunta upang patakbuhin ang mga trabaho pagkatapos ikaw ay pagpunta sa kailangan ang ilang mga paraan upang pamahalaan ang mga ito. Ang iyong trabaho control system (sa iyong trabaho server) pangangailangan upang maging tunay mabuti Akala out bago kahit na pagtatangka upang patakbuhin ang isang opisina grid. Kaya una, ano ang mga gawain para sa isang sistema ng trabaho control:

  • Hand out jobs sa kahilingan mula sa mga manggagawa
  • Sabihin sa mga manggagawa kung ano ang uri ng mga trabaho na tumakbo
  • Subaybayan trabaho
  • Tiyakin na ang mga trabaho ay tatakbo lamang sa sandaling
  • Magbigay ng mga data na trabaho sa mga manggagawa, o hindi bababa sa sabihin sa kanila kung saan sa kumuha ito

Ang sistema rin pangangailangan upang maging extensible, ang isang solusyon na gumagana para sa ngayon sa isang solong kaso ay maaaring extended na tumakbo ng ilang mga uri ng mga trabaho bilang negosyo ang nakikita ng mga katumbas ng halaga sa isang solusyon grid. Halimbawa, mga trabaho ay maaaring makakuha ng prayoridad, higit sa isang uri ng trabaho ay maaaring umiiral (ibig sabihin ng ilang mga code base), sa huli ay maaari kang kahit na tumakbo ng ilang iba't-ibang machine na manggagawa ay optimized para sa bawat uri ng trabaho (kahit na ay ilipat ang layo mula sa 'generic worker 'ideya). Laging subukan na isipin ang tungkol sa hinaharap kapag pagbuo ng mga sistema, ang isang maikling kataga ng paningin ay maaaring humantong sa mas matagal na kataga ng kabiguan at nadagdagan ang pag-unlad ng oras.

Job Server

Kami ay pagpunta sa kailangan lugar upang makontrol ang aming mga trabaho mula sa, ito ay dapat na lamang ang sistema sa iyong parilya na may isang nakapirming locator mapagkukunan, maging na ang isang IP address, host name, URL (gamit ang panloob na DNS), atbp Ito ay dahil ang mga manggagawa na kailangan upang malaman kung saan sa hitsura para sa mga trabaho, mga manggagawa na kailangan upang mahanap ang mga trabaho system control (hindi ang trabaho system control mahanap ang mga manggagawa).

Ang trabaho server hindi mismo ay hindi tunay magkaroon ng isang komplikadong gawain (sa isang pangunahing sistema sa papaano mang paraan), ang mga pangangailangan sa tindahan ng isang listahan ng mga trabaho, kamay out jobs, tumanggap ng mga resulta, at sa dakong huli tindahan ito para sa mamaya pagsasauli. Paano ang mga bahagi (tulad ng 'kamay out jobs') ay tinukoy ay maaaring maging lubhang basic. Mamaya sa maaari naming palawakin ang sistema ng isama ang isang administrasyon interface upang idagdag, i-edit, tanggalin, isuspinde trabaho ngunit ito ay lampas na ito ehersisyo.

May dahilan walang anomang pagkatapos na ang iyong trabaho ng server ay hindi maaaring maging isang virtual machine na tumatakbo sa loob ng iyong pangunahing processing server na ibinigay ito ay hindi alisan ng tubig masyadong maraming mga resources mula sa mga ito. Ang trabaho server gayunpaman ay kailangan mataas na availability, kung ito goes down sa isang Biyernes gabi ikaw ay pagpunta sa mawalan ng isang buong weekend ng processing, potensyal na gastos sa iyo ng isang pares ng mga linggo na nagkakahalaga ng processing time (kapag inihambing sa iyong pangunahing pagpoproseso ng server lamang) . Baka gusto mong isaalang-alang ang paglagay ng iyong trabaho sa server ang isang load balanseng kapaligiran para sa mataas availability.

Basic Setup

Ang basic na setup para sa aming mga server ng ​​trabaho ay binubuo ng ano ako ng pagtawag ng isa sa aking mga server Limp (iyon ay Li nux, m ySql, P HP). Ang code na tumatakbo sa Thea manggagawa ay tunay na trabaho sa labas kung ano ang trabaho ito maaari tumakbo sa pamamagitan ng pakikipag-ugnay sa trabaho control database system. Mamaya sa maaari naming lumikha ng isang web service at ang tunay na kamay ang trabaho sa halip na sa pagkakaroon ng mga manggagawa gawin ang mga hirap sa trabaho sa kanilang sarili, ngunit sa ngayon kami ay patuloy na magamit ang mga prinsipyo KISS (Panatilihin itong Simple, Stupid!).

Kaya, nagbibigay-daan sa lumikha ng tatlong MySQL talahanayan sa pakikitungo sa mga trabaho. Ang mga ito ay `jobs`, `jobRecords`, at `` jobResults.

jobs table Narito ako gamit SQL Buddy ng isang magandang maliit na alternatibo sa phpMyAdmin dahil lang nito mas madali na i-install sa centOS (para sa iba na makita: 10 Great alternatibo sa phpMyAdmin )

table na ito ay binubuo ng 5 mga simpleng mga patlang,

  • id: natatanging kilalanin ang mga trabaho
  • pangalan: Puwede maging isang client sanggunian, o anumang bilang ng iba pang mga tagapagpakilala
  • Status: kailangan mong malaman kung ang trabaho ay sa, halimbawa,
    • 0: Hindi makapagsimula
    • 1: Napili up
    • 2: Nakumpleto
  • started_by: Sino ang nagsimula paggawa ng mga trabaho? Ito ay hindi lubos na kinakailangan ngunit ay isang nice na magkaroon. gusto ko iminumungkahi tracking manggagawa sa pamamagitan ng kanilang mga IP address sa iyong network
  • started_at: Kailan worker ang simula ng trabaho? Sa pamamagitan ng pagsubaybay sa mga trabaho na hindi natapos sa loob ng X halaga ng oras na alam namin na kailangan namin upang kunin ang trabaho na naman at simulan ang proseso sa pamamagitan ng isa pang manggagawa. Manggagawa ay maaaring ihinto ang processing / offline pumunta para sa anumang bilang ng mga dahilan, kapangyarihan kabiguan, crash, network pagkawala, atbp

Ito ay madaling kung paano talahanayan na ito ay maaaring pinalawak na may ilang karagdagang mga patlang upang pahintulutan para sa mga istatistika sa pagsubaybay, ang isang tapusin ng haligi na oras upang makita kung gaano katagal trabaho ang kinuha, ang isang counter upang makita kung gaano karaming mga manggagawa pumili ng up ang trabaho (malinaw naman ito ng mga pangangailangan upang magkaroon ng hilig sa 1), trabaho priority, ang listahan ay maaaring pumunta sa at sa. Sa mga mas kumplikadong mga pangyayari trabaho ay ito ay posible na tukuyin kung magkano ang memory ang manggagawa ay kailangan ng access sa (at sa gayon lamang gamitin na mga manggagawa), o kahit anong uri ng manggagawa ay kinakailangan.

Lets magdagdag ng ilang mga trabaho halimbawa:

Halimbawa jobs

Ang susunod na talahanayan muli ay ganap simple sa maintindihan, ang mga ito ay ang aming trabaho mga talaan. Sila ay naka-link ang pangunahing table jobs pamamagitan ng isang hanay `` jobs_id. Ang mga gumawa ng up ng talahanayan na ito very much ay depende sa mga data na kailangan mo sa supply sa iyong mga manggagawa, pinapayagan gumawa ng isang tunay simpleng halimbawa kung saan kami ay may apat na mga haligi:

  • id: ID ng mga record
  • pangalan: Person's name
  • address: Person's address
  • jobs_id: Ang trabaho ID record na ito ay naka-link sa

Ang ikatlo at huling mesa ay binubuo ng isang talahanayan na resulta, ito ay may marami ang parehong gumawa ng up bilang aming mga rekord table, at kasama ang karagdagan ng ilang mga hanay ay maaaring maging bahagi ng talahanayan ng mga talaan:

  • job_record_id: Link ang resulta sa talahanayan sa trabaho
  • resulta: Ang mga resulta ng 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

Katulad ng nakasaad sa dati, ang mga manggagawa ay gawin ang aming trabaho sa pamamahala para sa amin para sa ngayon, kaya lahat ng kailangan naming talagang gawin ay ang makahanap ng trabaho na nangangailangan ng processing at makakuha ng impormasyon. Kung paano namin gawin ito? Well pick sa aming pamantayan sa pagpili ng trabaho at hitsura para sa mga trabaho, sa SQL ko ang mga sumusunod:

  1. Gumawa ng anumang trabaho na hindi na minarkahan bilang kumpleto ngunit mula sa aming mga manggagawa at i-reset ito (kapalit __ME__ sa isang identifier, pinakamadaling ay IP address):
      UPDATE `` jobs SET `status` = 0 SAAN `status` = 1 AT `started_by` = __ME__; 
  2. Paggamit ng aming trabaho pamantayan pagpili, piliin ang isang trabaho at sabihin ang control system na worker na ito ay ang pakikitungo sa mga ito:
      UPDATE `` jobs SET `status` = 1, `started_by` = __ME__, `started_at` = NGAYON () SAAN `status` = 0 OR
     (`Status` = 1 AT `` started_at> DATE_SUB (NGAYON (), na pagitan X HOUR)) MAAYOS NG `id` ASC; 

    Sa pamamagitan ng daklot jobs na hindi na bumalik sa mga resulta ng X na halaga ng oras namin matiyak na ang lahat ng mga trabaho ay tatakbo sa kaganapan ng isang worker crashing o pagpunta AWOL.

  3. Susunod na sunggaban ang mga detalye ng mga trabaho na sinusundan ng mga talaan sa kanilang sarili:
      PUMILI MULA * `jobs` `WHERE started_by` = __ME__ LIMIT 1;
     PUMILI * MULA `job_records` SAAN `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.

Buod

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
  • Isaayos ang iyong trabaho upang tiyakin na sila ay tumakbo nang mabilis at mahusay walang paglagay ng masyadong maraming presyon sa iyong network ng imprastraktura, at walang pagkokopya processing gawain sa isang regular na batayan.
  • Tiyakin na ang build mo kasalanan tolerance at error checking sa iyong gawain, mga manggagawa ay maaaring suspindihin at ipagpatuloy at ang pinaka panggulo ng beses. Tandaan na suriin kung may resulta naisumite na ng ibang worker.

Susunod na panahon

Sa part 3 kami gumawa ng aming mga virtual machine processing at set up ng aming mga machine bintana para maging idle-time manggagawa.

Office Grid Computing gamit kapaligiran Virtual - Part 5

By Steven Lloyd Watkin , Friday 4th December 2009 11:03 pm

Pagpapakilala

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

  • 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

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.

Zend Framework: Fundamentals – Review

By Steven Lloyd Watkin , Sabado 28 Nob 2009 22:42

My employer kamakailan binayaran para sa isang grupo ng mga developer sa amin na kumuha ng Zend Framework: Fundamentals course, dito kukunin ko na sabihin sa maikling pangungusap ang aking mga saloobin at opinyon sa mga kurso para sa iba. For those looking to save time, here's my summary:

Para sa mga developer na hindi nagkaroon ng oras upang tumingin sa Zend Framework sa kurso (Zend Framework: Fundamentals) ay nagbibigay ng isang magandang pangkalahatang larawan ng balangkas ng pagpapasok sa inyo na ang mga susi na lugar at pagbibigay ng sapat na impormasyon upang magpatuloy. Para sa mga may oras na ginugol naghahanap sa mga balangkas at sinundan o dalawang tutorials isang kurso na ito ay hindi nag-aalok ng marami sa kabila.

Likuran

Ako ay isang PHP developer para sa mga paligid ng 5-6 na taon, at may nagsimula sa paggawa ng mga Zend Framework sa isang bahagi na batayan sa huling 6 na buwan. 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.

Tungkol sa Kurso

Ang mga kurso ay inihatid higit sa 9 oras ng dalawang session webex (sa isang 10-minutong break sa gitna). Ang panahon ay ginugol pagpunta sa pamamagitan ng isang set ng mga slide na ibinigay ng Zend may discussion sa anumang oras. Maaari mong gamitin ang isang mikropono upang makipag-usap sa mga instructor, ngunit upang maging matapat na hindi ko nakita kahit sino gamitin ang anumang bagay na higit sa chat window. Sa karagdagan ng isang makina VMware Ubuntu ay ibinigay na halimbawa code at proyekto-set up ng isang isang bersyon trial ng 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.

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. discussion Ang nagpakita bootstrapping, Zend_Application, db Tables, Database access, Forms, Filtering, ACL, Pagpapatunay, atbp, atbp Talaga sumasaklaw sa lahat ng mga paksa na gusto mo ay nangangailangan upang makakuha ng isang pangunahing site up ang isang tumatakbo sa lahat ng oras ng pagbibigay sa iyo ang mga kasangkapan sa pumunta at makakuha ng mas maraming mga advanced na sa balangkas (bagaman ito ay halaga na 'Tingnan ang mga website' sa marami ng oras).

Time ay ibinibigay sa mga code ng up ng ilang mga halimbawa, at upang bumuo ng 'guestbook' at simpleng 'wiki' na application. Personal ko nadama na ang pagbibigay ng code o sa bawat app at pagkatapos ay humihingi sa amin upang bumuo ng kung ano ay mahalagang isang kopya sa tabi hindi talaga magbigay ng isang magandang aaral ng karanasan. Gusto ko may ginustong upang bumuo ng isang application katulad na, ngunit hindi magkapareho. sa halimbawa ng application sa mga benepisyo ng pagkakaroon ng isang gabay upang sumangguni sa. Bilang kahalili gusali ng mga aplikasyon mula sa simula sa mga demostrador ay marahil ng humantong sa mas maraming mga katanungan tungkol sa kung bakit at kung paano, kaya nagbibigay ng isang mas mahusay na pang-unawa ng mga balangkas, pagkatapos ng lahat ikaw ay maaaring tumingin up specifics matapos ang kurso.

Ang huling panayam binubuo ng mga nagtatrabaho sa mga wiki na application na may tulong / guidance mula sa instructor. Matapos ang mga kurso ng feedback ay kinuha, ito ay binigyang diin ng ilang beses sa pamamagitan ng mga kurso na Zend tumatagal feedback tunay mataimtim, sa katunayan tila ang aming bersyon ng mga kurso ay lubos na bagong. Ang ilan sa mga iba pang mga developer sa mga kumpanya ay ang pagkuha ng mga kurso sa lalong madaling panahon upang ito ay na interesante sa mga makita kung ito ay nangyari.

Ang mga kurso estilo ay impormal, na pinapayagan para sa mga puna at pakikipagtulungan sa pagitan ng mga dadalo at ang instructor. The course leader was friendly, approachable (email addresses were shared for questions), and whilst his presentation from the slides was a bit shaky seemed fully competent in the framework. Siya ay malinaw na isang tao na ginagamit ng balangkas sa isang regular na batayan sa halip na isang taong ay tinuruan upang turuan ang mga kurso, ako nagustuhan ang karanasan ng 'totoong mundo' sa na paggalang.

Pangkalahatang Feeling

Sa ilang mga paraan ko natagpuan ang mga kurso ng isang aksaya ng oras, sa iba ito ay tunay magaling. Sana'y ako makakuha ng aking mga dahilan sa kabila ng malinaw, at maaaring magbigay ng ilang mga pagkain para sa isipan o kapaki-pakinabang feedback (alam sa akin ito ay walang kasiguruhan!).

Para sa aking sarili kurso na ito ay naglalayong sa masyadong mababa ang isang antas. 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. Gusto ko ng nagustuhan ang mga kurso sa pick up mula sa dulo ng quickstart at bumuo ng karagdagang kasanayan.

Na sinabi, ang mga kurso pamagat ay malinaw na estado "Zend Framework: Fundamentals" at sa na aspeto kurso ang achieves kung ano ito sets out na gawin. Other members of the development team that haven't spent the time looking into the framework finished each session with enthusiasm and asked questions which was really nice to see.

Lahat ay hindi nawala, ito ay mabuti na gugugol ng oras na pinagtitibay ang mga pangunahing detalye ng balangkas at makakuha na humingi ng isang pares ng mga katanungan sa mga lugar kung saan ako ay hindi 100%. Ito ay din ng panahon na ako got sa umupo sa bawat araw at isipin ang tungkol sa coding gamit ang framework at sa hinaharap na mga proyekto, isang bagay na hindi ko ng na-able sa gawin kung hindi man (maaari mong gunigunihin ng iyong kumpanya sumasang-ayon sa na:?)). Huling ngunit hindi bababa ka rin ng isang magandang certificate mula sa admin na sabihin na kayo pumasok sa mga kurso (kahit sa pamamagitan ng email).

Zend Framework Certification

This was one question that kept coming to mind during the course, would it prepare me for the certification? Ang mabilis, madaling ay isang resounding No. Ang mga kurso instructor ay lubos na malinaw sa na may mga karagdagang payo na para sa sertipikasyon na dapat mong tunay ay ang paggamit ng balangkas sa isang araw-araw na batayan at pakiramdam tunay kumportable at tiwala sa kanyang paggamit at methodologies.

Buod

Given ang lahat ng bagay ko na nakasulat sa itaas, makikita ko sabihin sa maikling pangungusap ang lahat ng bagay sa dalawang madaling mga puntos na bala:

  • Bagong sa Zend Framework: kurso na ito ay kung ano mismo ang gusto mong asahan, ito ay nagbibigay sa iyo ng isang magandang panimula sa mga balangkas at ng isang mabuting saligan sa mga pangunahing kaalaman kung saan maaari kang bumuo. Ang mga kurso tila upang makabuo ng interes at sigasig para sa mga balangkas sa gitna ng mga developer.
  • Ginagamit ang Zend Framework: Habang ito ay nice sa baybayin up ang ilan sa mga tunay pangunahing kaalaman ko nadama ang panahon, pagsisikap, at pondo na kumuha ng kurso ang maaaring ng mas mahusay na ginugol sa ibang dako. Ito ay magiging nice na see Zend lumikha ng isang bagong mas mataas na antas, na kumuha ng mga developer sa susunod na antas - hindi bababa sa mga pamantayan ng sertipikasyon at lampas agad. Para ko na mag-sign up.












Panorama Theme sa pamamagitan ng Themocracy

3 visitors online now
2 mga bisita, 1 bots, 0 miyembro
Max mga bisita ngayon: 12 sa 09:44 UTC
Sa buwan na ito: 26 at 2011/07/05 12:35 UTC
Sa taong ito: 130 sa 28-03-2011 22:40 UTC
Lahat ng oras: 130 sa 28-03-2011 10:40 UTC