Hyrje
Unë punoj në një kompani ku kemi drejtuar shumë punë grumbull përpunimit miliona e të dhënave e të dhënave çdo ditë dhe unë kam qenë duke menduar kohët e fundit për të gjitha makinat që ulen çdo ditë duke bërë asgjë për disa orë. A nuk do të jetë mirë në qoftë se ne mund të përdorni këto makina për të forcuar pushtetin e përpunimit të sistemeve tona? Në këtë grup të neneve Unë do të shikojmë në përfitimet potenciale të punësuar një zyrë rrjet duke përdorur mjedise virtualised.
Në Pjesën 1 I dha një pasqyrë të sistemit dhe teknologjive unë do të përdorni, si dhe u diskutua si disa nga arsyet e mundshme pse ju do të doni për të krijuar një rrjet zyre.
Kontrolli i punës
Nëse ju do të jeni të konkurrojnë punë, atëherë ju do të jeni nevojë për disa rrugë për të menaxhuar ato. Kontrollit tuaj punë të sistemit (në serverin tuaj të punës) duhet të jetë me të vërtetë menduar mirë para se edhe u përpjekur për të drejtuar një rrjet zyre. Pra, së pari, cilat janë detyrat për një sistem të kontrollit të punës:
- Dorë nga punët me kërkesë të punëtorëve
- Tregoj punëtorë çfarë lloji i Punë për të drejtuar
- Punë në Track
- Sigurohuni që Punë janë drejtuar vetëm një herë
- Sigurimi i të dhënave të punës për punëtorët, ose të paktën tregoni atyre se ku mund të merrni atë
Sistemi gjithashtu duhet të jetë e zgjeruar, një zgjidhje që punon për tani në një rast të vetëm mund të zgjatet për të kandiduar disa lloje të vendeve të punës si biznesin e sheh me vlerë në një zgjidhje të rrjetit. Për shembull, mund të fitojë Punë në prioritetet, më shumë se një lloj punë mund të ekzistojnë (Bazat dmth. disa code), përfundimisht ju mund të drejtuar edhe disa makina të ndryshme punonjësit që janë optimizuar për secilin lloj të punës (megjithëse kjo do të lëvizin larg nga punonjesi gjenerik 'ide). Gjithmonë të përpiqemi të mendojmë për të ardhmen, kur zhvillimin e sistemeve, një vizion afat shkurtër mund të çojë në frustrimit afat më të gjatë dhe kohë të rritjes e zhvillimit.
Server Job
Ne do të jeni nevojë diku për të kontrolluar punën tonë nga, kjo duhet të jetë sistemi i vetëm në rrjetin tuaj që ka një locator fikse të burimeve, të jetë që një adresë IP, emri i host, URL (duke përdorur të brendshme DNS), etj Kjo është për shkak se punëtorët duhet të dini ku të kërkoni për punë, punëtorët kanë nevojë për të gjetur sistemin e kontrollit të punës (nuk kontrolli punë të sistemit të gjetur punëtorë).
Serveri punë në vetvete nuk ka të vërtetë kanë një detyrë të komplikuar (në një sistem themelor gjithsesi), ajo ka nevojë për të ruajtur një listë të vendeve të punës, dora nga puna, për të marrë rezultatet, dhe më pas ruajtur ato për rikthim më vonë. Si këto pjesë ('dorë nga punë' të tilla si) janë përcaktuar mund të jetë shumë themelore. Më vonë ne mund të zgjasë e sistemit për të përfshirë një ndërfaqe të administratës për të shtuar, modifikoni, fshini, të pezullojë punët por kjo është përtej këtij ushtrimi.
Nuk ka asnjë arsye whatsoever atëherë që serveri juaj punë nuk mund të jetë një makinë virtuale drejtimin brenda serverit tuaj kryesore të përpunimit me kusht që ajo nuk thahet burime shumë prej saj. Serveri punë megjithatë ka nevojë për disponueshmërinë e lartë, në qoftë se ajo shkon poshtë në një mbrëmje të premten do të jeni të humbur një fundjavë e tërë e përpunimit, potencialisht ju kushton disa javë me vlerë të madhe të kohës të përpunimit (kur krahasohet me kryesore serverin tuaj të përpunimit të vetëm) . Ju mund të dëshirojnë të marrin në konsideratë vendosjen e serverit tuaj të punës në një mjedis të ngarkesës të ekuilibruar për disponueshmërinë e lartë.
Setup bazë
Skema themelore për serverin tonë të punës do të përbëhet nga ajo që unë jam duke e quajtur një nga serverat e mi squllur, që është nux Li, m ySql, P HP). Kodi kandidon për punëtorët Thea vërtetë do të punojnë jashtë çfarë Punë mund të drejtuar nga bashkëveprojmë me me bazat e të dhënave të kontrollit të punës e sistemit. Më vonë ne mund të krijojë një shërbim të internetit dhe në fakt dorën jashtë vendeve të punës në vend se punonjësit bëjnë punën e vështirë vetë, por tani për tani ne do të vazhdojmë duke përdorur parimin KISS (Keep it Simple, Stupid!).
Pra, ju lejon të krijojë tre MySQL tavolina për t'u marrë me punë. Këto do të jenë `Punë`, `jobRecords`, dhe `jobResults`.
Ja unë jam duke përdorur SQL Buddy një alternativë e madhe pak në phpMyAdmin vetëm për shkak se më e lehtë të saj për të instaluar në CentOS (për të tjerët e shohin: 10 alternativa e Madhe në phpMyAdmin )
Kjo tabelë përbëhet nga 5 fusha të thjeshta,
- id: Unike të identifikuar punën
- Emri: Mund të jetë një referencë e klientit, ose ndonjë numër identifikues të tjera
- Statusi: Ju duhet të dini se ku puna është në, p.sh.
- 0: Nuk ka filluar
- 1: kap
- 2: Kompletuar
- started_by: Kush filloi bërë këtë punë? Kjo nuk është e nevojshme tërësisht, por është një e mirë që të ketë. Unë do të sugjeroj punëtorë ndjekja me adresën e tyre IP në rrjetin tuaj
- started_at: Kur ka punëtor të filluar punë? Nga ndjekja e punët që nuk kanë përfunduar brenda shumës X kohe ne e dimë se kemi nevojë për të marr këtë punë edhe një herë dhe të fillojnë të përpunimit nga një tjetër punëtor. Punëtorët mund të ndalojë përpunimin / shkoni e shkëputur për çdo numër arsyesh, e dështimit të pushtetit, Crash, humbje të rrjetit etj
Është e lehtë se si kjo tabelë mund të zgjatet me një disa fusha të tjera për të lejojnë për ndjekjen e statistikave, një kohë të përfundojë kolonë për të parë se sa kohë punë mori, një kundër për të parë se sa punëtorë të kap punë (natyrisht kjo duhet të kujdesen për 1), prioritet punë, lista mund të vazhdojë dhe më. Në skenarët punë më komplekse do të ishte e mundur që të përcaktojë se sa memorie punonjës do të duhet qasje në (dhe prandaj përdorni vetëm punëtorë të përshtatshme), apo edhe se çfarë lloji i punëtorit do të jetë e nevojshme.
Lejon të shtoni një punë disa shembuj:
Tabela e ardhshëm përsëri është mjaft e thjeshtë për të kuptuar, këto janë të dhënat tona të punës. Ata janë të lidhur me kryesore tryezë punë nga një kolonë `s jobs_id`. Përbëjnë i kësaj tryeze shumë varet nga të dhënat që ju duhet të furnizimit të punëtorëve tuaj, ju lejon të bërë një shembull shumë të thjeshtë ku ne kemi katër kolona:
- id: ID e procesverbalit
- Emri: Emri i personit
- Adresa: Adresa e personit
- jobs_id: ID punë që ky rekord është i lidhur me
Tabela e tretë dhe i fundit përbëhet nga një tryezë e rezultateve, ajo ka shumë të njëjtën të bërë deri sa të dhënat tryezën tonë, dhe me shtimin e disa shtyllave mund të jetë pjesë e tabelës të dhënat:
- job_record_id: Link rezultatin në tryezën e punës
- Rezultati: Të dhënat rezultojnë
... Dhe kjo është e gjitha që ju duhet për kontrollin e punës! (Edhe pse në një nivel shumë bazik) Në rastin tim unë jam i vuri në një tjetër tavolinë, ku të dhënat e mia në proces ishte vendosur, por kjo mund vetëm si lehtësisht qenë një file, parametrat për të drejtuar kodin simulim, ju atë emër.
Zgjedhjen e një punë
Siç u tha më parë, punëtorët do të bëjnë menaxhimin e punës tonë për ne tani për tani, kështu që të gjithë ne kemi nevojë të vërtetë të bëni është të gjeni një punë që ka nevojë për përpunim dhe për të marrë informacion. Si do ta bëjmë këtë? Pra i bie zgjedhjen tonë të punës kriteret dhe të kërkoni për punë, në SQL kam bërë në vijim:
- Merrni ndonjë punë që nuk janë shënuar si të plotë, por nga punonjësit tonë dhe ktheni ato (zëvendësim ME__ dokumentin me një identifikues, lehtë do të jetë adresa IP):
UPDATE s `Punë` SET `status` = 0 KU `status` = 1 DHE `started_by` = __ ME__;
- Duke përdorur zgjedhjen tonë të punës kriteret, zgjidhni një punë dhe tregoni sistemin e kontrollit se ky punëtor ka të bëjë me atë:
UPDATE s `Punë` SET `status` = 1, `started_by` = __ ME__, `started_at` = NOW () KU `status` = 0 APO
(`Status` = 1 DHE `started_at`> DATE_SUB (NOW (), Interval X ORE)) ORDER BY `id` s KLV;
Nga punët grabbing që nuk janë kthyer rezultatet në sasi X kohe ne kemi siguruar që të gjitha punët janë drejtuar në rast të një punëtori crashing ose duke shkuar AWOL.
- Next kap detajet punëve ndjekura nga të dhënat e vetë:
SELECT * Nga `punë` KU `started_by` = __ ME__ AFATI 1;
SELECT * Nga job_records `` `id` KU = __ JOBID__;
Pas përfundimit të punës kemi futur të dhënat tona të rezultojnë dhe të shënojë punë si i plotë. Mos harroni si Punë mund të pezullojë / rinisë në çdo kohë të lejojë për disa Fuqia në shkrimin tuaj. Kjo mund të jetë se detyra pezullon gjysmë rrugë nëpërmjet përditësimit sistemin e kontrollit të punës, në mënyrë të kontrolluar numrin e regjistrimeve në një punë dhe numrin e rezultateve të ruajtur përsëri në sistemin e kontrollit të punës do të jetë një veprim i mençur.
Përveç kësaj, ndërsa kjo demonstron se si Punë mund të përzgjidhen dhe menaxhohen nga një kuadër SQL-query ju duhet të vërtetë të abstraguar kontrollin tuaj të punës në mënyrë që nëse ju vendosni të kaloni për të përdorur një shërbim web, një sistem file bazë, XML , ose ndonjë tjetër numri i sistemeve ajo nuk do të ndikojë në kodin e mësipërm të.
Konfigurimi Job
Aspekti tjetër për t'u marrë parasysh është madhësia punë dhe konfigurimit. Duke luajtur me konfigurimin e punës që ne mund të arrijnë një ekuilibër të shkëlqyer midis shpejtësisë, riperteritja e procesit, dhe besueshmërinë. Merrni një skenarë MKO çift:
- Punë të marrë 1 ditë çdo për të drejtuar: Kjo do të thotë se punëtorët tuaj duhet 15 ditë për të proceduar çdo punë (kujtoni 10 për qind të fuqisë për 2/3rds të kohës). Kjo nuk është qartë një konfiguracion i mençur, madhësisë tuaj të punës është mënyrë shumë e madhe! Ajo do të marrë të paktën dy herë kohën për të marrë një punë të përpunuara duhet punëtor fillestar të shkojë AWOL (koha të marr se ajo nuk i ka kthyer një rezultat plus kohë ripërpunimin). Në një ideal që ju do të keni të paktën një punë të plotë pastruar lehtë deri në fund të çdo periudhe të gjatë boshe, në këtë mënyrë ju mbani punët troket mbi dhe në të keqe rastin e një punë do të marrë dy ditë për procesin duhet së pari shkojnë të zhdukur.
- Punë marrin 1 minutë për të kandiduar: Kjo do të thotë se punëtorët tuaj të marrë rreth 15 minuta për të drejtuar çdo punë. Përderisa kjo mund të duket fillimisht ideal, keni fituar përpunimin shtesë të punës gjatë kohës së drekës, të prishet kafe, takime, etj, ky skenar vë tendosje në zona të tjera të sistemit tuaj dhe paraqet problemet e veta. Për shembull, së pari raporti Setup / përpunimit kohën tuaj do të shkoni djathtas poshtë, pra humbur efikasitetin e sistemit. Rrjeti juaj do të jetë informacioni vazhdimisht streaming punë të ndryshme stafit punëtorëve frustruese që janë kar ditën e tyre për punën e përditshme. Ju jeni gjithashtu do të vënë më shumë tendosje në serverin e përpunimit tuaj të punës si ajo ka për të shpërndaj shumë dhe shumë e copa të vogla të punës në një bazë të rregullt. Së fundi, në këtë situatë, nëse serveri juaj puna shkon poshtë ju do të jeni për të krijuar një regjistër të madh mbrapa e punës së pambaruar, ndërsa punët e mëdha mund të vazhduar përpunimin blissfully dijeni se serveri punë u përjetuar vështirësi.
Në realitet nuk do të ketë një konfigurim ideal për setup tuaj rrjetit, shumë varet nga burimet në dispozicion, llojet e Jobit, kthesën kërkesat punë me kohë, aftësive të rrjetit, dhe kështu me radhë. Megjithatë, disa udhëzime do të jenë:
- Punë Madhësia në mënyrë që çdo punëtor mund ta merrni nëpërmjet të paktën punëve 3-4 në një periudhë prej 15 orëve (gjatë gjasa periudha boshe kohë)
- Luaj me madhësinë e punës në mënyrë që koha organizim bëhet mjaft i parëndësishëm në krahasim me kohën e përpunimit (duke pasur parasysh pika lart).
- Nëse një punë nuk e bën të plotë në vlerë të dyfishtë të të kohës (ndoshta me pak) ju presin që ai të përfundojë ajo supozohet se AWOL tij shkuar dhe të fillojnë përpunimin atë me një tjetër punëtor. Kjo do të thotë që ju mund të duhet të presin deri në tri herë gjatësinë normale të punës për atë për të përfunduar (ndoshta më shumë në qoftë se puna pasuese dështon). Ju mund të dëshironi të reduktuar këtë kohë, por të jenë të kujdesshëm për të mos zvogëluar atë shumë si ju mund të filloni dublikuar detyra të përpunimit në një bazë të rregullt.
- Punë në duhet të jetë i pavarur nga kërkesat e jashtme sa më shumë të jetë e mundur. Serveri punë, për shembull, duhet vetëm të kontaktohet në fillim dhe në fund të çdo punë.
- Mos njom rrjetit tuaj, kjo do të ketë dy efekte negative, personeli juaj gjatë ditës do të gjeni duke përdorur rrjetin frustruese dhe problemet mund të jetë me përvojë me lidhjet kohen nga një problem që vetëm do të merrni më keq si ju shkallë rrjetit tuaj.
- Sigurimi Punë mund të kandidojë në punëtorët tuaj. Nëse Punë të bëhet shumë memorie Punë intensive apo disk hapësirë intensive do të fillojë ndërpres dhe e vetmja gjë që ju do të vëreni është një rënie në numrin e vendeve të punës të përpunuara me asnjë arsye reale pse.
Rezultatet dorëzimin e një Jobit
Kur paraqitur rezultatet e një punë është e rëndësishme që të kontrolloni se rezultatet nuk janë dorëzuar nga një tjetër punonjës, veçanërisht në qoftë se punonjësi aktual ka qenë në gjumë për disa kohë.
Kur rezultatet janë paraqitur të sigurojë që numri i rezultateve të përputhet me numrin e të dhënave në punë.
Siç u tha më parë, dhe nuk mund të jetë mbi theksoi, të ndërtuar tolerancë gabimi në rikthim të punës dhe rezultateve nënshtrim. Punëtorët mund (dhe më shumë gjasa do të) shkojnë në mënyrë të pezullojë në më të papërshtatshëm të kohës dhe kjo duhet të catered për të. Gjithashtu edhe një herë abstraguar larg rezultatet paraqitjen tuaj do t'ju ndihmojë të kujdesem për ndryshimet e ardhshme në sistemin e kontrollit tuaj të punës shumë më e lehtë për t'u marrë me të.
Përmbledhje
Në këtë section kemi shikuar në atë që një kontroll punë server duhet të bëjnë dhe si të merrni një sistem shumë bazë ngritur. Ne diskutuam se si për të tërhequr një punë nga sistemi i kontrollit dhe si më e mirë për të konfiguruar punë për të marrë shumicën tonë i sistemit të rrjetit zyrën tuaj. Për të përfunduar, një paragraf ose dy në paraqitjen e rezultateve të kthehet në server të kontrollit të punës u paraqit.
- Një kontroll punë server menaxhon punët dhe siguron që të gjitha njësitë e punës janë përfunduar
- Duke abstraguar punën tuaj Përzgjidhe / Rezultatet paraqitja ne mund të ndryshojmë teknologjinë e serverit kontrollit pa probleme shumë
- Konfiguro punën tuaj për të siguruar që ata janë drejtuar shpejt dhe me efikasitet, pa vënë shumë presion në infrastrukturën e rrjetit tuaj, dhe pa dublikuar detyra të përpunimit në një bazë të rregullt.
- Sigurohuni që ju të ndërtuar tolerancë gabimi dhe checking gabim në rutinat tuaj, punëtorët mund të pezullojë dhe të rinisë dhe më të papërshtatshëm të kohës. Mos harroni të kontrolloni nëse rezultatet tashmë janë dorëzuar nga një tjetër punëtor.
Herën tjetër
Në pjesën 3 ne do të krijoni virtuale makinë tona të përpunimit dhe të ngritur makina dritaret tona të bëhen boshe në kohë punëtorë.