Hyrje
Unë punoj në një kompani ku kemi drejtuar shumë vende pune grumbull përpunimin e miliona e të dhënave të të dhënave të çdo ditë dhe unë kam qenë kohët e fundit duke menduar për të gjitha makinat që ulen rreth çdo ditë duke bërë asgjë për disa orë. Nuk do të jetë mirë nëse ne mund të përdorim këto makina për të forcuar pushtetin përpunimin e sistemeve tona? Në këtë grup të neneve Unë do të shikojmë në përfitimet e mundshme e punësimit të një zyre të rrjetit duke përdorur mjedise virtualised.
Në Pjesa 1 I dha një pasqyrë të sistemit dhe teknologjitë do të jem duke përdorur, si dhe diskutoi disa nga arsyet e mundshme pse ju do të duan të krijojnë një rrjet zyrë.
Kontrolli i punës
Nëse ju do të jeni të konkurrojnë punë, atëherë ju do të jeni nevojë për disa mënyra për menaxhimin e tyre. Kontrollit të sistemit tuaj të punës (në serverin tuaj të punës), duhet të jetë me të vërtetë të menduar mirë para se të përpiqet për të drejtuar një rrjet zyrë. Pra së pari, cilat janë detyrat për një sistem të kontrollit të punës:
- Punë dorën, me kërkesë të punonjësve
- Tregoj punëtorëve çfarë lloji të vendeve të punës për të drejtuar
- Punë Track
- Të siguruar se punët janë drejtuar vetëm një herë
- Japin të dhëna të punës për punëtorët, ose së paku 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ë drejtuar disa lloje të vendeve të punës si biznesi e sheh me vlerë në një zgjidhje të rrjetit. Për shembull, punë mund të fitojë prioritetet, më shumë se një lloj pune mund të ekzistojnë (bazat e disa dmth kodi), në fund ju mund edhe të drejtuar makina të ndryshme punëtor që janë optimizuar për çdo lloj të punës (edhe pse që nuk largohen nga punonjësi "gjenerike 'ide). Gjithmonë të përpiqemi të mendojmë për të ardhmen, kur zhvillimin e sistemeve, një vizion afat të shkurtër mund të çojnë në zhgënjim afat më të gjatë dhe kohë në rritje të zhvillimit.
Server Job
Ne do të jeni nevojë diku për të kontrolluar punën tonë nga, kjo duhet të jetë i vetmi sistem në rrjet tuaj që ka një burim të caktuar locator, të jetë që një adresë IP, emrin e host, URL (duke përdorur DNS të brendshëm), etj Kjo është për shkak punëtorëve duhet të dini ku të kërkoni punë, punëtorët duhet të gjejmë sistemin e kontrollit të punës (nuk e kontrollit të punës të sistemit të gjetur punëtorë).
Server punës në vetvete nuk ka të vërtetë kanë një detyrë e komplikuar (në një sistem bazë Gjithsesi), ajo ka nevojë për të ruajtur një listë të vendeve të punës, të dorëzuar nga vendet e punës, të marrë rezultatet, dhe më pas dyqan ato për rikthim më vonë. Si këto pjesë ('dorë nga punë' të tilla si) janë përcaktuar mund të jetë shumë bazë. Më vonë ne mund të zgjasë e sistemit për të përfshirë një ndërfaqe administratës për të shtuar, edit, delete, të pezullojë punët por kjo është përtej këtij ushtrimi.
Nuk ka asnjë lloj arsye, atëherë që serveri juaj punë nuk mund të jetë një makinë virtuale drejtimin brenda serverin tuaj kryesore të përpunimit me kusht që ajo nuk ka shterim burimet shumë nga ajo. Server punë megjithatë ka nevojë për disponueshmërinë e lartë, në qoftë se ajo shkon poshtë në një mbrëmje e premte do të jeni të humbur një fundjavë e tërë e përpunimit, potencialisht ju kushton disa javë me vlerë të kohës së përpunimit (kur krahasohet me serverin tuaj kryesore të përpunimit të vetëm) . Ju mund të dëshironi të marrin në konsideratë vendosjen e serverit tuaj të punës në një mjedis të ngarkesës të balancuar për disponibilitetin e lartë.
Setup bazë
Setup bazë 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 i butë (që është nux Li, m ySql, P HP). Kodi kandidon për punëtorët thea do të punojnë në të vërtetë se çfarë punë mund të drejtuar nga bashkëveprojmë me bazat e të dhënave me kontrollin e sistemit të punës. Më vonë ne mund të krijojë një shërbim web dhe në të vërtetë dora e vendeve të punës në vend se të punëtorëve të bëjë 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, lejon krijimin e 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 për të phpMyAdmin vetëm për shkak se më të lehtë e saj për të instaluar në CentOS (për të tjerët e shohin: 10 alternativa e madhe për të phpMyAdmin )
Kjo tabelë përmban 5 fusha të thjeshta,
- id: Unike identifikimin e vendeve të punës
- Emri: Mund të jetë një referencë e klientit, ose ndonjë numër të identifikuesve të tjera
- Statusi: Ju duhet të dini ku puna është në, p.sh.
- 0: Nuk ka filluar
- 1: kap
- 2: Kompletuar
- started_by: Kush e ka filluar duke bërë punë? Kjo nuk është e nevojshme tërësisht, por është një mirë të ketë. Unë do të sugjeroj punëtorë përcjelljes nga adresat e tyre IP në rrjetin tuaj
- started_at: Kur u punonjësi filluar punë? Nga ndjekja punë që nuk e kanë përfunduar në sasi të X të kohës ne e dimë ne duhet të marr në punë një herë dhe të fillojë përpunimi nga një tjetër punëtor. Punëtorëve të mund të ndalojë përpunimin / shkoni e shkëputur për çdo numër arsyesh, dështimi i pushtetit, aksident, humbje të rrjetit, etj
Është e lehtë se si kjo tabelë mund të zgjatet me disa fusha të tjera për të lejuar për statistikat ndjekjen, një kohë të përfundojë kolonë për të parë se sa kohë në punë mori, një kundër për të parë se sa punëtorë të kap punë (pa dyshim ky duhet të priren të 1), prioritet të punës, lista mund të vazhdojë dhe më. Në skenarët e punës më komplekse do të ishte e mundur për të përcaktuar se sa memorie të punonjësit do të duhet qasje në (dhe për këtë arsye të përdorin vetëm punëtorë të përshtatshme), apo edhe se çfarë lloji i punëtorëve do të jetë e nevojshme.
Le të shtoni një punë disa shembull:
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ë `jobs_id`. Përbëjnë të kësaj tabele shumë varet nga të dhënat që ju duhet të furnizimit të punëtorëve tuaj, lejon të bëjë një shembull shumë të thjeshtë ku ne kemi katër shtylla:
- id: ID i regjistruar
- Emri: Emri i personit
- Adresa: Adresa personit
- jobs_id: ID punë që ky rekord është i lidhur me
Tabela e tretë dhe e fundit përbëhet nga një tabelë rezulton, ai ka të njëjtën shumë të bëjë si të dhënat tabelën tonë, dhe me shtimin e disa kolonave mund të jetë pjesë e tabelës dhënat:
- job_record_id: Link rezultati në tavolinën e punës
- Rezultati: Të dhënat Rezultati
... Dhe kjo është e gjitha që ju nevojitet për kontroll të punës! (Megjithëse në një nivel shumë bazë) Në rastin tim unë jam vënë në një tjetër tavolinë, ku të dhënat e mia për të procesit ishte e vendosur, por kjo mund po aq e lehtë është një fotografi, parametrat për të kandiduar kodin simulimi, ju atë emër.
Zgjedhjen e një pune
Siç u tha më parë, punëtorët do të bëjë menaxhimin e tona të punës për ne tani për tani, kështu që të gjithë ne duhet të vërtetë nuk është të gjejnë një punë që ka nevojë për përpunimin dhe për të marrë informacion. Si do ta bëjmë këtë? Well marr zgjedhjen tonë të punës kriteret dhe të kërkoni për punë, në SQL kam bërë në vijim:
- Të marrë ndonjë punë që nuk janë shënuar si të plotë, por nga punonjësit tanë dhe rivendosur ato (zëvendësues __ME__ me një identifikues, lehtë do të jetë adresa IP):
UPDATE `SET` punë `status` = 0 KU `status` = 1 DHE `started_by` = __ME__;
- Duke përdorur zgjedhjen tonë të punës kriteret, zgjidhni një punë dhe të them të sistemit të kontrollit se ky punonjësi që kanë të bëjnë me:
UPDATE `SET` punë `status` = 1, `started_by` = __ME__, `started_at` = TANI () KU status `` = 0 APO
(`Status` = 1 DHE `started_at`> DATE_SUB (TANI (), intervali X ORE)) ORDER BY id `` ASC;
Duke grabbing punës që nuk janë kthyer rezulton në sasinë e kohës X ne të siguruar që të gjitha punët janë drejtuar në rast të një punonjësi ose duke shkuar AWOL crashing.
- Next kap detajet punët e ndjekur nga të dhënat e tyre:
SELECT * `punë NGA KU` `` started_by = __ME__ LIMIT 1;
SELECT * NGA `job_records` `id` KU = __JOBID__;
Pas përfundimit të punës që ne të futur të dhënat tona të rezultojë dhe të shënojë punë si plotë. Mos harroni si punë mund të pezullojë / rifillojë në çdo kohë të lejuar për disa Fuqia në skenarin tuaj. Kjo mund të jetë se detyra pezullon gjysmë rrugë nëpërmjet përditësimit sistemit të kontrollit të punës, në mënyrë të kontrolluar numrin e shënimeve në një punë dhe numri i rezultateve 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ë kornizë të SQL-query ju duhet të vërtetë të jetë nxjerrja e kontrollit tuaj të punës në mënyrë që nëse ju vendosni të kaloni në përdorimin e një shërbimi të internetit, një sistem të bazuar fotografi, XML , apo ndonjë tjetër Numri i sistemeve ajo nuk do të ndikojë në kodin atë.
Konfigurimi Job
Aspekti tjetër për t'u marrë parasysh është madhësia e punës dhe konfigurimin. Duke luajtur me konfigurimin e punës, ne mund grevë një bilanc të shkëlqyer mes të shpejtësisë, replikimin e procesit, dhe besueshmërinë. Merrni një skenarë MKO çift:
- Jobs marrë 1 ditë secilit për të kandiduar: Kjo do të thotë se punëtorët tuaj duhet 15 ditë për të procesit të çdo punë (kujtoni 10% të fuqisë për 2/3rds e kohës). Kjo nuk është e qartë një konfiguracion i mençur, madhësia e tuaj të punës është mënyrë shumë e madhe! Ajo do të marrë të paktën dy herë për të marrë një punë të përpunuara duhet të punëtorit fillestare të shkojnë AWOL (koha për të marr se 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ë të pastruar lehtë deri në fund të çdo periudhe të gjatë i papunë, në këtë mënyrë ju mbani punë tik-tak mbi dhe në rastin më të keq një punë do të marrë dy ditë për të procesit duhet së pari të humbur.
- Jobs marrë 1 minutë për të kandiduar: Kjo do të thotë se punëtorët tuaj të zgjasë rreth 15 minuta për të drejtuar çdo punë. Përderisa kjo mund të duket fillimisht ideale, ju fitoni përpunimin e të tjera punë gjatë kohës së drekës, prishet kafe, takimet, etj ky skenar e vë barrën e 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ë shkojnë drejtë poshtë, pra humbjen e efikasitetit të sistemit. Rrjeti juaj do të jetë vazhdimisht streaming informacion punë të ndryshme të stafit të punëtorëve frustruese të cilët janë monotone ditën e tyre në 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ë të shpërndaj shumë dhe shumë e copa të vogla të punës në baza të rregullta. 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 e pasme të punës papërfunduar ndërsa punët më të mëdha mund të vazhduar përpunimin e 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 kërkesave të punës të punës kthesën e kohës, aftësinë e rrjetit, dhe kështu me radhë. Megjithatë, disa udhëzime do të jenë:
- Size punë në mënyrë që çdo punëtor mund të marrë me të paktën 3-4 vende pune në një periudhë prej 15 orëve (gjatë periudhës boshe të ngjarë kohe)
- Luaj me madhësinë e punës kështu që kohë të instalimit të bëhet mjaft e parëndësishme në krahasim me kohën e përpunimit (duke patur parasysh pikën më lart).
- Nëse një punë nuk të plotë në dyfishin e kohës (ndoshta më pak), ju presin atë për të përfunduar atë supozojmë se AWOL e saj të përpunimit të shkuar dhe të fillojnë 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ë një punë që ajo të plotë (ndoshta më gjatë nëse puna e mëvonshme nuk). Ju mund të dëshironi të reduktuar këtë kohë, por të kujdesshëm të mos e ulur atë shumë më shumë që ju mund të filloni dublikuar detyra të përpunimit në baza të rregullta.
- Punët duhet të jenë të pavarur nga kërkesat e jashtme sa më shumë të jetë e mundur. Server punës, për shembull, duhet vetëm të kontaktohet në fillim dhe në fund të çdo punë.
- A nuk e ngop rrjeti juaj, kjo do të ketë dy efekte negative, stafi juaj ditës do të gjeni duke përdorur rrjetin frustruese dhe problemet mund të jetë me përvojë me lidhjet kohën një problem që do të merrni vetëm keq si ju shkallë të rrjetit tuaj.
- Të siguruar punë mund të kandidojë për punëtorët tuaj. Nëse punë bëhen shumë punë intensive e kujtesës ose disk space intensive do të fillojë aborting 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 të vërtetë nuk ka arsye pse.
Rezultatet Dorëzimi i një pune
Kur dorëzimin e rezultateve të një punë është e rëndësishme të kontrolloni se rezultatet nuk janë paraqitur nga një tjetër punëtor, veçanërisht në qoftë se punonjësi aktual ka qenë në gjumë për disa kohë.
Kur rezultatet janë paraqitur të siguruar që numri i rezultateve përputhet me numrin e të dhënave në punë.
Siç u tha më parë, dhe nuk mund të jetë mbi theksuar, të ndërtuar tolerancë gabimi në gjetjen e punës dhe rezultatet e dorëzimit. Punëtorët mund (dhe më shumë gjasa do të) shkojnë në mënyrë të pezullojë në më të papërshtatshëm për herë dhe kjo duhet të catered për të. Gjithashtu edhe një herë abstracting 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 i punës server duhet të bëjë dhe si të merrni një sistem shumë bazë ngritur. Ne diskutuam se si të marrim një punë të sistemit të kontrollit dhe mënyrën më të mirë për të konfiguruar punë për të marrë më tonë të sistemit të rrjetit zyrën tuaj. Për të përfunduar, një paragraf ose dy në dorëzimin e rezultateve përsëri në server kontrollin e punës u prezantua.
- Një kontroll të punës server menaxhon punë dhe siguron që të gjitha njësitë e punës janë përfunduar
- Duke abstraguar punën tuaj të zgjedhur / rezultatet e paraqitjen ne mund të ndryshojmë teknologjinë e serverit kontrollin pa probleme shumë më të
- Configure punë tuaj për të siguruar se ata janë të drejtuar shpejt dhe me efikasitet, pa vënë shumë presion mbi infrastrukturën e rrjetit tuaj, dhe pa dublikuar përpunimit të detyrave në mënyrë të rregullt.
- Të siguruar që ju të ndërtuar tolerancë gabimi dhe checking gabim në rutinat tuaj, punëtorët mund të pezullojë dhe rinisë dhe më të papërshtatshëm të kohës. Mos harroni të kontrolloni nëse rezultatet tashmë janë parashtruar nga një tjetër punëtor.
Herën tjetër
Në pjesën e 3 ne do të krijojë virtual machine tona të përpunimit dhe të ngritur makina dritaret tona të bëhen boshe-punëtorët me orar.