Sissejuhatus
Töötan ettevõttes, kus võtame palju partii töökohad töötlemise miljoneid plaate andmete iga päev ja ma olen mõelnud hiljuti umbes kõik masinad, et istuda ümber iga päev midagi mitu tundi. Kas ei oleks hea, kui saaksime kasutada neid masinaid turgutada töötlemise võimsus on meie süsteemi? Selles kogum esemeid ma lähen vaatama potentsiaalsete tulude tööd kontoris võrku kasutades virtualised keskkondades.
Aasta 1. osas andsin ülevaate süsteemi ja tehnoloogiate ma ei kasuta samuti arutati mõningaid võimalikke põhjuseid, miks sa tahaksid luua kontori võrku.
Töö kontrolli
Kui sa lähed olema töökorras töökohti, siis sa lähed vaja kuidagi neid hallata. Sinu töö kontrollimise süsteem (oma töö server) tuleb tõesti hästi läbi enne isegi üritab joosta kontori võrku. Nii et esiteks, millised on ülesanded töö piiramise süsteem:
- Käsi välja töökohti taotlusel töötajate
- Teavitage töötajaid Milliseid töökohti joosta
- Track töökohti
- Tagada, et töökohti on töötada vaid ühe korra
- Pakuvad tööd andmeid töötajate, või vähemalt neile öelda, kust seda saada
Süsteem tuleb ka laiendatav lahendus, mis töötab nüüd ühe juhtumi võib pikendada käivitada mitut tüüpi töökohti äri näeb väärt grid lahendus. Näiteks töökohad võivad saada prioriteedid, rohkem kui ühe töökoha liik võib eksisteerida (st mitu koodi alused), lõpuks siis võib isegi käivitada mitmeid erinevaid töötaja masinaid, mida optimeerida iga tüüpi tööd (seda küll eemalduda geneeriline töötaja "idee). Püüdke mõelda tulevikule, kui süsteemide väljatöötamist, lühikese perspektiivis võib viia pikemas perspektiivis pettumust ja suurem areng aega.
Töö Server
Meil läheb vaja kuskil kontrollida oma töökohti, tuleb see vaid süsteemi oma võrku, mis on kindlaks määratud ressursi lokaator, olgu see IP-aadress, serveri nimi, URL (kasutades sisemist DNS) jne Seda seetõttu, Töötajad peavad teadma, kust otsida töökohta, töötajad on vaja leida tööd kontrollisüsteemi (mitte töö kontrollisüsteemi leida töötajad).
Töö server ise ei ole tõesti keeruline ülesanne (nii põhi-süsteemi nagunii), tuleb see salvestada nimekirja töökohti, käsi välja töökohti, saada tulemusi, ning seejärel salvestada hilisemaks taastamiseks. Kuidas nende osade (nagu "käsi välja töökohti") on määratletud võib olla väga lihtne. Hiljem saame laiendada süsteemi lisada administreerimisliides lisamiseks, muutmiseks, kustutamiseks, peatada töökohti, kuid see on väljaspool seda kasutada.
Ei ole mingit põhjust selles siis, et teie töö server ei saa virtuaalne masin töötab teie peamine töötlemise server kui see ei kulutata liiga palju ressursse saada. Töö server aga ei pea laialdase kättesaadavuse, kui see läheb alla reede õhtul sa lähed kaotad kogu nädalavahetuse töötlemise, potentsiaalselt maksab teile paar nädalat väärt töötlemise ajal (võrreldes oma peamise töötlemine server üksi) . Te võiksite üles kaaluma oma tööd serveri koormus tasakaalustatud keskkonna kõrge kättesaadavus.
Basic Setup
Põhiseadistused meie töö server koosneb mida ma helistan üks mu Limp serverite (mis on Li nux, m ySql, P hj). Kood töötab Thea töötajaid tegelikult töötavad, millised tööd ta võib liikuda, suheldes koos töökoha kontrolli süsteem andmebaasidega. Hiljem võiksime luua veebiteenus ja tegelikult käsi välja töökohti selle asemel töötajate tegema rasket tööd ise, kuid nüüd jätkame kasutades KISS põhimõte (hoida seda lihtsat, Stupid!).
Nii saab luua kolm mySQL tabelid tegeleda töökohti. Need `töökohti`, `jobRecords` ja `jobResults`.
Siin ma kasutan SQL Buddy väga vähe alternatiiv phpMyAdmin lihtsalt sellepärast, et selle lihtsam paigaldada CentOS (teiste jaoks vaata: 10 Suure alternatiive phpMyAdmin )
See tabel koosneb 5 lihtsat valdkondades,
- id: identifitseerimiseks töö
- nimi: Võib klient viide või mis tahes mitmete teiste tunnuste
- Status: Sa pead teadma, kus töö on, nt
- 0: Ei alanud
- 1: kiirenenud
- 2: Lõpetatud
- started_by: Kes alustas teed tööd? See ei ole täiesti vajalik, kuid on tore olla. Ma soovitan jälgida töötajate oma IP-aadress teie võrgus
- started_at: Millal töötaja alustada tööd? Jälgides töökohti, mis ei ole lõpetatud X aja jooksul teame me peame seda tõstma töö taas ja alustame teise töötaja. Töötajad võivad töötlemise lõpetamist / go offline mis tahes mitmel põhjusel voolukatkestus, crash, võrgu kaotus jne
See on lihtne, kuidas see laud võiks laiendada mõne lisaväljad võimaldada statistika jälgimine, lõppaeg veerus näha, kui kaua töö võttis, counter näha, kuidas paljud töötajad kiirenes töö (ilmselt see vajab kipuvad 1) töö prioriteediks, nimekirja saab minna edasi ja edasi. Keerukamate töö stsenaariume oleks võimalik täpsustada, kui palju mälu töötaja oleks vaja pääseda ligi (ja seega kasutada ainult sobiva töötaja) või isegi, millist tüüpi töötaja oleks vaja.
Lisame mõne näide töökohad:
Järgmises tabelis taas on üsna lihtne aru saada, need on meie töö arvestust. Need on seotud peamised töökohad tabeli veerus `jobs_id`. Moodustavad käesoleva tabeli sõltub väga palju andmeid, et pead andma oma töötajatele, laseb teha väga lihtne näide, kus meil on neli veergu:
- id: ID rekord
- nimi: Inimese nimi
- aadress: isiku aadress
- jobs_id: töö ID, et see rekord on seotud
Kolmas ja viimane tabel koosneb tulemuste tabel, see on sama palju moodustavad meie arvestust tabelis ja millele on lisatud mõned veerud võivad olla osa arvestust tabelis:
- job_record_id: Link tulemuse töö tabel
- Tulemus: Tulemuseks andmed
... Ja ongi kõik, mida vajate töö kontrolli! (Kuigi väga algtasemel) Minu puhul olen osutanud teine tabel, kus minu andmeid töötlemiseks asus, aga see võiks sama hästi on faili parameetrid käivitada simulatsiooni koodi, siis nime.
Valides töö
Nagu eelpool öeldud, töötajad teevad meie töö juhtimine meile nüüd, et kõik me peame tõesti tegema, on leida töö, mis vajab töötlemist ja saada teavet. Kuidas me seda teeme? Noh pick meie töö valikukriteeriumid ning otsivad töökohta, SQL tegin järgmist:
- Võtma kõik töökohad, mis ei ole märgistatud kui valmis, kuid meie töötaja ja reset neid (asendaja __ME__ koos tunnus, kõige lihtsam oleks IP aadress):
UPDATE `töökohti` SET `staatus` = 0 WHERE `staatus` = 1 ja `started_by` = __ME__;
- Kasutades meie töö valikukriteeriumid, valida töö ja ütle kontrollisüsteemi, et töötaja tegeleb sellega:
UPDATE `töökohti` SET `staatus` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `staatus` = 0 või
(`Staatus` = 1 ja `started_at`> DATE_SUB (NOW (), INTERVAL X HOUR)) ORDER BY `id` ASC;
Haarates töökohti, mida ei tagastatud tulemusi X aega me tagada, et kõik töökohad on joosta, kui töötaja krahh või lähevad andis otsad.
- Järgmine haarata töökohti details järgneb arvestust enda eest:
SELECT * FROM `töökohti` WHERE `started_by` = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __JOBID__;
Lõpetamisel tööd me lisada meie tulemus arvestust ja märgi tööd lõpetatud. Pea meeles, kui töökohti võib peatada / jätkata igal ajal võimaldada teatavat stabiilsust oma skripti. Võib olla, et ülesanne peatab poolel teel ajakohastamine töö kontrolli süsteem, et kontrollida kirjete arv töö ja tulemuste arv salvestatud tagasi töö kontrolli süsteem oleks tark tegu.
Lisaks, kuigi see näitab, kuidas töökohta saab valida ja hallata SQL-query raam teil peaks tõesti olema abstracting sinu töö kontroll nii, et kui te otsustate vahetada, kasutades veebiteenust faili põhine süsteem, XML või muu mitmeid süsteeme, ei mõjuta see kood kohal.
Töö Configuration
Järgmine tuleb arvestada, on töö maht ja konfiguratsiooni. Mängides töö konfiguratsiooni saame streik suurepärane tasakaalu kiiruse, protsessi replikatsiooni ja usaldusväärsust. Võtke paar OFA stsenaariumi:
- Jobs võtta 1 päev iga kulgema: See tähendab, et töötajad peavad 15 päeva protsessi iga töö (meenub 10% võimsust 2/3rds ajast). See ei ole kindlasti mõistlik konfiguratsiooni, teie töö maht on liiga suur! See võtab vähemalt kaks korda saada tööd töödeldud peaks esialgse töötaja minna andis otsad (aeg kiirenemist, et see ei ole tagastanud tulemus pluss ümbertöötlemise ajal). Ideaalses soovid on vähemalt üks täielikult töökohti lihtsalt kustutatakse lõpuks iga pika tühikäigul, et kuidas sa hoida töökohti tiksub üle ja halvimal juhul töö võtaks kaks päeva, et protsess peaks kõigepealt minna puudu.
- Jobs võtta 1 minut joosta: See tähendab, et teie töötajate aega umbes 15 minutit aega iga töö. Kuigi see võib tunduda esialgu ideaalne, siis saada lisatööd töötlemise ajal lõunasöögi ajal, kohvipause, koosolekud jne Selle stsenaariumi paneb pinge teistes valdkondades oma süsteemi ning tutvustab oma probleemidega. Näiteks esmalt oma setup / töötlemise ajal suhe lähe kohe alla, seega kaotada süsteemi tõhusust. Teie võrgustik saab olema pidevalt streaming töö teavet erinevate töötajate masendav töötajad, kes on dong oma igapäevast tööd. Sa oled ka kavatse panna rohkem pingeid oma töö töötlemise server, kui ta peaks jagama palju, palju väikesteks tükkideks tööd regulaarselt. Lõpuks, selles situatsioonis, kui teie töö server läheb maha sa lähed luua tohutu tagasi samamoodi lõpetamata töö eest samas suurem töökohta jätkuva töötlemine õndsalt teadnud, et töö server oli raskusi.
Tegelikult ei tule keegi Ideaalne paigutus oma võrku setup, palju sõltub olemasolevate vahendite liiki töö, töö töötsükkel nõuetele, võrgundusfunktsioon, ja nii edasi. Kuid mõned juhised oleks:
- Suurus töökohti nii, et iga töötaja võib läbi saama vähemalt 3-4 töökohta periood on 15 tundi (pikim tõenäoliselt jõudeaeg jooksul)
- Esita töö suurust nii, et setup aeg muutub üsna tühine võrreldes sellega töötlemise ajal (pidades silmas eespool punkt).
- Kui tööd ei lõpeta topelt aega (võib-olla vähem) ootate, kuni see lõpeb see oletada, et tema läinud andis otsad ja alustame selle teise töötaja. See tähendab, teil võib olla oodata kuni kolm korda tavalisest pikkuse töö seda täita (võimalik enam kui hilisem töö ebaõnnestub). Te võiksite vähendada sel ajal, kuid olla ettevaatlik, et vähendada seda liiga palju, sest te võite hakata paljundusmasinad töötlemise ülesandeid regulaarselt.
- Jobs ei peaks sõltuma väljaspool nõudeid nii palju kui võimalik. Töö server, näiteks vaid ühendust alguses ja lõpus iga töö.
- Ärge küllastusgaaside oma võrku, see on kaks negatiivset mõju, oma päevase töötajad leiavad võrgu kasutamisel masendav ja probleemid võivad olla kogenud ühendused ajastust välja probleemi, mis läheb ainult hullemaks, kui te skaalal oma võrku.
- Tagada töökohad töötab teie töötajatele. Kui töökohti liiga mälu intensiivset või kettaruumi intensiivne töö hakkab saagi ja ainus asi, mida märkad on langus töökohtade arv töödeldud, kellel puudub tegelik põhjus, miks.
Esitades tulemused Job
Kui liikmesriigid esitavad tulemuste kohta töö on oluline kontrollida, et tulemused ei ole esitatud teise töötaja, eriti kui praegune töötaja on seisvate mõnda aega.
Kui tulemused esitatakse tagab tulemuste arv vastab kirjete arv jooksul tööd.
Nagu eelpool öeldud, ja seda ei saa üle tähtsustada, ehitada tõrketaluvuseks arvesse töö leidmiseks ja tulemuste esitamist. Töötajad saavad (ja tõenäoliselt) minna ooterežiimi kõige ebamugav korda ja tuleb seda arvesse. Samuti taas abstracting ära oma tulemusi esitamine aitab rahuldada tulevasi muutusi oma tööd kontrollisüsteemi palju lihtsam toime tulla.
Kokkuvõte
Selles section vaatlesime mida töö kontrolli server peab tegema ja kuidas väga lihtne süsteem loodud. Me arutasime, kuidas hankida tööd alates kontrollisüsteemi ning kuidas paremini konfigureerida töökohta saada kõige rohkem meie oma kontori võrgusüsteemi. Lõpuni, lõik või kaks, esitades tulemused tagasi töö kontrolli server esitas.
- Töö kontrolli server haldab töökohti ja tagab, et kogu töö üksused on lõpetanud
- Autor abstracting oma tööd valida / tulemuste esitamise saame muuta tehnoloogia kontrolli server ilma palju probleeme
- Konfigureeri oma töökohta, et nad juhivad kiiresti ja tõhusalt seadmata liiga palju survet oma võrgu infrastruktuuri, ilma dubleerimata töötlemise ülesandeid regulaarselt.
- Veenduge, et teil ehitada tõrketaluvuseks ja viga checking oma rutiinid, töötajad saavad peatada ja jätkata ja kõige ebamugav korda. Pea meeles, et vaadata, kas tulemused on juba esitatud mõne teise töötaja.
Järgmine kord
Aastal 3. osa loome meie virtuaalne töötlemise masinate ja luua meie aknad masinad saada idle tööajaga töötajatele.