Kategori: PHP

Route forespørsler for sitemap.xml til tilpasset controller / action

Ved , onsdag 6 januar 2010 12:13

For å direkte forespørsler om / sitemap.xml til en tilpasset kontroller og handling i Zend Framework søknaden bare legge til følgende i din application.ini eller alternative config-filen (f.eks jeg bruker navigation.ini):

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

Eksempel på kode for sender ut kan sees ved å opprette en handling i den aktuelle kontrolleren (f.eks min sitemap ligger i indeksen controller, områdekart handling):

 < php
 klasse IndexController
     strekker Zend_Controller_Action
 {
     / **
      * Gjengir et nettkart basert på Zend_Navigation setup
      * /
     offentlig funksjon sitemapAction ()
     {
    	 echo $ this-> Vis-> navigasjon () -> sitemap ();
    	 $ This-> Vis-> layout () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps kan raskt og enkelt bli generert ved hjelp Zend_Navigation , er en stor rask tutorial (og generelt svært nyttig for Zend Framework tutorials) Zend overhodekast - dynamisk lage en meny en sitemap og brødsmuler .

Zend Framework Per-modul baserte innstillinger

Ved , fredag ​​1 januar 2010 22:40

Jeg har opprettet en oppfølging til dette innlegget som krever mindre konfigurasjon, se Modul Basert Layout - Zend Framework .

Når du bruker Zend Framework med moduler, dets åpenbart at hvis du kjører forskjellige (sub-) sider av samme program du ikke nødvendigvis vil ha samme layout skriptene for hver del. Jeg bestemte meg for å gå med på følgende område struktur:

  / Application
     / Kontrollere
         ...
     / Modeller
     / Moduler
         / Default
             / Kontrollere
             / Layout
                 / Scripts
             / Visninger
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Problemet var å sette opp oppsettet skript på en per-modul basis. Svaret kom gjennom ved hjelp av en handling Helper. Sette opp layoutene på en per-modul basis involverer tre trinn:

  1. Application.ini (eller lignende konfigurasjonsoppsettet):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ moduler / admin / oppsett / scripts"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ moduler / default / oppsett / scripts"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ moduler / medlem / oppsett / scripts"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ moduler / affiliate / oppsett / scripts" 
  2. Lag din Handling Helper:
      <? Php
     / **
      * Setter layout banen på en per-modul basis
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Siden 2010-01-01
      * /
     klasse Pro_Controller_Action_Helper_SetLayoutPath
         strekker Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Setter layout sti basert på modul
          * /
         offentlig funksjon preDispatch ()
         {
        	 $ Modul = $ this-> GetRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ('bootstrap')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (Isset ($ config [$ modul] ['ressursene'] ['layout'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ modul] ['ressursene'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ("layout")
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Og til slutt boostrap handlingen hjelper:
      ...
         / **
          * Setter opp layout skript på en per-modul basis
          * /
         beskyttet funksjon _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         nye Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Lære: DATETIME default NÅ ()

Ved 30. Onsdag desember 2009 18:30

Jeg har slitt med å sette opp et databaseskjema for et nytt Zend Framework prosjekt. Jeg bruker prøver å bruke Lære ORM for min database modeller. Jeg trenger å sette opp skjemaet slik at det tillot meg å sette en standard dato og tid for en `datetime` kolonne, f.eks når du legger til en ny melding jeg få den gjeldende tidsstempel. Etter mye leting og eksperimentering fant jeg løsningen, så jeg deler det.

I ditt skjema YAML fil bare gjøre følgende:

 Melding:
   Actas:
     Timestampable:
       opprettet:
         navn: created_at
         type: timestamp
         format: Ymd H: i: s
       Oppdatert:
         navn: last_updated
         type: timestamp
         format: Ymd H: i: s
   kolonner:
     id:
       type: heltall
       primære: true
       autoincrement: true
     navn: string (255)
     email: string (300)
     message: string (2000)

Hvis derimot du ikke ønsker en `updated_at` kolonne kan du bruke følgende:

 Melding:
   Actas:
     Timestampable:
       opprettet:
         navn: created_at
         type: timestamp
         format: Ymd H: i: s
       Oppdatert:
         deaktivert: true
   kolonner:
     id:
       type: heltall
       primære: true
       autoincrement: true
     navn: string (255)
     email: string (300)
     message: string (2000)

PHP Design Patterns - Observer Pattern

Ved , tirsdag 29 desember 2009 22:02

Jeg har lest Head First Design Patterns nylig, og har besluttet å skrive noen av mønstrene som PHP eksempler for min egen fordel. Den første som jeg har besluttet å kode opp er Observer Pattern . Den formelle definisjonen av Observer Pattern er:

Observatøren mønster (en undergruppe av den asynkrone publisere / abonnere mønster ) er en software design mønster hvor et objekt , kalt faget, vedlikeholder en liste av sine pårørende, kalt observatører, og varsler dem automatisk noen stats endringer, vanligvis ved å ringe en av deres metoder . Det er i hovedsak brukes til å implementere distribuerte event håndtering systemer.

Etter hvert som systemene blir mer løst koplet å sørge for at når en hendelse skjer alle systemer som krever er kunnskap om disse oppdateringene informert. For eksempel, et blogginnlegg, etter lagrer et innlegg kan vi trenger å oppdatere en søkemotor (f.eks Lucene), oppdatere våre sitemap, tags, email abonnerer brukere, osv. Observatøren mønsteret lar utviklere å legge til flere lyttere uten å redigere deres observerbare objekt . Ved å injisere observatører (dvs. en søkemotor oppdatere observatør, en sitemap generator, etc) i et fag (dvs. blogginnlegg redigering system) kan vi tillate at det å utføre alle de nødvendige oppdateringene uten noen endringer.

Fortsett å lese 'PHP Design Patterns - Observer Pattern' »

Kontor Grid Computing bruker Virtual miljøer - Del 4

Ved , fredag ​​4 desember 2009 11:59

Innledning

Jeg jobber i et selskap hvor vi kjøre mange satsvise jobber behandling millioner av poster av data hver dag, og jeg har tenkt nylig om alle maskinene som sitter rundt hver eneste dag gjør ingenting for flere timer. Ville det ikke være bra hvis vi kunne bruke disse maskinene til å styrke behandlingskapasiteten til våre systemer? I dette settet av artikler jeg skal se på de potensielle fordelene ved å ansette et kontor rutenett med virtualiserte miljøer.

I del 3 skapte vi vår virtuelle behandling maskin og sette opp windows maskiner for å bli inaktiv tid arbeidere.

Kjører den nyeste kode

Uunngåelig etter at du opprettet arbeiderne forretningslogikk vil forandre, vil bugs bli funnet, vil raskere mer effektiv kode bli produsert dermed forlate dine arbeidere satt rundt behandling av data ved hjelp av gamle stinkende kode . Hvordan så sikrer vi at vi alltid bruker den nyeste og beste versjonen av vår behandling skript?

Det er noen veldig enkle enkle måter vi kunne gjøre dette, triks, derimot, er å redusere prosessorkraft og nettverkstrafikk i å oppnå dette. Lar starte med de enkleste løsningene og forbedre den sakte over et par iterasjoner.

Den første metoden ville være å bare koble til jobben vår kontroll server (via samba, FTP eller lignende) og trekk ned den nyeste versjonen av koden. Ikke veldig effektivt, men det vil gjøre jobben. Lar forbedre på at noe, hva med å skape et rsync skript og bruker den hver gang i stedet? Eventuelt hva med å sette våre siste behandling manuset til Subversion sjekke ut koden først, og så bare oppdaterer vår kode på hver kjøring ( svn update )?

Til slutt kan vi ende opp med et bash script (kalt av cron hvert 10. minutt), som ser så enkelt som dette:

  #! / Bin / sh
 hvis ps ax | grep-v grep | grep php > / dev / null
 deretter
     echo "Job er for tiden behandling, exit"
 ellers
     echo "Job ikke kjører, starter nå"
     cd / sti / til / jobbe / kopi
     svn update
     php yourJobProcessingScript.php
 fi 

Nå kan vi være sikker på at med hvert løp er vi definitivt kjører den nyeste koden. Vi er sikre dette ved å oppdatere våre kodebasen hver gang vi utfører en løpetur og redusere nettverkstrafikken ved bare å overføre filen forskjeller på tvers av nettverket vårt.

I min demonstrasjon setup, gjorde jeg akkurat som ovenfor. Subversion ble installert på min jobb behandling server og jeg bare trakk siste koden fra en "arbeidstaker" gren bruker 'svn update'. Jeg har også laget en versjon nummer tag til min prosessering manus som ble returnert til databasen som en del av resultatene retur. På denne måten kunne jeg se at min kode ble oppdatert hver gang jeg kopierte min trunk inn arbeideren grenen dvs at jeg var definitivt kjører den nyeste prosessering script.

Bruke nyeste dataene

Hvis jobben din prosessering gjør bruk av datakilder så på et tidspunkt disse kommer til å bli oppdatert også. Med mindre du ringe datakilder på en svært sjeldne basis du kommer til å oversvømme nettverket med trafikken så snart arbeiderne begynne å bringe alt til en stillstand. For løsning mitt bestemte jeg at jeg vil flytte dataene mine kilder rundt med mine VMer.

Hold du hester dit! Hva om mine datakilder er enorme? Vel, dette er virkelig et tilfelle av hvor mye data snakker vi? Det kan være mer kostnadseffektivt å installere en ekstra større harddisk til hver maskin enn å kjøpe en ekstra behandling server. Dette er et spørsmål om budsjett og er opp til virksomheten å bestemme. Det kanskje at datakildene er så store at det bare unfeasible å holde dette beløpet av data i arbeideren maskiner. I så fall hva ville du gjøre? Vel vi kunne se på ringer en lokal data server, men dette kan føre til problemer med nettverket. I dette tilfellet et rutenett system som dette kan bli urealistisk å inkludere i kontormiljøet. Det kan også være at du kan se på alternativ drift strategier, for eksempel bare å ringe dine arbeidere mellom 20:00 og 6am hver natt og / eller struping datakilde forespørsler.

Flytte på kan si våre datakilder beløpe seg til 100 GB med data. Vel ja det er ganske mye data å flytte rundt nettverket på en oppdatering. Hvordan ville vi sikre at vi har den siste kopien av dataene i dette tilfellet? Rsync er en mulighet, men personlig tror jeg ved å kjøre de nyeste dataene kilden på jobben din behandling server og sette dette opp som en mester i replikering (med en fin lang bin log) kan være veien å gå:

replikering Ved å sette hver av dine ansatte opp som en slave til jobbkontroll server oppdateringer til datakilder vil sildre nedover pent til arbeidere uten en enorm økning i nettverk aktivitet (som er mindre du utfører en stor data oppdatere og alle arbeidere sparke i samtidig). Dette har fordeler framfor rsync på at du ikke ville få en lang pause før hver jobb, som database oppdateringer, mysql vil daemonen på arbeideren din kontinuerlig oppdatere sin data mens behandlingen fortsetter.

Dette er hvordan jeg setter opp min demonstrasjon server. For å sette opp replikering Jeg fulgte guiden på mySQL hotellet ( Sette opp replikering ) og innen 20 minutter hadde jeg min inital arbeideren kopiere jobben kontroll serverne datasett. For hvert ekstra arbeidstaker replikering innstillinger og behandle jobbet hver gang da VM ble kopiert.

Oppsummering

I denne delen av artikkelen har vi sett på hvor enkelt og smertefritt det er å holde prosessering kode oppdatert ved using rsync eller subverion (SVN) for å gjøre arbeidet og redusere nettverkstrafikken på samme time. Vi diskuterte også hvordan å holde datakilden informasjon up-to-date ved at det sildre ned til hver av arbeiderne. Dermed kan vi området som sikrer at vi holder tritt med forretningslogikk og informasjon på vårt kontor bæresystem. Det vil åpenbart være utallige alternativer til å utføre disse oppgavene, men her ble to enkle eksempler for å vise hvor enkelt en løsning er å komme forbi.

Neste gang

I den siste delen av denne serien, treffende navn Del 5 vil vi diskutere distribusjon av dette systemet for. Jeg skal oppsummere hva som har blitt lært og hva jeg klarte å skape.

Kontor Grid Computing bruker Virtual miljøer - Del 3

Ved , fredag ​​4 desember 2009 23:37

Innledning

Jeg jobber i et selskap hvor vi kjøre mange satsvise jobber behandling millioner av poster av data hver dag, og jeg har tenkt nylig om alle maskinene som sitter rundt hver eneste dag gjør ingenting for flere timer. Ville det ikke være bra hvis vi kunne bruke disse maskinene til å styrke behandlingskapasiteten til våre systemer? I dette settet av artikler jeg skal se på de potensielle fordelene ved å ansette et kontor rutenett med virtualiserte miljøer.

I del 2 har vi sett på de jobbene en server vil kjøre, og hvordan arbeidsplasser bør være konfigurert for å oppnå størst mengde behandling samtidig sikre at hver jobb blir behandlet uten å lykkes.

Sette opp arbeidstaker - eller limp server

Det neste trinnet i prosessen er å sette opp din virtuelle arbeidere. For dette jeg kommer til å bruke en installasjon av CentOS bruker VirtualBox. Jeg kommer til å installere mySQL og PHP på serveren, også kjent som en limp (Li Nux, m ySQL, P HP) Servera (jeg har kanskje gjort det navnet opp).

  • Installer VirtualBox på Windows-maskinen (følg link)
  • Last ned og installer CentOS (nåværende versjon 5.3) innenfor et skapt virtuell maskin

Det er ingen vits meg å gå til denne er det sannsynligvis 1000 's flotte tutorials der ute (ok, her er ett: Lage og Managing CentOS virtuelle maskinen under VirtualBox ). Det viktige punkt å merke jeg antar er at jeg ringte min virtuell maskin GridMachine.

Såvidt mitt valg av virtualisering klient og operativsystem går er det ingen stor overbevisende grunn for hvert valg. VirtualBox er noe jeg bruker på min hjemme maskin og er støttet av de tre store operativsystemene. Jeg valgte CentOS som sin en god stabilt OS og jeg bruker det på min egen web server. Jeg er en stor tro på de riktige verktøyene for jobben (selv om jeg søker 'bruk den raskeste og enkleste for deg' mentalitet her), så hvis operativsystemet X kjører koden din raskere og mer effektivt bruke den i stedet:)

Viktigere sørge for at VM bruker DHCP, ellers for hver ny virtuell maskin ville må konfigureres separat som er noe vi ikke want.By bruker DHCP vi ikke trenger å konfigurere nettverksinnstillinger individuelt for arbeideren maskiner, vil DHCP hånd ut IP for deg. Derfor kan du kopiere den virtuelle maskinen rundt i kontoret uten å bekymre deg om å sette hver og en opp (dette forbedrer skalerbarhet og reduserer arbeideren administrasjon).

Prosessen du bør sikte på å oppnå ville være å skaffe en ny fysisk maskin, installere VirtualBox, og deretter ganske mye distribuere virtuelt bilde uten mye annet. Det kan være lurt å sette alle dine arbeidere på et annet subnett, slik at du kan i det minste se hvor mange maskiner kjører. Du trenger også å sette opp maskinene på en lang leieavtale eller ubegrenset lease DHCP.

Hvordan kjøre jobber på arbeideren

Dette er et interessant område og det er flere gyldige metoder for prosessering jobber på arbeideren. Her skal jeg bare diskutere de to mest åpenbare:

  • Stadig kjører script: Et skript, det være seg et skall skript eller et PHP-script kjøres en gang på arbeideren og løper som en del av en uendelig loop. Jeg har diskontert denne metoden som et krasj av skriptet og potensielt dine arbeidere vil slutte å kjøre uten noen form for intervensjon.
  • Cron baserte skript gjennomføring: Hver X minutter cron daemon starter en samtale til skript for å få ting i gang. Uten noen sjekker dette kan føre til mange mange kopier av arbeideren skript.

Min beslutning var å gå med cron som starter et skall skript hver 10 minutes. My shell script utfører følgende oppgaver:

  1. Få en prosess liste og grep dette for 'php'. Hvis ikke fant deretter fortsette.
  2. Ring jobben din kode, i mitt tilfelle dette skulle bli noe PHP baseres
  3. Worker skript fullfører sin løpe
  4. Klar til å gå igjen på neste passende kaller

Min bash script ser omtrent ut som følgende:

  #! / Bin / sh
 hvis ps ax | grep-v grep | grep php> / dev / null
 deretter
     echo "Job er for tiden behandling, exit"
 ellers
     echo "Job ikke kjører, starter nå"
     php yourJobProcessingScript.php
 fi 

Merk: echo-er er nesten helt meningsløs, men kan bidra til den neste personen som kommer sammen for å prøve og redigere dem.

Det konkluderer oppsett av arbeideren virtuell maskin, rask, enkel og lett å kopiere til hver ny maskinvare som er mottatt. The 'klokskap' av bæresystemet er virkelig ikke i visualiseres OS, alt å gjøre med koden opprettet for å behandle jobber, jobben konfigurasjon, og i å sørge for at jobben går når det er hensiktsmessig (dvs. når verten er inaktiv ).

Sette opp Windows til å initialisere Workers

Den første oppgaven er å arbeide ut kommandoen kreves for å kjøre den virtuelle maskinen fra windows kommandolinjen. Hvis du har installert VirtualBox på standard plassering, og du har gitt arbeidstakeren GridMachine deretter kommandoen som kreves for å laste opp arbeideren er:

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

Men å kjøre skriptet i en "hodeløs" state vi trenger å bruke:

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

Dette vil starte den virtuelle maskinen uten GUI og la den for å spare staten grasiøst. Det andre argumentet slår av RDP så det ikke kommer i konflikt med vinduer RDP, eller gi deg en beskjed om å lytte på port 3389. Den virtuelle maskinen navn er store og små bokstaver!

Deretter må vi sette vinduene opp til kick off våre arbeideren VM når maskinen er uvirksom. For å gjøre dette (på Windows XP) du trenger for å gå Start -> Alle Programmer -> Tilbehør -> Systemverktøy -> Planlagte oppgaver som følger:

planlagte oppgaver

Neste klikk på "Legg til planlagt oppgave" etterfulgt av bla å legge til et egendefinert program. Naviger til VBoxManage skriptet og trykk ok. Planlegg din oppgave for noen av alternativene (vi kommer til å endre dette i ett minutt) og fortsette. Etter å hoppe over det neste skjermbildet windows vil spørre deg hvem du vil kjøre denne oppgaven, vil jeg foreslå enten 'Administrator' eller opprette en ny privilegert bruker. Husk at vi ikke ønsker å forstyrre standard personalet konto på maskinen på noe punkt. Klikk Neste og sjekk viser avanserte alternativer for denne oppgaven.

Til slutten av oppkjøringen tekstboksen legge vår "startvm GridMachine 'streng og sørge for at bare kjøre når du er innlogget er igjen merket av. Besøk planlegge oppgaven neste og endre planen falle ned til alternativet 'når idle ", velge hvor mye tid du ønsker at maskinen skal være inaktiv før du går videre til neste fane.

Endelig fjern merket det alternativet som sier stopp oppgaven hvis den har kjørt X tid, men merk muligheten til å stoppe oppgave hvis maskinen er ikke lenger ledig.

tidsplan

Det er det da for windows host setup!

Oppsummering

I denne delen har vi satt opp en virtuell maskin til å fungere som en arbeidstaker, samt måten vi kaller og gjennomføre vår jobb behandling skript (for meg et PHP-script). Herfra ser vi på hvordan du setter opp vår kopier av vinduene for å starte opp den virtuelle maskinen i hodeløse modus når maskinen blir inaktiv, og lagre tilstanden når brukeren gjenopptar bruken av maskinen. Forhåpentligvis på dette punktet du ser hvor enkelt det er å sette opp et slikt system, og er spent på å få noen eksperimenter gang selv!

Neste gang

I Del 4 vil vi se på bruk av verktøy for å sikre at du kjører den nyeste versjonen av koden og datakilder, slik at oppnådde resultater er alltid up-to-date med de nyeste forretningsinformasjon og logikk.

Kontor Grid Computing bruker Virtual miljøer - Del 1

Ved , fredag ​​4 desember 2009 11:23

Innledning

Jeg jobber i et selskap hvor vi kjøre mange satsvise jobber behandling millioner av poster av data hver dag, og jeg har tenkt nylig om alle maskinene som sitter rundt hver eneste dag gjør ingenting for flere timer. Ville det ikke være bra hvis vi kunne bruke disse maskinene til å styrke behandlingskapasiteten til våre systemer? I dette settet av artikler jeg skal se på de potensielle fordelene ved å ansette et kontor rutenett med virtualiserte miljøer.

Som en PHP utvikler jeg kommer til å bruke verktøy som jeg bruker hver dag nemlig, Linux, MySQL , PHP, VirtualBox og Subversion (SVN). Men jeg håper denne guiden vil tilpasse seg andre språk og teknologier like bra.

Løsningen jeg gir blir svært løst basert på den type behandling vi hadde behov for å oppnå men dette kan ikke være sant gjennom hele artikkelen som jeg skal forandre ting for enkelhet, eller for å produsere mer interessant bruksscenarioer.

Disse virtualiserte miljøer som vil kjøre på windows maskiner siden dette er hva de fleste av kontorer løpe. Behandlingen at kontormaskiner ikke skulle forstyrre personalet bruker disse maskinene, bør kreve noe vedlikehold på maskinen, og være lett deployerbare til nye maskiner som de blir tilgjengelige. I tillegg bør nye virtuelle maskiner ikke krever noen ekstra konfigurasjonen som dette i stor grad reduserer skalerbarhet og lette der bæresystemet kan forlenges.

Hvorfor Distribuere et Office Computing Grid?

For det første du tenker kanskje, hvorfor ikke bare bruke en cloud computing ressurs som Amazons EC2-plattform ? Vel grunnene kan være flere, for eksempel:

  • Du vil ikke overlate visse data til en cloud computing miljø
  • Du kan ikke sette visse data i en cloud computing miljø for juridiske årsaker (f.eks data forlater landet), potensielt for juridiske årsaker, f.eks NHS poster.
  • Du ønsker å holde processing units nært og har full kontroll over maskinvaren også
  • Du har ikke prosjektmidlene til å kjøre sky tilfeller
  • Kontoret ikke har en tilknytning til internett og derfor det ikke mulig å bruke en sky ressurs
  • Du liker ikke regn, skyer foreslår regn, derfor holde god avstand

Jeg er sikker på at listen kunne fortsette, men jeg tror det er nok for nå.

Fordeler med en Office Computing Grid

Vel, lar gjøre litt matte (og i ekte fysikk stil lar gjøre noen feiende forutsetninger). Tenk deg at du har store beefy prosessering server som kjører 100 arbeidsplasser per dag. På kontoret har du 50 maskiner som er idle 16 timer i døgnet, hver av disse maskinene er 10% like kraftig som beefy prosessering sever. (Alle resultatene her er avrundet for å undervurdere ytelse økning).

Så kan en maskin * 10% strøm * 2 / 3 gang = 0,067 dvs 1 desktop behandling i idle tid prosessen seks fulle jobber per dag.

Hvis du nå skalere dette opp det tar 15 idle stasjonære å behandle så mange arbeidsplasser per dag som din viktigste behandlingen server gjør.

Så i vår late kontoret til 50 maskiner kunne vi øke vår prosesseringskraft fra en server opp til 4 full prosessering servere, eller vi kan behandle 400 arbeidsplasser per dag i stedet for 100.

Legg merke, for ingen investering i ny maskinvare firmaet har nettopp økt sin batch prosesseringskapasitet 4 ganger! Potensielt du kommer til å øke strømforbruket, men fra de fleste kontormiljøer jeg har vært i maskiner er generelt igjen på natten uansett, så du kan se dette som et grønt initiativ.

Andre fordeler også bety at investeringer i ny (eller oppdatert) behandling servere kan bli forsinket hvis kontormaskiner er tilstrekkelige og at når du forbedre ytelsen i kontormaskiner kontoret grid blir kraftigere automatisk.

Technologies

Hva du trenger? (Eller mer korrekt hva gjorde jeg bruker):

  • Idle kontormaskiner (i mitt tilfelle en reserve gamle windows XP laptop)
  • VirtualBox (eller et annet virtualisering klientprogramvaren)
  • En virtuell maskin med PHP, mySQL running kjører et kutt ned OS, jeg ringer disse mine Limp servere:)
  • Jobs til å kjøre
  • Job server (kan være en annen virtuell maskin sted)

Typiske Jobs

Hvilke typer jobber som dette systemet er designet for å kjøre er som følger:

  • System mottar en liste med data hvorpå vi trenger for å matche og returnere resultater
  • Matching innebærer å sjekke / søker flere (ganske statisk) datakilder
  • Resultater fra datakilder kan kreve ytterligere validering, sammenslåing, kontroll av flere datakilder i respons til resultater
  • Data er tilbake med samsvarende poster, fullt validert og bearbeidet
  • Hver post i en jobb er uavhengig av resten

Så i utgangspunktet vi ser på kjører jobber som krever en blanding av database oppslag og noen tallknusing, et ganske typisk scenario i et bedriftsmiljø.

Grid-løsninger er ikke bare en fordel for behandling jobber av denne typen. I utgangspunktet kan enhver prosess som kan deles inn i selvstendige enheter kjøres parallelt. Se denne Wikipedia for eksempler og mer informasjon: Grid Computing , men et par kjente eksempler er Seti @ Home og BIONC . Det er rammeverk for å kjøre databehandling rutenett, og disse er vel verdt å se inn.

Hva vil vi oppnå?

Ved slutten av disse artiklene håper jeg å vise at distribusjon av et kontor grid trenger ikke være veldig dyrt eller tidkrevende. Jeg kommer til å diskutere:

  • Sette opp jobben styresystem, jobb konfigurasjon
  • Opprette en passende behandling virtuell maskin
  • Hvordan sette opp systemet på en windows maskin
  • Sikre du bruker den nyeste kode og data
  • Distribusjon og benchmarking
  • Ser framover

Jeg vil bli bygget (ok jeg bygget, da skrev dette) et eksempel program for å teste konsepter på en lokal maskin med Windows XP og min "GridMachine" virtuell maskin. Min jobb kontroll serveren vil være min viktigste maskin som kjører Fedora 11 .

Dette er på ingen måte ment å demonstrere en fullt fungerende robust system, betydde det mer av en demonstrasjon og diskutere viser at disse tingene kan oppnås i en rimelig kort tid, og ved liten kostnad. Kan du gjerne sende meg noen kommentarer, rettelser eller forbedringer og jeg skal gjøre mitt beste for å holde denne artikkelen oppdatert å matche.

Neste gang

I del 2 vil jeg starte med å se på jobben kontrollsystemet, og se på hvordan jobbene skal være konfigurert for å oppnå størst mengde behandling samtidig sikre at hver jobb blir behandlet uten å lykkes.

Kontor Grid Computing bruker Virtual miljøer - Del 2

Ved , fredag ​​4 desember 2009 11:23

Innledning

Jeg jobber i et selskap hvor vi kjøre mange satsvise jobber behandling millioner av poster av data hver dag, og jeg har tenkt nylig om alle maskinene som sitter rundt hver eneste dag gjør ingenting for flere timer. Ville det ikke være bra hvis vi kunne bruke disse maskinene til å styrke behandlingskapasiteten til våre systemer? I dette settet av artikler jeg skal se på de potensielle fordelene ved å ansette et kontor rutenett med virtualiserte miljøer.

I del 1 ga jeg en oversikt over systemet og teknologiene jeg skal bruke så vel som diskutert noen av de mulige årsakene til at du ønsker å opprette et kontor rutenett.

Job Kontroll

Hvis du skal kjøre jobber så du kommer til å trenge noen måte å håndtere dem. Din jobb kontroll system (på jobben din server) må være veldig godt gjennomtenkt før du selv forsøker å kjøre et kontor rutenett. Så det første, hva er oppgaver for en jobb kontroll system:

  • Del ut jobbene på forespørsel fra arbeiderne
  • Fortell arbeidere hvilken type jobber å kjøre
  • Spor jobber
  • Sørg for at jobbene er kun kjørt en gang
  • Gi jobbdata til arbeiderne, eller i det minste fortelle dem hvor de skal få det

Systemet må også være utvidbart, en løsning som fungerer for nå i et enkelt tilfelle kan utvides til å kjøre flere typer jobber som bedriften ser verdien i et rutenett løsning. For eksempel kan jobber gain prioriteringer, mer enn én type jobb kan foreligge (dvs. flere code baser), til slutt kan du også kjøre flere forskjellige arbeider maskiner som er optimalisert for hver type jobb (selv om det beveger seg bort fra den "generiske arbeideren 'idé). Prøver alltid å tenke på fremtiden når utvikle systemer, kan et kortsiktig syn føre til lengre sikt frustrasjon og økt utvikling tid.

Job Server

Vi kommer til å trenge et sted å kontrollere vår jobber fra, bør dette være den eneste systemet i nettet ditt som har en fast resource locator, være at en IP-adresse, vertsnavn, URL (bruk av interne DNS), osv. Dette er fordi behov for arbeiderne å vite hvor du skal lete etter jobber, arbeidere trenger å finne den jobben kontrollsystemet (ikke jobben kontrollsystemet finne arbeiderne).

Jobben serveren selv egentlig ikke har en komplisert oppgave (i et grunnleggende system hvertfall), det er behov for å lagre en liste over jobber, dele ut jobber, får resultater, og deretter lagre dem for senere henting. Hvordan disse delene (som "hand out jobber") er definert kan være svært grunnleggende. Senere kan vi utvide systemet til å inkludere et administrasjonsgrensesnitt for å legge til, redigere, slette, suspendere jobber, men dette er hinsides denne øvelsen.

Det er ingen grunn overhodet da at jobben din server ikke kunne være en virtuell maskin som kjører innenfor ditt viktigste behandlingen serveren forutsatt at det ikke tappe for mye ressurser fra det. Jobben server imidlertid ikke trenger høy tilgjengelighet, hvis det går ned på en fredag ​​kveld du kommer til å miste en hel helg med behandling, potensielt koste deg et par uker igjen av behandlingstid (i forhold til dine viktigste behandlingen server alene) . Det kan være lurt å vurdere å sette jobben din server på et lass balansert miljø for høy tilgjengelighet.

Basic Setup

Den grunnleggende oppsett for jobben vår server vil bestå av det jeg kaller en av mine halting servere (som er Li Nux, m ySql, P HP). Koden som kjører på thea arbeiderne faktisk vil finne ut hvilke jobber det kan kjøres ved å samhandle med med jobb styresystem databaser. Senere kunne vi lage en web-tjeneste og faktisk dele ut jobbene i stedet for at arbeiderne gjøre jobben selv, men for nå vil vi fortsette å bruke KISS prinsippet (Keep it Simple, Stupid!).

Så lar opprette tre mySQL tabeller å forholde seg til jobber. Disse vil bli `arbeidsplasser`, `jobRecords` og `jobResults`.

jobber tabellen Her Jeg bruker SQL Buddy en flott liten alternativ til phpMyAdmin bare fordi det enklere å installere på CentOS (for andre ser: 10 Great alternativer til phpMyAdmin )

Denne tabellen består av 5 enkle felt,

  • id: Entydig identifikasjon jobben
  • Navn: Kan være en klient referanse, eller en rekke andre identifikatorer
  • Status: Du må vite hvor jobben er på, f.eks
    • 0: Ikke startet
    • 1: Plukket opp
    • 2: Fullført
  • started_by: Hvem er begynte å gjøre jobben? Dette er ikke helt nødvendig, men er en fin å ha. Jeg vil foreslå sporing arbeiderne ved deres IP-adresse på nettverket ditt
  • started_at: Når begynte arbeideren starte jobben? Ved å spore jobber som ikke har fullført innen X tid vi vet at vi trenger å plukke opp jobben igjen og starte behandling av en annen arbeidstaker. Arbeiderne kunne stoppe behandlingen / go offline for en rekke årsaker, strømbrudd, crash, nettverk tap, etc.

Det er lett hvordan denne tabellen kan utvides med noen ekstra felter for å tillate statistikk sporing, en sluttid kolonne for å se hvor lang tid jobben tok, en teller for å se hvor mange arbeidere plukket opp jobben (selvsagt dette må en tendens til å 1), jobb prioritet, kan listen gå av og på. I mer kompliserte jobben scenarier vil det være mulig å angi hvor mye minne arbeidstakeren ville ha tilgang til (og derfor bare bruke egnet arbeidere), eller hva slags arbeideren skulle være nødvendig.

Lar legge til noen få eksempel jobber:

eksempel jobber

Den neste bordet igjen er ganske enkel å forstå, dette er vår jobb poster. De er knyttet til de viktigste jobbene tabellen etter en kolonne `jobs_id`. Den utgjør i denne tabellen svært mye avhenger av dataene du trenger for å levere til arbeiderne, kan lage et veldig enkelt eksempel der vi har fire kolonner:

  • id: ID av posten
  • navn: Person navn
  • Adresse: Person adresse
  • jobs_id: Jobben ID at denne posten er knyttet til

Den tredje og siste tabell består av en resultatside tabellen, har det mye den samme sminke som våre poster bord, og med tillegg av noen kolonner kan være en del av postene tabellen:

  • job_record_id: Link resultatet til jobben bordet
  • Resultatet: Resultatet data

... Og det er alt du trenger for jobb kontroll! (Riktignok på et veldig grunnleggende nivå) I mitt tilfelle er jeg pekte til et annet bord hvor mine data til prosessen var plassert, men dette kunne like gjerne vært en fil, parametere å kjøre simulering kode, you name it.

Velge en jobb

Som nevnt tidligere, vil arbeiderne gjøre jobben vår ledelse for oss for nå, så alt vi trenger for virkelig å gjøre er å finne en jobb som trenger behandling og få informasjon. Hvordan ville vi gjøre dette? Vel plukke jobben vår utvalgskriterier og lete etter jobber, i SQL gjorde jeg følgende:

  1. Ta noen jobber som ikke er merket som komplett, men fra arbeideren vår og nullstille dem (innbytter __ME__ med en identifikator, ville enkleste være IP-adresse):
      UPDATE `jobb` SET `status` = 0 HVOR `status` = 1 AND `started_by` = __ME__; 
  2. Ved hjelp av vår jobb seleksjonskriterier, velger du en jobb og fortelle kontrollsystem som denne arbeideren har å gjøre med det:
      UPDATE `jobb` SET `status` = 1, `started_by` = __ME__, `started_at` = NÅ () HVOR `status` = 0 eller
     (`Status` = 1 AND `started_at`> DATE_SUB (NÅ (), INTERVALL X HOUR)) ORDER BY `id` ASC; 

    Ved å ta tak i jobber som ikke har returnert resultater i X tid vi sikre at alle jobber kjøres i tilfelle en arbeidstaker å krasje eller gå AWOL.

  3. Neste tak i jobbene detaljer etterfulgt av postene selv:
      SELECT * FROM `jobb` HVOR `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` HVOR `id` = __JOBID__; 

Ved ferdigstillelse av jobben vi sette inn våre resultat poster og mark jobben som fullført. Husk som jobber kan suspendere / gjenoppta når som helst la for noen robusthet i skriptet. Det kan være at oppgaven suspenderer halvveis gjennom oppdatering jobben kontrollsystem, så sjekker antall poster i en jobb og antall resultater lagres tilbake til jobben styresystem ville være et klokt trekk.

I tillegg, mens dette viser hvordan arbeidsplasser kan velges og styres fra en SQL-spørring ramme du bør virkelig være abstrahere jobben din kontroll, slik at hvis du velger å bytte til ved hjelp av en web service, en fil basert system, XML eller andre antall systemer det ikke vil påvirke koden over den.

Job Configuration

Den neste aspekt å vurdere er jobb størrelse og konfigurasjon. Ved å spille med jobben konfigurasjon kan vi slå en utmerket balanse mellom fart, prosess replikering, og pålitelighet. Ta et par Ofa scenarier:

  1. Jobber ta en dag hver for å kjøre: Dette betyr at arbeidstakere trenger 15 dager på å behandle hver jobb (husk 10% av kraften for 2/3rds av tiden). Dette er klart ikke en klok konfigurasjon, er jobben din størrelse altfor stort! Det ville ta minst dobbelt tid til å få en jobb behandlet bør den første arbeideren gå AWOL (tid for å plukke opp at det ikke har returnert et resultat pluss reprosessering tid). I en ideell ville du ha minst en hel jobb lett ryddet innen utgangen av hvert lang inaktiv periode, på den måten du beholde jobbene tikker over og i verste fall en jobb ville ta to dager å behandle bør først gå mangler.
  2. Jobs tar 1 minutt å kjøre: Dette betyr at arbeiderne tar ca 15 minutter å kjøre hver jobb. Mens dette kan i utgangspunktet virke perfekt, får du ytterligere arbeid behandling i løpet av lunsj, kaffepauser, møter, etc dette scenariet setter press på andre deler av systemet og innfører sine egne problemer. For eksempel det første oppsettet / behandlingstid forholdet kommer til å gå rett ned, derfor mister system effektivitet. Nettverket kommer til å være konstant streaming jobb informasjon til ulike arbeiderne frustrerende ansatte som er dong deres daglige arbeid. Du er også kommer til å legge mer press på jobben din behandling server som det har å dele ut masse små biter av arbeidet på en jevnlig basis. Til slutt, i denne situasjonen hvis jobben din server går ned du kommer til å skape et enormt tilbake logg over gjenstående arbeid mens større jobber kan for fortsatt behandling uvitende at jobben serveren opplevde vanskeligheter.

I realiteten vil det ikke være en ideell konfigurasjon for grid oppsett, avhenger mye av de tilgjengelige ressursene, typer jobb, jobb behandlingstid krav, nettverksmulighet, og så videre. Men noen retningslinjer vil være:

  • Størrelse jobbene slik at hver arbeidstaker kan komme gjennom minst 3-4 arbeidsplasser i en periode på 15 timer (den lengste sannsynligvis inaktiv periode)
  • Spill med jobben størrelse, slik at oppsett tid blir relativt ubetydelig i forhold til saksbehandlingstiden (med tanke på ovennevnte punkt).
  • Hvis en jobb ikke fullføre i det doble av tiden (kanskje mindre) du forventer det å fullføre den anta at dets gått AWOL og begynne å behandle den med en annen arbeidstaker. Dette betyr at du kanskje må vente opp til tre ganger normal lengde av en jobb for det å fullføre (muligens lengre hvis den påfølgende jobben feiler). Du ønsker kanskje å redusere denne tiden, men vær forsiktig med å redusere det altfor mye du kan begynne å duplisere behandling oppgaver på en jevnlig basis.
  • Jobs skal være uavhengig av eksterne krav så mye som mulig. Jobben server, for eksempel, skal kun bli kontaktet ved starten og slutten av hver eneste jobb.
  • Ikke mette nettverket ditt, vil dette ha to negative effekter, vil dagtid personalet finne bruker nettverket frustrerende og problemer kan oppleves med forbindelser timing ut et problem som bare vil bli verre etter hvert som du skalere rutenett.
  • Sikre arbeidsplasser kan kjøre på de ansatte. Dersom arbeidsplasser blir for minneintensive eller diskplass intensive arbeidsplasser vil starte avbryte og det eneste du vil merke en nedgang i antall arbeidsplasser behandlet med noen reell grunn til hvorfor.

Sende Resultater av en jobb

Når du sender resultatene av en jobb det er viktig å sjekke at resultatene ikke har blitt sendt inn av en annen arbeidstaker, særlig hvis den aktuelle arbeidstakeren har vært sovende i noen tid.

Når resultatene er sendt inn at antall resultater samsvarer med antall poster i jobben.

Som nevnt tidligere, og kan ikke være over understreket, bygge feiltoleranse inn jobbgjenfinning og resultater underkastelse. Arbeiderne kan (og mest sannsynlig vil) gå inn i hvilemodus på det mest ubeleilig ganger, og dette må tas hensyn til. Også en gang abstrahere bort resultatene innsending vil hjelpe dekke fremtidige endringer i jobben din kontrollsystem mye lettere å håndtere.

Oppsummering

I denne section har vi sett på hva en jobb kontroll server trenger å gjøre og hvordan du får en veldig grunnleggende system satt opp. Vi diskuterte hvordan man skal hente en jobb fra kontrollsystemet og hvordan de best kan konfigurere jobber for å få mest mulig vår på kontoret bæresystem. Til slutt, var et avsnitt eller to på sender resultater tilbake til jobben kontrollere serveren presenterte.

  • En jobb kontroll server administrerer jobber og sørger for at alt arbeid enheter er fullført
  • Ved å abstrahere din jobb å velge / resultater innsending kan vi endre teknologi for kontroll serveren uten mye problemer
  • Konfigurer jobber for å sikre at de kjøres raskt og effektivt uten å legge for mye press på nettverket infrastruktur, og uten å duplisere behandling oppgaver på en jevnlig basis.
  • Sørg for at du bygger feiltoleranse og feiling checking inn i rutiner, kan arbeiderne avbryte og fortsette og de mest upraktisk ganger. Husk å sjekke om resultater har allerede blitt sendt inn av en annen arbeidstaker.

Neste gang

I del 3 vil vi lage vår virtuelle behandling maskin og sette opp vår windows maskiner for å bli inaktiv tid arbeidere.

Kontor Grid Computing bruker virtuelle miljøer - Del 5

Ved , fredag ​​4 desember 2009 11:03

Innledning

Jeg jobber i et selskap hvor vi kjøre mange satsvise jobber behandling millioner av poster av data hver dag, og jeg har tenkt nylig om alle maskinene som sitter rundt hver eneste dag gjør ingenting for flere timer. Ville det ikke være bra hvis vi kunne bruke disse maskinene til å styrke behandlingskapasiteten til våre systemer? I dette settet av artikler jeg skal se på de potensielle fordelene ved å ansette et kontor rutenett med virtualiserte miljøer.

I Del 4 så vi på bruk av verktøy for å sikre at vi kjører den nyeste versjonen av koden og datakilder, slik at oppnådde resultater er alltid up-to-date med de nyeste forretningsinformasjon og logikk.

Pre-distribusjon

Før du distribuerer din grid-systemet hvis det er én ting du og en ting alene, det er benchmark din nåværende system! Uansett hva du fortelle kolleger om hvor mye ekstra arbeid systemet kommer til å gjøre med mindre du har tall å sikkerhetskopiere dette opp din garantier er ingenting. Så,

  • hvor mange poster kan du behandler for tiden? Per Day? Per Hour?
  • Hvor lang tid det vanligvis tar å snu en jobb?
  • Hvor mye mer kapasitet har du?

Det er også flere spørsmål:

  • Hvis din behandling server (eller en av dine behandling servere) går ned hvordan vil dette påvirke dine evner, vil du bli lammet?
  • Hvilke fordeler håper du / forventer å få fra et rutenett system?
  • Er dine kontormaskiner kan kjøre jobbene?
  • Er dine (eller du kan jobber bli konvertert) å arbeide i denne stilen av å kjøre?

Den siste store poenget er å ta deg tid på noen stor endring som dette. Oppdater prosessering kode for å arbeide med nye metoder, benchmark igjen. Muligens sette opp prosessering server for å kjøre en virtuell maskin, etter alle dine behandling serveren vil bare være en annen arbeidstaker (bare en veldig kraftig en relativt). La den nye prosessen å bosette seg.

Distribusjon

Mitt forslag ville være å stikke innom kontoret en helg utføre alle installasjoner og oppsett. Gjør dette rett før en fjorten dagers ferie og permisjon slik at andre stakkaren å håndtere konsekvensene ... kanskje ikke ...

Distribusjon for et system som dette trenger å være treg. Til tross for at det er relativt enkelt å sette opp dette systemet vil påvirke hele kontoret infrastruktur (godt digital en). For det første, rull ut til et par maskiner på en gang, overvåke nettverkstrafikk, hvordan arbeideren vertene utføre på en dag-til-dag basis. Du må kanskje endre jobben din konfigurasjon i svar på dine funn.

Når systemet har lagt seg med noen få maskiner (la oss si 10% av alle kontormaskiner, 5 dvs.) holde overvåking nettverkstrafikk og vertsmaskinen performance. Neste benchmark igjen, bør du nå være å behandle 33% flere arbeidsplasser enn din første benchmarks. Sjekk dette er slik, eller at du i alle fall i denne omtrentlig. Hvis ikke, undersøke hva som skjer før du går videre. Gjenta denne syklusen til du gjerne ha alle kontormaskiner kjører uten å drepe individuelle maskinens ytelse eller sliping nettverket ditt til en stillstand.

Til enhver tid holde benchmarking, selv etter at alle distribusjoner er gjort. Sjekk hvordan nye koden oppdateringer påvirke hastigheten på systemet ditt, sjekk alle arbeidere er rapportering og bearbeiding arbeidsplasser. Sakte (svært sakte) økning jobben din konfigurasjon for å få det beste ut av dine medarbeidere og nettverk.

Stopp!

Hva hvis du ønsker å stoppe arbeiderne fra å kjøre på noen gang? De er alle ute å kjøre, regenererende, og prøver sitt beste for å behandle data som sultne insekter. Svaret kan synes opplagt, men det er verdt å legge bare i etuiet oversett. Bare redigere dine behandling script med en exit (0) or die () eller en annen uttalelse til drepe din behandling jobb. En viktig grunn til at vi prøver alltid å oppdatere til den nyeste prosessering manuset før noen løp!

Demonstrasjon System

For å skrive dette settet med korte artikler jeg laget et veldig lite rutenett å demonstrere teknologier og metoder. Jeg leste masse artikler, tutorials, og brukt ulike verktøy for å sette opp og overvåke hva som foregikk. På ingen måte har jeg gått ut og mettet en hel kontor med trafikk og heller ikke har jeg hatt tilgang til en vanlig medarbeidere PC for å se hvordan vert resultatene ble påvirket.

Min demonstrasjon system var veldig ydmyk indeed. Jeg brukte min vanlige desktop satt opp som en jobb kontroll server. På denne hadde jeg installert mySQL server installert satt opp som en mester i replikering, PHP , Â og SVN knyttet gjennom apache (for tilgang via arbeideren VM).

Jeg så laget en CentOS arbeider maskin på VirtualBox på en 6 år gammel windows XP laptop. Jeg setup planlagte oppgaver som spesifisert etter kopiere VM på maskinen og la det gå.

Den virtuelle maskinen ble satt opp med PHP, subversion, og mySQL. Jeg sjekket ut en gren som heter 'arbeideren' fra jobben min kontroll servere depot og gjorde at det kunne bli oppdatert ved hjelp av 'svn update'. Neste jeg setup mySQL som en slave og sjekket at data ble Replikere fra mySQL på jobben kontroll serveren ned til arbeideren VM. Etter alt dette oppsettet jeg bash script og cron jobb.

Min behandling manuset i utgangspunktet gikk langs linjene av dette (svært enkle ting):

  • Les i navnefeltet
  • Telte antall lignende navn i en tabell fra datakilden holdt på VM
  • Telte antall navn som ovenfor, men splitting navnet med mellomrom (dvs. fornavn, mellomnavn og etternavn)
  • Gjentatte denne prosessen 1000 ganger

Hver jobb tok omtrent 20 minutter å kjøre. På et tidspunkt åpnet jeg flere eksemplarer av arbeideren VM på windows laptop og så jobber sjekkes ut av hver av arbeidstakerens IP-adresser. På dette punktet jeg også bekreftet at replikering automatisk startes på nytt.

Leaving the laptop gå på tomgang resulterte i en arbeidstaker begynner å behandle jobber fra jobben kontroll server. Når du gjenopptar laptop-bruk var det en forsinkelse på ca 30-60 sekunder, er dette en god del tid og personale ville trenge å bli gjort oppmerksom på at deres maskin kan pause for en kort stund når tilbake til maskinen. Nyere maskiner kan ikke ha en pause på denne lange. Fordelen med mengden av behandlingen utføres av disse maskinene under tomgang perioder ville mer enn oppveie ansatte å måtte vente en kort periode (si 1 minutt) på å komme fram til sine maskiner av en morgen (jeg ofte vente lenger på at dette for en Windows Defender Oppdateringen skal skje) forutsatt at de ble gjort oppmerksom på dette (nyttig tide å ta en morgenkaffe!).

Overall Jeg føler meg trygg på at jeg har vist det teknologier som kan brukes til å lage et slikt system. Jeg har vist at et slikt system fungerer på en (veldig) liten skala, og med litt mer eksperimentering kunne skaleres opp utnytte ressursene i en kontorets maskiner. Hvis jeg ikke komme til poenget å gjøre dette ville jeg være veldig interessert i å vite / se når noen andre gjør.

Konklusjoner / Evaluation

Den neste opplagte steget ville være å faktisk få en virkelig verden eksempel og begynne å ta i bruk et system som dette i et kontorlandskap og se hva som skjer. Spør en bedrift å forplikte seg til dette uten en sti flammende selskapet å bevise teknologi og effektiviteten kan være litt vanskelig. Grid / Distribuert databehandling er svært populært er enkelte kretser og har noen store programmer (BIONC, SETI @ Home, Folding @ Home, etc). Jeg hadde imidlertid ikke finne en mindre skala og enkelt system som dette i søkene mine som kunne rulles ut i et kontormiljø.

Jeg laget en i utgangspunktet gratis system som bruker det meste åpen kildekode programvare og verktøy tilgjengelig i nesten alle kontor. Teknologiene var i utgangspunktet vist og viser til å utføre og fungerer som forventet. Forhåpentligvis har jeg vise at med ikke mye arbeid og med et svært enkelt oppsett kan du distribuere et kontor grid computing system som er kraftig, billig, Â og skalerbart alle samtidig.

Når et system er oppe og kjører er det nesten ingen ende på hvor mye tilpasning og forbedringer du kan gjøre. For eksempel statistikk / benchmarking kan enkelt legges viser verdien av et slikt system hver dag. Nye maskiner kan legges raskt og enkelt som, og når de kommer med oppgraderinger til eksisterende maskinvare styrke din prosessorkraft.

Jeg håper du likte å lese denne serien av artikler og gitt deg mat for tanken på å drive et kontor bæresystem. Løsningen som presenteres her vil ikke nødvendigvis fungere i alle situasjoner, men bør kunne tilpasses slik at du kan få databehandlingen gjøres ved hjelp av din egen løsning.

Kan du gjerne sende meg noen kommentarer, rettelser eller forbedringer og jeg skal gjøre mitt beste for å holde denne artikkelen oppdatert å matche.

Zend Framework: Fundamentals - gjennomgang

Ved , lørdag 28 november 2009 22:42

Min arbeidsgiver nylig betalt for en gruppe av oss utviklere til å ta Zend Framework: Fundamentals selvfølgelig, her skal jeg oppsummere mine tanker og meninger på kurs for andre. For de som ønsker å spare tid, her er min oppsummering:

For utviklere som ikke har hatt tid til å se på Zend Framework dette kurset (Zend Framework: Fundamentals) tilbyr et godt helhetlig bilde av rammeverket introdusere deg til sentrale områder og gi nok informasjon for å fortsette. For de som har brukt tid på å se på rammene og har fulgt ett eller to tutorials dette kurset ikke tilbyr mye utover.

Bakgrunn

Jeg har vært en PHP utvikler for rundt 5-6 år, og har startet arbeidet med Zend Framework på en komponent basis i løpet av de siste 6 månedene. Jeg har utviklet og / eller vært en utvikler på et par små Zend Framework MVC sites. Jeg skal være ærlig, jeg har ikke hatt en enorm mengde eksponering for andre rammeverk fra et koding synspunkt, men har brukt flere timer å forske på prosjektet nettsteder og vurdere them. Rammeverket og samfunnet rundt Zend Framework det er ganske spennende, og det synes å være store muligheter der de går.

Om kurset

Kurset er levert over 9 to timers WebEx økter (med en 10-minutters pause i midten). Den tid går gjennom et sett av lysbilder fra Zend med diskusjon når som helst. Du kan bruke en mikrofon til å snakke med instruktøren, men for å være ærlig jeg ikke se noen bruke noe mer enn chattevinduet. I tillegg er en VMWare Ubuntu maskin er forutsatt som har eksempel-kode og prosjekter satt opp en en prøveversjon av Zend Studio. Kurset leder snakker til deltakerne enten over en integrert VoIP-løsning, eller du kan ringe i å bruke en av de mange verdensomspennende ringe inn tall.

I løpet av materialet består av en kort oversikt over Framework og MVC mønsteret før du begir deg inn i en prøve gjestebok søknad. Diskusjonen viste bootstrapping, Zend_Application, Db Tabeller, databasetilgang, Skjemaer Filtering, ACL, Validating, etc, etc. I utgangspunktet dekker alle emnene du vil kreve å få en grunnleggende side opp en kjører hele tiden gir deg verktøy til å gå og få mer avanserte i rammen (selv om dette gjorde beløpet til "Se nettsiden" mye av tiden).

Tid gis til å kode opp noen eksempler, og å utvikle "gjestebok" og enkle 'wiki' søknad. Personlig følte jeg at det å tilby koden eller hver app og deretter be oss om å utvikle det i hovedsak var en kopi sammen egentlig ikke gir en god erfaring. Jeg ville ha foretrukket å utvikle et program lignende, men ikke identiske. til eksemplet søknaden med fordelen av å ha en guide å referere til. Alternativt bygge søknader fra scratch med demonstrator ville av muligens førte til flere spørsmål om hvorfor og hvordan, og dermed gi en bedre forståelse av rammeverket, tross alt kan du slå opp detaljene etter kurset.

Den siste forelesningen bestod av arbeider på wikien søknad med hjelp / veiledning fra instruktør. Etter kurset tilbakemeldinger ble tatt, ble det understreket flere ganger gjennom kurset som Zend tar tilbakemeldingene svært alvorlig, faktisk tilsynelatende vår versjon av kurset var ganske ny. Noen av de andre utviklerne i selskapet vil ta kurset snart så det vil være interessant å se om dette har skjedd.

Kurset stilen var uformell, tillatt for tilbakemeldinger og samarbeid mellom deltakere og instruktør. Kurset leder var vennlig, imøtekommende (e-postadresser ble delt for spørsmål), og mens hans presentasjon fra lysbildene var litt vaklende virket fullt kompetente i rammeverket. Han var tydelig noen som brukte rammeverket på en jevnlig basis fremfor noen som er opplært til å undervise i kurset, jeg likte den "virkelige verden" erfaring i så måte.

Overall Feeling

På noen måter fant jeg selvfølgelig en bortkastet tid, i andre var det veldig hendig. Forhåpentligvis får jeg mine grunner tvers tydelig, og kanskje gi noen tankevekkere eller nyttige tilbakemeldinger (kjenne meg er dette usannsynlig!).

For meg selv dette kurset var rettet mot et for lavt nivå. Etter å ha gått gjennom QuickStart guide, les Rob Allen Zend Framework in Action, og jobbet med rammene litt jeg egentlig ikke få noe for mye. Jeg ville av likte selvsagt å plukke opp fra slutten av QuickStart og utvikle flere ferdigheter.

Når det er sagt, gjør kurstittel klart state "Zend Framework: Fundamentals" og i det aspektet kurset oppnår det den setter seg fore å gjøre. Andre medlemmer av utviklingsteamet som ikke har brukt tid på å se inn i rammeverket ferdig hver sesjon med entusiasme og stilte spørsmål som var veldig hyggelig å se.

Alt var ikke tapt, det var godt å tilbringe tid bekrefter de grunnleggende detaljene av rammeverket og få å stille et par spørsmål på områder hvor jeg ikke var 100%. Det ble også tid at jeg fikk sitte ned hver dag og tenke koding hjelp av rammeverket og fremtidige prosjekter, noe jeg ikke ville av vært i stand til å gjøre noe annet (kan du forestille deg din bedrift å akseptere at:?)). Sist men ikke minst du får også en fin attest fra Zend å si at du deltok på kurset (riktignok via e-post).

Zend Framework Certification

Dette var ett spørsmål som holdt kommer til bakhodet underveis, det ville forberede meg for sertifisering? Den raske, enkle er et rungende Nei. Faglærer var ganske tydelig på at med den ekstra råd som for sertifisering bør du virkelig skal bruke rammeverket på en dag til dag basis, og føler meg veldig komfortabel og trygg i sin bruk og metoder.

Oppsummering

Gitt alt jeg har skrevet ovenfor, vil jeg oppsummere alt i to enkle punkter:

  • Ny med Zend Framework: Dette kurset gjør akkurat det du forventer, det gir deg en fin innføring i rammeverket og en god jording på det grunnleggende som du kan bygge. Kurset ser ut til å skape interesse og entusiasme for rammen blant utviklere.
  • Brukte Zend Framework: Mens det var fint å shore opp noen av de svært grunnleggende Jeg følte tid, krefter og midler til å ta kurset kunne av vært brukt bedre andre steder. Det vil være fint å see Zend opprette en ny høyere nivå selvfølgelig å ta utviklere til neste nivå -. Minst til standarden på sertifisering og utover for det ville jeg registrere meg umiddelbart.












Panorama Theme by Themocracy

8 besøkende online nå
3 gjester, 5 bots, 0 medlemmer
Maks besøkende i dag: 17 kl 04:02 UTC
Denne måneden: 19 på 19-08-2011 06:09 UTC
I år: 130 på 28-03-2011 22:40 UTC
All time: 130 på 28-03-2011 10:40 UTC