Zyra Grid Computing duke përdorur mjedise Virtual - Pjesa 2
Hyrje
Unë punoj në një kompani ku kemi drejtuar grumbull shumë punë të përpunimit të miliona e të dhënave 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ë Pjesën 1 I dha një pasqyrë të sistemit dhe të teknologjive të unë do të përdorin, si dhe u diskutua si disa nga arsyet e mundshme pse ju do të duan të krijojnë një rrjet zyrë.
Job Control
Nëse ju do të jeni të konkurrojnë punë atëherë ju do të jeni nevojë disa mënyra për të menaxhuar ato. kontrollit të sistemit të juaj punë (në server tuaj të punës), duhet të jetë me të vërtetë menduar mirë para se edhe përpjekur për të drejtuar një rrjet zyrë. Pra, së pari, cilat janë detyrat e një sistemi të kontrollit të punës:
- Dorë nga punët me kërkesë të punonjësve
- Tell 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ë
- Sigurimi i të dhënave të punës për punëtorët, apo të paktën tregoni atyre 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ë punëve si biznes e sheh me vlerë në një zgjidhje të rrjetit. Për shembull, punët mund të fitojë prioritetet, më shumë se një lloj pune mund të ekzistojnë (bazat e disa dmth kodi), në fund ju mund të drejtohet edhe disa makina të ndryshme punëtor që janë optimizuar për secilin lloj të punës (edhe pse se ka lëvizje larg nga "punonjës i përgjithshëm 'ide). Gjithmonë të përpiqemi për të menduar për të ardhmen, kur sistemet e zhvillimit, një vizion afat të shkurtër mund të çojnë në zhgënjim afat më të gjatë dhe të kohës në rritje të zhvillimit.
Job Server
Ne do të jeni nevojë diku për të kontrolluar punën tonë nga, ky duhet të jetë i vetmi sistem në rrjet tuaj që ka një pozicionimi të caktuar të burimeve, të jetë që një adresë IP, emri i host, URL (duke përdorur DNS të brendshëm), etj Kjo është për shkak se punëtorët duhet të dini se ku mund të shikoni për punë, punëtorët duhet të gjeni sistemit të kontrollit të punës (nuk e kontrollit të punës të sistemit të gjetur punëtorë).
Server punë në vetvete nuk ka të vërtetë kanë një detyrë e komplikuar (në një Gjithsesi bazë sistemi), ajo ka nevojë për të ruajtur një listë të vendeve të punës, dorë nga punë, të marrë rezultatet, dhe më pas dyqan tyre për rikthim më vonë. Se si këto pjesë ('dorë nga punë "të tilla si) janë përcaktuar mund të jetë shumë bazë. Më vonë ne mund të zgjasë të sistemit për të përfshirë një ndërfaqe të 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 pastaj se serverit tuaj të punës nuk mund të jetë një makinë virtuale running brenda serverit kryesore tuaj e përpunimit me kusht që ajo nuk do të thahet burime shumë nga ajo. Server punë megjithatë ka në dispozicion duhet të larta, 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 të përpunimit (kur krahasohet me serverin tuaj kryesore 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ë balancuar të ngarkesës për disponueshmërinë e lartë.
Skema themelore
Setup bazë për punën e serverit tonë do të përbëhet nga ajo që unë jam duke e quajtur një nga serverat e butë time (që është Nux Li, ySql m, P HP). Kodi kandidon për punëtorët the do të punojnë në të vërtetë se çfarë punë që 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 të web dhe në të vërtetë dorë nga punët në vend që 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 pak alternativë e madhe për të phpMyAdmin vetëm për shkak të tij më të lehtë 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 punës
- 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 e ka filluar duke bërë punë? Kjo nuk është e nevojshme tërësisht, por është një e mirë që të ketë. Unë do të sugjeroj ndjekja e punëtorëve me adresën e tyre IP në rrjetin tuaj
- started_at: Kur ka të punonjësit fillojnë punë? Nga ndjekja e punës që nuk kanë përfunduar brenda sasi X e kohës ne e dimë që duhet të marr këtë punë edhe një herë dhe të fillojnë të përpunimit nga një punëtor. Punëtorëve të mund të ndalojë përpunimin / shkoni në linjë për çdo numër arsyesh, dështimi i pushtetit, crash, rrjeti humbje, etj
Është e lehtë se si kjo tabelë mund të zgjatet me një disa fusha të tjera për të lejuar për ndjekjen e statistikave, një kolonë kohë të përfundojë për të parë se sa kohë e punë e mori, një kundër për të parë se sa shumë punëtorë të kap punë (pa dyshim ky duhet të priren të 1), prioritet të punës, lista mund të vazhdojë dhe më. Në më shumë skenarë punë komplekse do të ishte e mundur që të përcaktojë se sa memorie të punonjësit do të ketë nevojë akses për të (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.
Lejon të shtoni një punë pak shembull:
Tabela e ardhshëm përsëri është fare 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, të lejon të bëjë një shembull shumë të thjeshtë ku ne kemi katër shtylla:
- id: ID i regjistruar
- Emri:'s name Person
- Adresa: Adresa e Personit
- jobs_id: ID punë që ky rekord është i lidhur me
Tabela e tretë dhe të fundit përbëhet nga një tabelën e rezultateve, ajo ka shumë e njëjtë të bërë deri sa 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 rezultat në tryezë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 i vuri në një tjetër tryezë ku të dhënat e mia për të procesit të 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ë punë
Siç u tha më parë, punëtorët do të bëjë të menaxhimit 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ërpunim dhe për të marrë informacion. Si do ta bëjmë këtë? Edhe marr zgjedhjen tonë të punës dhe kriteret të shikoni për punë, në SQL unë nuk e mëposhtme:
- Të marrë ndonjë punë që nuk janë shënuar si të plotë, por nga punonjësit tonë dhe reset ata (__ME__ zëvendësim me një identifikues, lehtë do të jetë adresa IP):
UPDATE `Punë` SET `status` = 0 KU `status` = 1 DHE `started_by` = __ME__; - Përdorimi i kritereve të përzgjedhjes tonë të punës, zgjidhni një punë dhe të them të sistemit të kontrollit që ky punëtor është që kanë të bëjnë me:
UPDATE `Punë` SET `status` = 1, `started_by` = __ME__, `` started_at = NOW () KU `status` = 0 APO (`` Status = 1 DHE `` started_at> DATE_SUB (TANI (), interval X ORE)) ORDER BY id `` ASC;
Nga grabbing punës që nuk janë kthyer rezulton në shumën X kohë kemi 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 * `job_records NGA KU` `` id = __JOBID__;
Pas përfundimit të punës kemi futur të dhënat tona dhe të shënuar rezultat të punës si e plotë. Mos harroni sa punë mund të pezullojë / rinisë në çdo kohë të lejuar për disa Fuqia në shkrimin tuaj. Kjo mund të jetë se detyra pezullon gjysmën e përditësimit të sistemit të kontrollit të punës, në mënyrë të kontrolluar numrin e të dhënave 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 tregon se si punë mund të përzgjidhen dhe menaxhohen nga një e-query SQL kornizë ju duhet të vërtetë të abstraguar punën e kontrollit tuaj në mënyrë që, nëse ju vendosni të kaloni në përdorimin e një ueb shërbim, një sistem të bazuar file, XML , apo ndonjë tjetër numër i sistemeve ajo nuk do të ndikojë në kodin e mësipërm atë.
Job Konfigurimi
Aspekti tjetër për t'u marrë parasysh është madhësia e punës dhe të konfigurimit. Duke luajtur me konfigurimin e punë që ne mund të grevës një bilanc të shkëlqyer midis shpejtësisë, përsëritje proces, dhe besueshmërinë. Hidhni një çift of skenare:
- Punë të marrë 1 ditë secilit për të kandiduar: Kjo do të thotë se punëtorët tuaj duhet 15 ditë për një proces të çdo punë (kujtoni 10% të fuqisë për 2/3rds të kohës). Kjo qartazi nuk është aspak një konfiguracion i mençur, madhësia tuaj të punës është mënyrë shumë e madhe! Ajo do të marrë të paktën dyfishin e kohës për të marrë një punë të përpunuara duhet të punonjësit fillestare të shkojnë AWOL (kohë për të marr se ai nuk 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 boshe periudhë të gjatë, në këtë mënyrë ju mbani punë e kurdisur mbi dhe në rastin më të keq një punë do të marrë dy ditë për të procesit duhet të shkoni në fillim të humbur.
- Punë të 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ërpunim plotësues punë gjatë kohës së drekës, pushimet e kafeve, takimet, etj ky skenar vendos tendosje në zona të tjera të sistemit tuaj dhe paraqet problemet e veta. Për shembull, në radhë të parë konfigurimin / kohën e përpunimit të raportit do të shkojë drejtë poshtë, pra humbjen e efikasitetit të sistemit. Rrjeti juaj do të jetë vazhdimisht streaming informacion punë të punëtorëve të ndryshme të stafit të zhgënjyese të cilët janë të kar 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, pasi ka për 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 punë shkon poshtë ju do të jeni për të krijuar një regjistër të madh mbrapa e punës së papërfunduar ndërsa punët më të mëdha mund të vazhduar përpunimin e blissfully dijeni se serveri punë është duke përjetuar vështirësi.
Në realitet nuk do të ketë një konfigurimi ideal për konfigurimin e rrjetit, shumë varet nga burimet në dispozicion, llojet e punës, kthesën e kërkesave të punës kohë, aftësitë e rrjetit, dhe kështu me radhë. Megjithatë, disa udhëzime do të jenë:
- Punë Size në mënyrë që çdo punëtor mund ta merrni nëpërmjet të paktën 3-4 vende pune në një periudhë prej 15 orëve (gjatë periudhës të ngjarë boshe kohe)
- Luaj me madhësinë e punës kështu që kohë setup bëhet mjaft i parëndësishëm në krahasim me kohën e përpunimit (duke patur parasysh pikën më sipër).
- Nëse një punë nuk e bën të plotë në dyfishin e kohës (ndoshta me pak) ju presin atë për të përfunduar atë të supozojmë se AWOL e shkuar dhe të fillojnë përpunimin e tij me një tjetër punëtor. Kjo do të thotë që ju mund të duhet të presë deri në tri herë gjatësinë normale e 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 për të ulur atë shumë si 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ë që 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 e rrjetit tuaj, kjo do të ketë dy efekte negative, stafi juaj ditën do të gjeni duke përdorur rrjetin e frustruese dhe problemet mund të jetë me përvojë me lidhjet kohën nga një problem që do të merrni vetëm më keq si ju shkallë rrjetit tuaj.
- Punë Sigurimi mund të kandidojë në punëtorët tuaj. Nëse punët bëhen shumë memorie Punë intensive ose disk hapësirë 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 asnjë arsye të vërtetë pse.
Rezultatet Dorëzimi i një punë
Momentin e paraqitjes së rezultateve të një punë është e rëndësishme të kontrolloni që rezultatet nuk kanë qenë të paraqitura 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ë kuadër të punës.
Siç u tha më parë, dhe nuk mund të mbi theksuar, të ndërtuar tolerancë gabimi në rikthim të punës dhe rezultate të dorëzimit. Punëtorët mund (dhe më shumë gjasa do të) shkojnë në të pezullojë mode në më të papërshtatshëm të herë dhe kjo duhet të jetë për catered. Gjithashtu edhe një herë abstracting larg Rezultatet e paraqitjes tuaj do t'ju ndihmojë të kujdesem për ndryshimet e ardhshme të sistemit të kontrollit tuaj të punës shumë më e lehtë për t'u marrë me të.
Përmbledhje
Në këtë section ne kemi shikuar në atë që një kontroll punë serveri duhet të bëjnë dhe si të merrni një sistem shumë bazë të ngritur. Ne biseduam se si të marrë një punë nga e sistemit të kontrollit dhe sa më të mirë të konfigurosh punë për të marrë më tonë të sistemit të rrjetit zyrën tuaj. Për të përfunduar, një paragraf ose dy për dorëzimin e rezultateve të kthehet në punë serverin e kontrollit është paraqitur.
- 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 të zgjedhur / dorëzimin Rezultatet e ne mund të ndryshojmë teknologjinë e serverit kontrollin pa probleme shumë më të
- Punë Konfiguro tuaj për të siguruar që ato janë drejtuar shpejt dhe me efikasitet, pa vënë shumë presion mbi infrastrukturën e rrjetit, dhe pa dublikuar detyra të përpunimit në baza të rregullta.
- Të siguruar që ju të ndërtuar tolerancë gabimi dhe checking gabim në rutinat tuaj, punëtorët mund të pezulluar dhe rifilluar 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ë të përpunimit tonë makinë virtuale dhe ngriti makinat dritaret tona për t'u bërë i papunë me kohë të punëtorëve.



















































Heya! Koncepti i mirë, por mund të këtë të vërtetë të bëjë punë?