Kategorija: Web Programmēšana

Route pieprasījumus sitemap.xml uz pasūtījuma kontrolieris / darbības

Ar , trešdiena 6 Jan 2010 12:13

Lai novirzītu pieprasījumu / sitemap.xml uz pielāgotu vadības un rīcības savā Zend Framework pieteikumu vienkārši pievienojiet šādu jūsu application.ini vai alternatīvu config failu (piem., es izmantoju navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = indeksu
 resources.router.routes.sitemap.defaults.action = sitemap

Piemērs kods izvada var redzēt, izveidojot darbības attiecīgo datu apstrādātāju (piemēram, manu sitemap slēpjas indeksā kontrolieris, sitemap darbība):

 < php
 klase IndexController
     paplašina Zend_Controller_Action
 {
     / **
      * Renders sitemap pamatā Zend_Navigation uzstādīšana
      * /
     valsts funkciju sitemapAction ()
     {
    	 echo $ this-> view-> navigācijas () -> sitemap ();
    	 $ This-> view-> izkārtojumu () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (patiess);
     }
 }

Portālkartes var ātri un viegli iegūt, izmantojot Zend_Navigation , liels ātri pamācību (un kopumā ļoti noderīga Zend Framework tutorials) ir Zend rada - Dinamiski izveidot izvēlni sitemap un rīvmaizi .

Zend Framework Per-Module balstītus iestatījumus

Ar , piektdiena 1 Jan 2010 22:40

Esmu izveidojis follow uz šo amatu, kas prasa mazāk konfigurācija, lūdzu, skatiet modulis balstās Layout - Zend Framework .

Izmantojot Zend Framework ar moduļiem, tā skaidrs, ka, ja jūs darbojas dažādas (sub-) vietām pie paša pieteikuma Jūs ne vienmēr vēlas to pašu izkārtojumu skripti par katru daļu. Es izlēmu iet ar šādu vietnes struktūrā:

  / Application
     / Kontrolieri
         ...
     / Modeļiem
     / Moduļi
         / Default
             / Kontrolieri
             / Layout
                 / Scripts
             / Viedokļi
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Problēma bija izveidot izkārtojumu skriptus par katru moduli atsevišķi. Atbilde nāca, izmantojot, izmantojot rīcības Helper. Izveidojot izkārtojumi par vienu moduli pamats ietver trīs darbības:

  1. Application.ini (vai līdzīgas konfigurācijas setup):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / izkārtojumus / scripts"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / izkārtojumus / scripts"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / biedrs / izkārtojumus / scripts"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / filiāli / izkārtojumus / scripts" 
  2. Izveidojiet savu rīcību Helper:
      <? Php
     / **
      * Iestata izkārtojumu ceļu uz vienu moduli pamats
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Kopš 2010/01/01
      * /
     klase Pro_Controller_Action_Helper_SetLayoutPath
         paplašina Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Sets izkārtojums pamatotā ceļa moduli
          * /
         valsts funkciju preDispatch ()
         {
        	 $ Modulis = $ šīs-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ šīs-> getActionController ()
    	                        -> GetInvokeArg ("bootstrap")) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ moduli] [resursi '] [' izkārtojums '] [' layoutPath '])) {
    	             $ LayoutPath =
    	                  $ Config [$ moduli] [resursi '] [' izkārtojums '] [' layoutPath '];
    	             $ This-> getActionController ()
    	                  -> GetHelper (izkārtojums)
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Un visbeidzot boostrap darbības palīgs:
      ...
         / **
          * Izveido izkārtojums skriptus par katru moduli, pamatojoties
          * /
         aizsargājamo funkcija _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap (frontController ");
    	     $ Izkārtojums = Zend_Controller_Action_HelperBroker: addHelper (
    	         jauns Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Mācība: DATETIME noklusējuma NOW ()

Ar , trešdiena 30. 2009 Decembris 18:30

Es esmu cīnās ar ko izveido datubāzes shēmu par jaunu Zend Framework projektu. Es esmu izmantojot mēģinot izmantot Doktrīna ORM manu datu bāzes modeļiem. Man ir nepieciešams izveidot shēmu, lai tas ļāva man, lai uzstādītu noklusēto datumu un laiku, `datetime` kolonna, piemēram, pievienojot jaunu ziņu man pašreizējā laikspiedolu. Pēc daudz meklēšanu un eksperimentējot es atklāju risinājumu, tāpēc es esmu dalīšanas to.

Savā shēmas YAML failu, vienkārši rīkojieties šādi:

 Message:
   actAs:
     Timestampable:
       izveidots:
         nosaukums: created_at
         tips: Laikspiedols
         formāts: Ymd H: i: s
       atjaunošana:
         nosaukums: last_updated
         tips: Laikspiedols
         formāts: Ymd H: i: s
   kolonnas:
     ID:
       tips: vesels skaitlis
       galvenais: patiess
       autoincrement: patiess
     nosaukums: string (255)
     e-pasts: string (300)
     ziņa: string (2000)

Ja, no otras puses, jūs nevēlaties `updated_at` ailē var izmantot šādi:

 Message:
   actAs:
     Timestampable:
       izveidots:
         nosaukums: created_at
         tips: Laikspiedols
         formāts: Ymd H: i: s
       atjaunošana:
         invalīdiem: patiess
   kolonnas:
     ID:
       tips: vesels skaitlis
       galvenais: patiess
       autoincrement: patiess
     nosaukums: string (255)
     e-pasts: string (300)
     ziņa: string (2000)

PHP Design Patterns - Observer Pattern

Ar , otrdiena 29 decembris 2009 22:02

Esmu bijis lasījums Head First Design Patterns nesen, un ir nolēmis uzrakstīt dažus modeļus, kā PHP piemēri par manu pašu labā. Pirmais, ka es esmu nolēmis kods up ir Observer Pattern . Formāla definīcija Observer Pattern ir:

Novērotājs modelis (no asinhronas apakškopu publicēt / abonēt modelis ) ir programmatūra, dizaina modelis , kurā objekts , ko sauc par tēmu, uztur sarakstu apgādājamiem, ko sauc par novērotājiem, un par to paziņo automātiski jebkura stāvokļa izmaiņām, parasti pa tālruni viens no viņu metodēm . Tas galvenokārt tiek izmantots, lai īstenotu izplata notikumu apstrādes sistēmas.

Kā sistēmas kļūst brīvi sapārotas, pārliecinoties, ka tad, kad notikums notiek visu sistēmas, kas prasa zināšanas par šo atjauninājumu ir informēti. Piemēram, blog post, pēc glābšanas amata mums var būt nepieciešams atjaunināt meklētājprogrammu (piemēram, Lucene), atjauniniet savu sitemap, tags, e-pasts parakstītā lietotājiem uc novērotājs modelis ļauj izstrādātājiem, lai pievienotu papildu klausītāju bez rediģēšanas viņu redzamiem objektu . Pēc injicēšanas novērotājiem (ti meklētājprogrammu update novērotājs, sitemap ģenerators, utt) par tēmu (ti blog post rediģēšanas sistēmu), mēs varam atļaut tai veikt visus nepieciešamos atjauninājumus bez izmaiņām.

Turpināt lasījums "PHP Design Patterns - Observer Pattern" »

Biroja Grid Computing, izmantojot virtuālo vidi - 4.daļa

Ar , piektdiena Dec 4, 2009 11:59

Ievads

Es strādāju uzņēmumā, kurā mēs palaist daudzas partijas darba vietu apstrādes miljonu ierakstu datu katru dienu, un es esmu bijis domāt nesen par visām mašīnām, kas sēž apkārt katru dienu, neko nedarot, vairākas stundas. Vai tas nebūtu labi, ja mēs varētu izmantot šos mehānismus, lai atbalstītu pārstrādes jaudu no mūsu sistēmu? Ar šo komplektu raksti Es esmu, lai aplūkotu potenciālo ieguvumu nodarbina biroja tīklu , izmantojot virtualised vidēs.

Ar 3 daļu mēs izveidojām mūsu virtuālajā apstrādes mašīnas un iestatīt Windows mašīnas, lai kļūtu dīkstāves laika darba ņēmējiem.

Running jaunākās kodu

Neizbēgami pēc veidojot savus strādniekus biznesa loģiku mainīsies, bugs tiks atrasta, ātrāk efektīvāk kods tiks ražots, tādējādi atstājot savu darba sēdēja ap apstrādā datus, izmantojot veco smirdošs kodu . Kā tad mēs nodrošinātu to, ka mēs vienmēr izmantot jaunāko un lielāko versija mūsu apstrādes skriptu?

Ir daži ļoti viegli vienkāršus veidus, kā mēs varētu darīt, triks, tomēr, ir samazināt apstrādes jaudu un tīkla trafiku lai to sasniegtu. Sāksim ar vienkāršāko risinājumu un uzlabotu tā lēnām pār pāris atkārtojumiem.

Pirmā metode būtu vienkārši savienot ar mūsu darba kontroles servera (ar samba, FTP vai līdzīgām), un pavelciet uz leju jaunāko versiju kodu. Ne ļoti efektīvs, bet tas būs darīt to darbu. Ļauj uzlabot, ka nedaudz, kā par radot rsync skriptu, un, izmantojot, ka katru reizi tā vietā? Alternatīvi, ko par liekot mūsu jaunākās apstrādes skriptu kaitniecību pārbaudes veic koda sākumā un pēc tam vienkārši atjaunināt mūsu kodu katrā reizē ( svn update )?

Galu galā mēs varētu beigties ar bash skriptu (ko sauc par cron ik pēc 10 minūtēm), kas izskatās tik vienkārši, kā šis:

  # / Bin! / Sh
 ja ps ax | grep-v grep | grep php > / dev / null
 Pēc tam
     echo "Darba pašreiz ir apstrāde, izbraukšana"
 vēl
     echo "Darba nedarbojas, sāc jau tagad"
     cd / ceļš / uz / darba / kopija
     svn update
     php yourJobProcessingScript.php
 fi 

Tagad mēs varam būt pārliecināti, ka ar katra vada mēs noteikti darbojas jaunāko kodu. Mēs esam to nodrošinātu, papildinot mūsu kodu bāze katru reizi, kad mēs veiktu palaist un samazinot tīkla trafiku, tikai pārceļot uz faila atšķirības mūsu tīklā.

Manā demonstrācijas setup, es darīju tieši tā, kā iepriekš. Subversion tika uzstādīta uz mana darba apstrādi servera un es vienkārši velk jaunākās kodu no "darba ņēmēja" filiāle, izmantojot "svn update". Es arī pievienoja versijas numuru tagu uz manu apstrādes skriptu, kas tika atdota datu bāzi kā daļu no rezultātiem atpakaļ. Tādā veidā es varēju redzēt, ka mans kods tika atjaunināts katru reizi, kad es kopēt manu stumbrs vērā darba ņēmēja filiāle, ti, ka man noteikti bija rādīt jaunākās apstrādes skriptu.

Izmantojot jaunākos datus

Ja jūsu darbs apstrādi izmanto datu avotus, tad kādā brīdī tie būs jāatjaunina too. Ja vien jūs izsauktu datu avotiem par ļoti reti pamats jūs gatavojas plūdu savu tīklu ar satiksmes, tiklīdz jūsu darbinieki sāks darboties celt visu strupceļā. Par manu risinājumu, es nolēmu, ka es gribētu, lai pārvietotu savu datu avotiem apkārt ar savu virtuālo mašīnu.

Turiet jūs zirgi tur! Ko darīt, ja datu avoti ir milzīgs? Nu šis tiešām ir gadījums, cik daudz datu ir mēs runājam? Tas var būt rentablāki uzstādīt papildu lielāku cieto disku uz katras mašīnas, nevis pirkt papildu apstrādes serveri. Tas ir jautājums par budžetu un ir līdz uzņēmuma ziņā. Tas varbūt, ka jūsu datu avoti ir tik liels, ka tā vienkārši neiespējami, lai saglabātu šo datu apjomu savam darba ņēmējam mašīnas. Tādā gadījumā ko tu darītu? Nu mēs varētu apskatīt zvana lokālā datu serveri, bet tas var izraisīt problēmas ar tīklu. Šajā gadījumā režģa sistēmu, piemēram, tas var būt nereāli iekļaut jūsu biroja vidē. Tā var arī būt, ka jūs varat aplūkot alternatīvas darbības stratēģijās, piemēram, tikai aicinot savu darbinieku 20:00-06:00 katru nakti un / vai droselēšanas datu avotu pieprasījumus.

Virzoties tālāk ļauj teikt, ka mūsu datu avoti apjoms datu 100GB. Nu jā, ka ir diezgan daudz datu, lai pārvietotos tīklā atjauninājumu. Kā mēs nodrošinām, ka mums ir jaunākās datu kopiju šajā gadījumā? Rsync ir iespēja, bet personīgi es domāju, ka, darbinot jaunāko datu avots par jūsu darbu apstrādes servera un veidojot šo augšu, kā meistars replikāciju (ar jauku ilgi bin log) varētu būt veids, kā iet:

replikācijas Nosakot katru no jūsu darbiniekiem izveidota kā vergu darba kontroles servera atjauninājumus jūsu datu avotiem būs sajust uz leju, labi, lai jūsu darbiniekiem bez milzīgu pieaugumu tīkla aktivitātes (tas ir, ja vien jūs veikt milzīgu datu atjauninājums un visas jūsu darbiniekiem kick uzreiz). Šis ir priekšrocības salīdzinājumā ar rsync, jo jums nebūs ilgu pauzi pirms katra darba, kā datu bāzes atjauninājumus, mysql dēmonu jūsu darbinieks nepārtraukti atjaunināt datus, kamēr apstrāde turpinās.

Tas ir, kā es izveidoju manu demonstrējumu serveri. Lai iestatītu atkārtošanas Es sekoju rokasgrāmata par mySQL vietā ( Setting up replikāciju ) un 20 minūšu laikā, man bija mana Iekšējās darba ņēmējs atdarināt darba kontroli serveriem datu kopas. Par katru papildu darba ņēmējs replikāciju uzstādījumus un process strādāja katru reizi, kad VM tika kopēts.

Kopsavilkums

Šajā sadaļā rakstā mēs esam apskatīja, cik viegli un nesāpīgs ir saglabāt savu apstrādes kodu, līdz dienai, using rsync vai subverion (SVN), lai veiktu darbu, un samazina tīkla trafiku, tajā pašā time. Mēs arī apsprieda to, kā saglabāt savu datu avotu informāciju, up-to-datums, ļaujot tam sajust katram jūsu darbiniekiem. Tādējādi mums jomā, nodrošinot, ka mēs sekot līdzi biznesa loģiku un informācija mūsu birojā režģa sistēmu. Ir acīmredzami būs neskaitāmas alternatīvas Veicot šos uzdevumus, bet šeit ir divi vienkārši piemēri, lai parādītu, cik vienkārši risinājums ir nākt ar.

Nākošreiz

Pēdējā daļā šīs sērijas, aptly nosaukts 5.daļa , mēs apspriestu izvēršot šo sistēmu. Es apkopot to, kas ir iemācījušies un ko man izdevās izveidot.

Biroja Grid Computing, izmantojot virtuālo vidi - 3.daļa

Ar , piektdiena Dec 4, 2009 23:37

Ievads

Es strādāju uzņēmumā, kurā mēs palaist daudzas partijas darba vietu apstrādes miljonu ierakstu datu katru dienu, un es esmu bijis domāt nesen par visām mašīnām, kas sēž apkārt katru dienu, neko nedarot, vairākas stundas. Vai tas nebūtu labi, ja mēs varētu izmantot šos mehānismus, lai atbalstītu pārstrādes jaudu no mūsu sistēmu? Ar šo komplektu raksti Es esmu, lai aplūkotu potenciālo ieguvumu nodarbina biroja tīklu , izmantojot virtualised vidēs.

In part 2 mēs apskatījām darbu serveris darbosies, un kā darba vietas, jākonfigurē, lai sasniegtu lielāko pārstrādes apjoma, vienlaikus nodrošinot, ka katrs darbs ir apstrādāti bez neizdoties.

Izveidojot savu darba ņēmējs - vai mīksts serveri

Nākamais solis ir izveidot savu virtuālo darba ņēmējiem. Par to es esmu gatavojas izmantot uzstādīt CentOS, izmantojot VirtualBox. Es esmu gatavojas uzstādīt MySQL un PHP uz servera, kas pazīstams arī kā mīksts (Li nux, m ySQL, P HP) Servera (es varētu būt veikti šo nosaukumu up).

  • Install VirtualBox uz jūsu Windows mašīna (sekojiet saitei)
  • Lejupielādēt un instalēt CentOS (pašreizējā versija 5.3), kas izveidota virtuālā mašīna

Nav nekādas jēgas man iet uz šo tur droši vien 1000 's liels konsultācijas, kas tur (ok, šeit ir viens: izveide un Managing CentOS virtuālās mašīnas zem VirtualBox ). Svarīgi atzīmēt, es domāju, ka es aicināju savu virtuālo mašīnu GridMachine.

Runājot par manu izvēli virtualizācija klientu un operētājsistēmas iet tur nav liels pārliecinošs iemesls katra izvēle. VirtualBox ir kaut kas es izmantot manas mājas mašīnu, un to atbalsta trim galvenajām operētājsistēmām. Es izvēlējos CentOS kā tā ir laba stabilu OS, un es to izmantot par savu web serveri. Es esmu liels ticīgais pareizo rīku darbu (lai gan es esmu piemērojot "izmanto ātrākais un vieglākais jūs mentalitāte šeit), tāpēc, ja operētājsistēma X darbojas savu kodu, ātrāk un efektīvāk izmantot šo vietā:)

Svarīgi pārliecināties, ka jūsu VM izmanto DHCP, pretējā gadījumā par katru jaunu virtuālo mašīnu būtu nepieciešams konfigurēt atsevišķi, kas ir kaut kas mums nav want.By izmantojot DHCP mums nav nepieciešams konfigurēt tīkla uzstādījumus individuāli strādnieku mašīnām, DHCP nodos out IP jums. Tādējādi jūs varat kopēt jūsu virtuālā mašīna par biroju, neuztraucoties par iestatījumu katram vienu uz augšu (tas uzlabo mērogojamību un samazina darbinieks pārvaldi).

Procesu, jums vajadzētu censties sasniegt, būtu, lai iegūtu jaunas fizisko mašīnu, instalēt VirtualBox, tad diezgan daudz izvietot virtuālo attēlu bez daudz kas cits. Tas varētu būt gudrs setup visiem saviem darbiniekiem par dažādiem apakštīkla, lai jūs varētu vismaz redzēt, cik daudz mašīnu darbojas. Jums būs nepieciešama arī, lai izveidotu savu mašīnu uz ilgtermiņa nomas līgumu vai neierobežotu nomas DHCP.

Kā palaist Jobs strādnieks

Šī ir interesanta joma, un ir vairākas derīgas metodes, pārstrādes darbavietu darbiniekiem. Šeit es ņemšu tikai apspriest divus acīmredzami:

  • Mūžīgie darbības skriptu: skripts, vai tas shell skriptu, vai PHP skripts tiek izpildīts, kad darba ņēmēja un darbojas kā daļa no infinite loop. Esmu diskontētās šo metodi kā vienu crash no skripta, un, iespējams, jūsu darbinieki beigs darboties bez kaut kādas iejaukšanās.
  • Cron balstīta skriptu izpildi: Katru X minūtes cron daemon kicks off zvanu uz savu skriptu, lai iegūtu lietas turpinās. Bez daži pārbaudot tas varētu novest pie daudz daudz kopijas jūsu darbinieka skriptu darbojas.

Mans lēmums bija iet ar cron, kas kicks off shell skriptu ik pēc 10 minutes. Mans shell skriptu veic šādus uzdevumus:

  1. Get process sarakstu un grep šo par "php". Ja nav atrasts, tad turpināt.
  2. Zvaniet savu darbu kods, manā gadījumā tas būtu kaut kas balstīta PHP
  3. Worker skripts pabeidz palaist
  4. Gatavi doties atkal uz nākamo zvani netiek pienācīgi

Mana bash skripts izskatās kaut kā šādi:

  # / Bin! / Sh
 ja ps ax | grep-v grep | grep php> / dev / null
 Pēc tam
     echo "Darba pašreiz ir apstrāde, izbraukšana"
 vēl
     echo "Darba nedarbojas, sāc jau tagad"
     php yourJobProcessingScript.php
 fi 

Piezīme: echo 's ir gandrīz pilnīgi bezjēdzīgi, bet var palīdzēt nākamajai personai, kas nāk kopā, lai mēģinātu un rediģēt tos.

Tas secina, izveidoja darba ņēmēja virtuālās mašīnas, ātrs, vienkāršs un viegli, lai kopētu uz katru jaunu gabals aparatūru, kas tiek saņemti. "Gudrību" no tīkla sistēma tik tiešām nav vizualizē OS, tā visi darīt ar kodu, kas izveidota, lai process darba vietas, darba konfigurāciju, un, lai pārliecinātos, ka darbs sākas, kad nepieciešams (ti, ja uzņēmējas ir dīkstāvē ).

Iestatīšana Windows, lai inicializētu darbinieku

Pirmais uzdevums ir izstrādāt komandu nepieciešams, lai palaistu virtuālo mašīnu no Windows komandrindas. Ja esat uzstādītas noklusējuma atrašanās vietā un VirtualBox esat nosauca savam darba ņēmējam GridMachine tad komanda nepieciešama, lai slodze jūsu darba ņēmējs ir:

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

Tomēr, lai palaistu skriptu "bez galvām" valsts mums ir nepieciešams izmantot:

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

Tas sāksies virtuālā mašīna bez GUI un ļauj tai saglabāt valsts graciozi. Otrais arguments izslēdzas RDP, lai tas nav pretrunā ar logiem RDP, vai dot jums ziņu par klausīšanās uz 3389 portu. Virtuālā mašīna nosaukums ir reģistrjutīga!

Tālāk, mums būs nepieciešams, lai uzstādītu logiem līdz kick off mūsu darbinieks VM, kad mašīna ir dīkstāvē. Lai to izdarītu (Windows XP), jums vajadzēs doties Start -> All Programs -> Accessories -> System Tools -> Ieplānotie uzdevumi, kā norādīts zemāk:

plānoto uzdevumu

Tālāk noklikšķiniet uz 'Pievienot Plānotais uzdevumu ", kam seko pārlūkojiet, lai pievienotu pielāgotu programmu. Dodieties uz savu VBoxManage skriptu un uzklikšķiniet OK. Ieplānojiet savu uzdevumu attiecībā uz kādu no iespējām (mēs mainīt šo minūti) un turpināt. Pēc tam, izlaižot nākamo ekrānu logi lūgs jums, kas jūs vēlaties palaist šo uzdevumu, es gribētu ieteikt vai nu "administrators" vai izveidojot jaunu priviliģētu lietotāju. Atcerieties, mēs nevēlamies iejaukties standarta personālu kontu mašīnu jebkurā vietā. Noklikšķiniet uz nākamo un pārbaudīt parādīt uzlabotas iespējas šo uzdevumu.

Uz beigām palaist textbox pievienot mūsu "startvm GridMachine" string un nodrošinātu, ka darbojas tikai tad, kad pieteicies ir palicis unticked. Apmeklējiet grafiks uzdevumu nākamo un mainīt grafiku nolaižamajā iespēju ", kad tukšgaitas", izvēlieties laiku vēlaties mašīna ir dīkstāvē pirms pāriešanas uz nākamo cilni.

Visbeidzot, untick risinājums, kas noteikts pārtraukt uzdevumu, ja tas ir darboties X daudz laika, bet atzīmējiet opciju, lai apturētu uzdevums, ja iekārta vairs dīkstāvē.

grafiks

Tas ir tas tad windows uzņēmējas setup!

Kopsavilkums

Šajā sadaļā mēs esam izveidojuši virtuālo mašīnu, kas darbojas kā darba ņēmējs, kā arī veidu, kādā mēs saucam un izpildīt mūsu darbs apstrādes skriptus (par sevi PHP skriptu). No šejienes mēs apskatīsim, kā izveidot savu Windows kopijas uzsākt virtuālās mašīnas, bez galvām režīmā, kad dators kļūst idle, un saglabāt savu stāvokli, kad lietotājs atsāk izmantošanu mašīna. Cerams, ka šajā brīdī jūs redzēt, cik vienkārši ir izveidot tādu sistēmu, un ir nieze, lai iegūtu daži eksperimenti turpinās sevi!

Nākošreiz

Ar 4 Part būsim meklē, izmantojot līdzekļus, lai nodrošinātu, ka jūs lietojat jaunāko versiju kodu un datu avotiem, lai iegūtie rezultāti ir vienmēr up-to-dienu ar jaunāko biznesa informāciju un loģiku.

Biroja Grid Computing izmantojot Virtual vidē - 1.daļa

Ar , piektdiena Dec 4, 2009 11:23

Ievads

Es strādāju uzņēmumā, kurā mēs palaist daudzas partijas darba vietu apstrādes miljonu ierakstu datu katru dienu, un es esmu bijis domāt nesen par visām mašīnām, kas sēž apkārt katru dienu, neko nedarot, vairākas stundas. Vai tas nebūtu labi, ja mēs varētu izmantot šos mehānismus, lai atbalstītu pārstrādes jaudu no mūsu sistēmu? Ar šo komplektu raksti Es esmu, lai aplūkotu potenciālo ieguvumu nodarbina biroja tīklu , izmantojot virtualised vidēs.

PHP attīstītājs es esmu gatavojas izmantot rīkus, ka es izmantot katru dienu, proti, Linux, MySQL , PHP, VirtualBox un apvērsumu (SVN). Tomēr es ceru, ka šī rokasgrāmata būs pielāgoties citām valodām un tehnoloģijām tikpat labi.

Risinājums Es jāsniedz, tiks ļoti brīvi balstīta uz pārstrādes veidu mēs būtu nepieciešams, lai sasniegtu tomēr tas var nebūt taisnība caur visu rakstu, kā es jums mainīt lietas pēc vienkāršības, vai radīt vairāk interesantu izmantošanas iespējām.

Šie virtualised vides darbosies uz Windows mašīnas, jo tas ir tas, ko par biroju vairākums palaist. Pārstrāde, biroju iekārtas do nedrīkst būt pretrunā ar darbiniekiem, izmantojot šo mašīnu, ja nav nepieciešama īpaša apkalpošana pie mašīnas, un ir viegli izvietojamas uz jaunām iekārtām, kā tās kļūst pieejamas. Arī jaunu virtuālo mašīnu nedrīkst pieprasīt papildu konfigurācija, jo tas ievērojami samazina mērogojamību un vieglumu, ar kādu tīkla sistēmu var paplašināt.

Kāpēc Ieviest Office Computing Grid?

Pirmkārt, jums var domāt, kāpēc ne tikai izmantot mākonis skaitļošanas resursu, piemēram, Amazon EC2 platformu ? Nu tad tā iemesli var būt vairāki, piemēram:

  • Jums nav uztic konkrētus datus mākonis skaitļošanas vidē
  • Jūs nevarat ievietot dažus datus mākonis skaitļošanas vidi juridisku iemeslu dēļ (piemēram, datu atstāj valsti), iespējams juridisku iemeslu dēļ, piemēram, NHS ierakstus.
  • Jūs vēlaties, lai jūsu procesora bloku tuvu un ir pilnīga kontrole pār aparatūras pārāk
  • Jums nav projekta līdzekļiem, lai palaistu mākonis gadījumos
  • Jūsu birojs nav savienojuma ar internetu, un tāpēc tās nav iespējams izmantot mākonis resurss
  • Tev nepatīk lietus, mākoņi liecina lietus, tāpēc jūs turēt tālu

Es esmu pārliecināts, ka sarakstu varētu turpināt, bet es domāju, ka ir pietiekami, tagad.

Priekšrocības Office Computing Grid

Nu, ļauj veikt dažas matemātikas (un patiess fizikas stilā ļauj veikt dažas slaucīšana pieņēmumi). Iedomājieties, jums ir liels gaļīgs apstrādes servera, kurā darbojas 100 darba vietas dienā. Savā birojā jums ir 50 mašīnas, kas ir idle 16 stundas dienā, katru no šīm mašīnām ir 10%, kā spēcīgs kā savu gaļīgs apstrādes atdalīt. (Visi rezultāti šeit ir noapaļotas līdz nenovērtēt veiktspējas pieaugumu).

Tātad, 1 mašīna * 10% jaudu * 2 / 3 laika = 0,067, ti, 1 desktop apstrādes dīkstāves laikā varētu apstrādāt 6 pilnas darba vietas dienā.

Ja tagad mērogu šo augšu, tā aizņem 15 dīkstāvē galddatoriem procesā, kā daudzas darbavietas katru dienu kā savu galveno apstrāde serveris.

Tātad mūsu izlikties birojā 50 mašīnu mēs varētu paaugstināt mūsu pārstrādes jaudu no 1 servera līdz 4 pilnas apstrādes serveriem, vai arī mēs varētu būt apstrāde 400 darbu dienā, nevis 100.

Paziņojumā, ne investīcijas jaunās aparatūras jūsu uzņēmums ir tikko palielinājis partijas apstrādes jaudu 4 reizes! Potenciāli jūs gatavojas palielināt savu jaudas izmantošana, bet no vairuma biroju vidēm es esmu bijis mašīnām parasti atstāj uz nakti anyway, lai jūs varētu redzēt to kā zaļo iniciatīvas.

Citas priekšrocības arī nozīmē, ka investīcijas jaunu (vai papildināts) apstrādes serveriem var aizkavēties, ja Jūsu biroja iekārtas ir pietiekamas un ka, kā jums uzlabot jaudu jūsu biroja tehnikas ofisā energosistēma kļūtu spēcīgāk automātiski.

Tehnoloģijas

Kas Jums nepieciešams? (Vai precīzāk Ko man vajadzībām):

  • Idle biroja iekārtas (manā gadījumā rezerves veco logu XP klēpjdators)
  • VirtualBox (vai citu virtualizācija klienta programmatūra)
  • Virtuālo ar PHP, MySQL running mašīna darbojas samazināt OS, es esmu aicinot šiem maniem Limp serveriem:)
  • Darbs, lai palaistu
  • Darba serveris (var būt cits virtuālo mašīnu kaut kur)

Tipiski Darbs

Darba vietu, ka šī sistēma ir izstrādāta, lai palaistu veidiem ir šāds:

  • Sistēmas saņem to datu sarakstu, uz kuriem mums ir nepieciešams, lai atbilstu un atgriezties rezultātus
  • Matching ietver pārbaudi / meklējot vairākas (samērā statisks) datu avotus
  • Rezultāti no datu avotiem var pieprasīt papildu apstiprinājums, apvienošana, pārbaudei, papildu datu avotiem, atbildot uz rezultātiem
  • Dati tiek atgriezta ar atbilstošiem ierakstiem, pilnībā validēti un apstrādāti
  • Katrs darbs ieraksts ir neatkarīga no pārējiem

Vārdu sakot, mēs meklējam tajā darbojas darbavietas, kas prasa maisījumu datubāzi lookups un daži numurs crunching, diezgan tipiski scenārijs uzņēmējdarbības vidi.

Grid risinājumi ir ne tikai izdevīgi apstrādes darbu šāda veida. Būtībā jebkurš process, ko var sadalīt neatkarīgas vienības var darboties paralēli. Skatiet šo wikipedia Piemērus un vairāk informācijas: Grid Computing , bet slavenā piemēri pāris ir Seti @ Home un BIONC . Ir sistēmas, lai darbojas skaitļošanas tīkli un šie ir labi vērts meklēt.

Ko mēs panākt?

Līdz šo pantu es ceru parādīt, ka izvietot biroju tīklā nav ļoti dārgs vai laikietilpīga. Es esmu gatavojas apspriest:

  • Izveide darba kontroles sistēmas, darba konfigurācija
  • Radīt atbilstošu apstrādi virtuālā mašīna
  • Kā setup sistēmas Windows mašīna
  • Nodrošināsim jūs izmantojat jaunāko kodu un datu
  • Izvietošanas un salīdzinošās novērtēšanas
  • Raugoties uz priekšu

Es būšu ēka (ok es būvēts, tad uzrakstīja šo) piemēru piemērošanu, lai pārbaudītu koncepcijas vietējo mašīna, lietojot Windows XP un manu "GridMachine" virtuālo mašīnu. Mans darbs kontroles serveri būs mans galvenais mašīnu, kas iet Fedora 11 .

Tas nekādā ziņā nav domāti, lai pierādītu, pilnīgi darba stabila sistēma, tās nozīmēja vairāk demonstrācijas un apspriešanas liecina, ka šīs lietas var panākt samērā īsā laika posmā un ar nelielām izmaksām. Lūdzu, jūtieties brīvi, lai nosūtītu man komentārus, korekcijas vai uzlabojumus, un es darīšu manas vislabāk, lai saglabātu šo rakstu atjaunināts, lai atbilstu.

Nākošreiz

In part 2 es sākt, aplūkojot darba kontroles sistēmas, un izvērtēs, kā darbavietas, jākonfigurē, lai sasniegtu lielāko pārstrādes apjoma, vienlaikus nodrošinot, ka katrs darbs ir apstrādāti bez neizdoties.

Biroja Grid Computing, izmantojot virtuālo vidi - 2.daļa

Ar , piektdiena Dec 4, 2009 11:23

Ievads

Es strādāju uzņēmumā, kurā mēs palaist daudzas partijas darba vietu apstrādes miljonu ierakstu datu katru dienu, un es esmu bijis domāt nesen par visām mašīnām, kas sēž apkārt katru dienu, neko nedarot, vairākas stundas. Vai tas nebūtu labi, ja mēs varētu izmantot šos mehānismus, lai atbalstītu pārstrādes jaudu no mūsu sistēmu? Ar šo komplektu raksti Es esmu, lai aplūkotu potenciālo ieguvumu nodarbina biroja tīklu , izmantojot virtualised vidēs.

In 1 daļā I sniedza pārskatu sistēmas un tehnoloģijas, man būs, izmantojot, kā arī apspriesti daži no iespējamiem iemesliem, kāpēc vēlaties izveidot biroju tīklu.

Job Control

Ja jūs būs ekspluatācijas darbu, tad jūs gatavojas ir nepieciešams zināms veids, lai pārvaldītu tos. Jūsu darbs kontroles sistēma (jūsu darbs serverī) ir jābūt ļoti labi pārdomāts līdz pat mēģināt palaist biroja tīklam. Tātad, pirmkārt, kādi ir darba kontroles sistēmas uzdevumi:

  • Izkārt darbavietas kad to pieprasa darba ņēmēju
  • Pastāstiet darbiniekiem, kāda veida darbavietas palaist
  • Track darbu
  • Nodrošināt, ka darba vietas ir rādītas tikai vienu reizi
  • Nodrošina darbu datu darbiniekiem, vai vismaz pateikt, kur to iegūt

Sistēmai arī jābūt paplašināms, risinājums, kas strādā tagad vienā gadījumā var tikt pagarināts palaist vairākas darba veidiem, kā biznesa redz vērts režģa risinājumu. Piemēram, darba vietās, var iegūt prioritātes, vairāk nekā viena darba veids var pastāvēt (ti vairākas kods bāzēm), iespējams, jums var pat palaist vairākus atšķirīgus darba ņēmēju mašīnas, kas ir optimizētas katram darba veidam (kas gan nebija virzīties prom no "sugas strādnieks "ideja). Vienmēr mēģiniet domāt par nākotni, izstrādājot sistēmu, īstermiņa redzējums var izraisīt ilgtermiņa vilšanās un palielināt izstrādes laiku.

Darba Server

Mēs ejam uz nepieciešamību kaut kur, lai kontrolētu savu darbu no, tas ir tikai sistēma jūsu režģis, kas ir noteikta resursu vietrādis, ir tā IP adresi, resursdatora nosaukumu, URL (izmantojot iekšējo DNS), uc Tas ir tāpēc, ka darbiniekiem jāzina, kur meklēt darbu, darbiniekiem ir nepieciešams atrast darbu vadības sistēmu (ne darba kontroles sistēmu atrast darbiniekus).

Darbs serveris pats nav īsti ir sarežģīts uzdevums (jo pamata sistēmas tik un tā), tai ir nepieciešama, lai saglabātu vakanču sarakstu, neizvietot darbu, saņemt rezultātus, un pēc tam saglabājiet tos turpmākai atgūt. Cik šīs detaļas (piemēram, "rokas no darbavietām") ir definēti var būt ļoti vienkāršas. Vēlāk mēs varam paplašināt sistēmu, iekļaujot administrācijas saskarni pievienot, rediģēt, dzēst, pārtraukt darba vietas, bet tas pārsniedz šo procedūru.

Nav nekādu iemeslu tam, ka jūsu darbs Serveris nevarēja būt virtuālā mašīna darbojas jūsu galveno apstrādes servera, ja tas nav aizplūšanu pārāk daudz resursu no tā. Darbs serveris Tomēr nav nepieciešams augstas pieejamības, ja tā iet uz leju piektdienas vakarā, jūs gatavojas zaudēt visu nedēļas nogali apstrādes, iespējams, maksā jums pāris nedēļas vērts apstrādes laiku (salīdzinot ar jūsu galveno apstrādes servera vien) . Jūs varētu vēlēties apsvērt savu darbu serverī slodzes līdzsvarotu vidi augstu pieejamību.

Basic Setup

Pamata setup, lai mūsu darbs serveris veidos, ko es esmu aicinot vienu no saviem Limp serveriem (tas ir Li nux, m ySql, P HP). Kods darbojas uz Teu darbiniekiem būs faktiski strādā, kādas darbavietas to var palaist, mijiedarbojoties ar ar darba kontroles sistēmu datu bāzēm. 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

Kā norādīts iepriekš, darba ņēmējiem do mūsu darba vadība mums tagad, lai viss, kas mums nepieciešams, lai tiešām darīt, ir atrast darbu, kas nepieciešams pārstrādes un saņemt informāciju. Kā mēs to darām? Nu uzņemt mūsu darbu atlases kritērijiem un meklēt darba vietas, jo SQL man bija šādi:

  1. Veikt darbu, kas nav atzīmēti kā pabeigta, bet no mūsu darbinieku un atjaunotu tos (aizstāt __ME__ ar identifikatoru, vienkāršākais būtu IP adreses):
      UPDATE `darbu` SET `status` = 0 WHERE `status` = 1 UN `started_by` = __ME__; 
  2. Izmantojot mūsu darbu atlases kritērijiem, izvēlieties darbu un pateikt, ka šis darba ņēmējs ir ar to nodarbojas kontroles sistēma:
      UPDATE `darbu` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `status` = 0 vai
     (`Status` = 1 UN `started_at`> DATE_SUB (NOW (), Interval X stunda)) ORDER BY `id` ASC; 

    Ar satveršanas darba vietas, kas nav atgriezušies rezultātus X laiku mēs nodrošinām, ka visi darbi ir darboties gadījumā, ja darba ņēmēja crashing vai iet AWOL.

  3. Nākamais greifers darbavietas informāciju pēc ierakstus sevi:
      SELECT * FROM `darbu` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Pabeidzot darbu, mēs ievietotu savu rezultātu uzskaiti un atzīmēt darbu kā pabeigtu. Atcerieties, jo darbus var pārtraukt / atjaunot jebkurā brīdī pieļautu zināmu stabilitāti, kas savu skriptu. Varētu būt, ka uzdevums atliek pusi veidā caur atjauninot darba kontroles sistēmas, lai pārbaudītu ierakstu skaits darbu un rezultātu atkal saglabātu darba kontroles sistēmu skaits varētu būt gudrs kustēties.

Turklāt, lai gan tas parāda, cik darba vietas var izvēlēties un pārvalda no SQL query rāmis jums patiešām ir, abstrahējoties Jūsu darba kontroli, lai, ja jūs nolemjat pāriet uz, izmantojot interneta pakalpojumu, failu balstītai sistēmai, XML , vai jebkuru citu vairākas sistēmas, tas neietekmē kods virs tā.

Darba konfigurācija

Nākamais aspekts, kas jāapsver, ir darba apjomu un konfigurāciju. Spēlējoties ar darbavietu konfigurācija mēs varam panākt lielisku līdzsvaru starp ātrumu, process replikāciju un uzticamību. Paņem pāris kādu teksta apstrādes scenāriji:

  1. Darbs jāveic 1 dienā katru rādīt: Tas nozīmē, ka jūsu darbinieki ir 15 dienas, lai apstrādātu katru darbu (atceros 10% no jaudas 2/3rds laika). Tas ir skaidri nav gudrs konfigurācija, jūsu darba apjomu, ir pārāk liels! Būtu nepieciešams vismaz divreiz laiku, lai iegūtu pārstrādātu darbu vajadzētu sākotnējos darbinieks aiziet AWOL (laiks uzņemt, ka tā nav atgriezies rezultāts plus pārstrādes laikā). Ir ideāla, jūs ir vismaz vienu pilnu darbu viegli noskaidroti līdz katra ilgs tukšgaitas periodu, tādā veidā jūs saglabāt darbavietas atzīmējot beidzies, un sliktākajā gadījumā darbu varētu ilgt divas dienas, lai process būtu vispirms iet missing.
  2. Darbs jāveic 1 minūti, lai palaistu: Tas nozīmē, ka jūsu darbinieki aizņems apmēram 15 minūtes, lai palaistu katru darbu. Kaut arī tas sākotnēji var likties ideāls, jūs iegūstat papildu darbs apstrādes laikā pusdienas laikā, kafijas pauzes, tikšanās, utt šis scenārijs rada spriedzi citiem jūsu sistēmas, un ievieš savas problēmas. Piemēram, vispirms jūsu setup / apstrādes laiks attiecība gatavojas iet pa labi uz leju, tādējādi saglabājot sistēmas darba efektivitāti. Jūsu tīkls būs pastāvīgi straumēšanas darba informāciju ar dažādiem darba ņēmējiem nomākta darbinieki, kas ir dong viņu ikdienas darbā. Jūs esat arī gatavojas likt lielāku spriedzi jūsu darbu apstrādes servera, jo tas ir ēdiens no partijām un partijām, mazos gabaliņos, kas strādā uz regulāri. Visbeidzot, šajā situācijā, ja jūsu darbs servera iet uz leju, jūs gatavojas izveidot milzīgu atpakaļ žurnālu nepabeigtajiem darbiem tā kā lielāka darbavietu varētu turpināt apstrādes blissfully neapzinās, ka darbs serveris bija nonākusi grūtībās.

Patiesībā nebūs neviena ideāla konfigurācija tīkla setup, daudz kas ir atkarīgs no pieejamajiem līdzekļiem, darbu veidiem, darba atgriešanas laiku prasībām, tīkla jaudu, un tā tālāk. Tomēr dažas vadlīnijas būtu:

  • Izmērs darbu, lai katrs darba ņēmējs var iegūt, izmantojot vismaz 3-4 darba vietas uz 15 stundām (garākā iespējams dīkstāves laiku)
  • Spēlē ar darba apjomu tā, ka uzstādīšanas laikā kļūst samērā nenozīmīga, salīdzinot ar apstrādes laiku (ņemot vērā iepriekšējo punktu).
  • Ja darbs nav pilnīgs divreiz vairāk laika (varbūt mazāk) jūs gaidīt to, lai pabeigtu to pieņemt, ka tā gājusi AWOL un sākt tā tiek apstrādāta ar kādu citu darbinieku. Tas nozīmē, ka Jums var būt jāgaida līdz trīs reizes lielāka par parasto ilgumu darbs ir pabeigts (iespējams arī ilgāk, ja turpmāko darbu neizdodas). Jūs varat samazināt šo laiku, bet jābūt uzmanīgiem, lai samazinātu to pārāk daudz, kā jūs varat sākt dublējot apstrādes uzdevumus regulāri.
  • Darbs būtu neatkarīga no ārpus prasībām, cik vien iespējams. Darbs serveri, piemēram, tikai sazināties sākumā un beigās katru darbu.
  • Nelietojiet piesātinātās savu tīklu, tas ir divas negatīvas sekas, jūsu dienas darbinieki būs atrast, izmantojot tīklu, nomākta, un problēmas var būt pieredze ar savienojumiem laika out problēmu, ka būs tikai sliktāk, kā jūs skalu jūsu tīklam.
  • Nodrošināt darba vietas var palaist uz jūsu darbiniekiem. Ja darba vietu kļuvusi pārāk atmiņietilpīga vai diskā intensīvu darbu sāks Pārtrauc un vienīgā lieta, jūs paziņojums ir piliens darbavietu skaits apstrādāti bez reālas iemesls, kāpēc.

Iesniegšana rezultāti Darbs

Iesniedzot rezultātus, darbs ir svarīgi pārbaudīt, vai rezultāti nav iesniedzis cits darbinieks, it īpaši, ja pašreizējā darba ņēmējs ir neaktivizētas kādu laiku.

Ja rezultāti tiek iesniegti nodrošina, ka rezultāti saskan ar skaitu ierakstu, kas darbu.

Kā norādīts iepriekš, un nav iespējams novērtēt par augstu, veidot defektu pielaidi par darbu izguves un rezultātu iesniegšanu. Darbinieki var (un, visticamāk, būs) iedziļināties apturēt režīmā pie visvairāk neērta reizes, un to nepieciešams aizrādījums. Arī vēlreiz abstrahējoties prom savus rezultātus iesniegumu palīdzēs rūpēties par turpmākām izmaiņām jūsu darba kontroles sistēma daudz vieglāk tikt galā ar.

Kopsavilkums

Šajā section mums ir aplūkots, kas darba kontroles servera jādara un kā iegūt ļoti pamata sistēma izveidota. Mēs apspriedām, kā iegūt no kontroles sistēmas darbu un to, kā vislabāk konfigurēt darba vietu, lai saņemtu lielāko daļu mūsu Jūsu biroja režģa sistēmu. Lai pabeigtu, punkts vai divi Iesniedzot rezultātus atpakaļ darba kontroli serveris tika iesniegts.

  • Darba kontroli serveris pārvalda darbavietas un nodrošina, ka darba vienības ir pabeigti
  • Ar abstrahējoties Jūsu darba izvēlaties / rezultātu iesniegšanas mēs varam mainīt tehnoloģiju kontroles servera bez daudz problēmu
  • Konfigurējiet savu darbu, lai nodrošinātu, ka tie darbojas ātri un efektīvi, bez pārāk lielu spiedienu uz savu tīkla infrastruktūru, un nedublējot apstrādes uzdevumus regulāri.
  • Pārliecinieties, ka jums veidot defektu pielaidēm un kļūdu checking savā rutīnu, darbinieki var apturēt un atsākt un visvairāk neērta reizes. Neaizmirstiet pārbaudīt, vai rezultāti jau ir iesniedzis cits darbinieks.

Nākošreiz

Ar 3 daļu mēs izveidot savu virtuālo apstrādes iekārta, un izveidot mūsu logiem mašīnas kļūt dīkstāves laika darba ņēmējiem.

Biroja Grid Computing izmantojot Virtual vides - 5.daļa

Ar , piektdiena Dec 4, 2009 11:03

Ievads

Es strādāju uzņēmumā, kurā mēs palaist daudzas partijas darba vietu apstrādes miljonu ierakstu datu katru dienu, un es esmu bijis domāt nesen par visām mašīnām, kas sēž apkārt katru dienu, neko nedarot, vairākas stundas. Vai tas nebūtu labi, ja mēs varētu izmantot šos mehānismus, lai atbalstītu pārstrādes jaudu no mūsu sistēmu? Ar šo komplektu raksti Es esmu, lai aplūkotu potenciālo ieguvumu nodarbina biroja tīklu , izmantojot virtualised vidēs.

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. Tātad,

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

Izvietošanas

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…

Izvietošanas sistēmu, piemēram, tas ir lēni. 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: pamati - pārskats

By , Saturday 28th November 2009 10:42 pm

My employer recently paid for a group of us developers to take the Zend Framework: Fundamentals course, here I'll summarise my thoughts and opinions on the course for others. For those looking to save time, here's my summary:

For developers who haven't had time to look at the Zend Framework this course (Zend Framework: Fundamentals) offers a good overall picture of the framework introducing you to the key areas and giving enough information in order to continue. For those who have spent time looking at the framework and have followed one or two tutorials this course does not offer much beyond.

Fona

I've been a PHP developer for around 5-6 years, and have started working with the Zend Framework on a component basis over the last 6 months. 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.

About the Course

The course is delivered over 9 two hour webex sessions (with a 10-minute break in the middle). The time is spent going through a set of slides provided by Zend with discussion at any time. You can use a microphone to talk to the instructor, but to be honest I didn't see anyone use anything more than the chat window. 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.

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. 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).

Time is given to code up some examples, and to develop the 'guestbook' and simple 'wiki' application. Personally I felt that providing the code or each app and then asking us to develop what was essentially a copy alongside didn't really provide a good learning experience. I would have preferred to develop an application similar, but not identical. to the example application with the benefit of having a guide to refer to. Alternatively building the applications from scratch with the demonstrator would of possibly led to more questions about why and how , thus giving a better understanding of the framework, after all you can look up specifics after the course.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. After the course feedback was taken, it was emphasised several times through the course that Zend takes feedback very seriously, in fact apparently our version of the course was quite new. 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.

The course style was informal, allowed for feedback and collaboration between attendees and the 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. He was clearly someone who used the framework on a regular basis rather than someone who is taught to teach the course, I liked the 'real world' experience in that respect.

Overall Feeling

In some ways I found the course a waste of time, in others it was very handy. Hopefully I'll get my reasons across clearly, and maybe provide some food for thought or useful feedback (knowing me this is unlikely!).

For myself this course was aimed at too low a level. 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. I would of liked the course to pick up from the end of the quickstart and develop additional skills.

That said, the course title does clearly state “Zend Framework: Fundamentals ” and in that aspect the course achieves what it sets out to do. 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.

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%. It was also time that I got to sit down each day and think about coding using the framework and future projects, something I wouldn't of been able to do otherwise (can you imagine your company agreeing to that? :) ). Last but not least you also get a nice certificate from Zend to say that you attended the course (albeit by email).

Zend Framework Certification

This was one question that kept coming to mind during the course, would it prepare me for the certification? The quick, easy is a resounding No . The course instructor was quite clear on that with the additional advice that for the certification you should really be using the framework on a day to day basis and feel very comfortable and confident in its usage and methodologies.

Kopsavilkums

Given everything I've written above, I'll summarise everything in two easy bullet points:

  • New to Zend Framework: This course does exactly what you'd expect, it gives you a nice introduction to the framework and a good grounding on the basics from which you can build. The course seems to generate interest and enthusiasm for the framework amongst developers.
  • 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. It will be nice to see Zend create a new higher level course to take developers to the next level – at least to the standard of certification and beyond. For that I would sign up immediately.












Panorama Theme Themocracy

4 visitors online now
3 guests, 1 bots, 0 members
Max apmeklētāji šodien: 16 pie 02:02 UTC
Šajā mēnesī: 16 plkst 2011/01/09 02:02 UTC
Šogad: 130 plkst 28-03-2011 22:40 UTC
Visu laiku: 130 plkst 28-03-2011 10:40 UTC