Sissejuhatus
Töötan ettevõttes, kus võtame palju partii töökohti töötlemise miljoneid plaate andmete iga päev ja ma olen mõelnud viimasel ajal umbes kõik masinad mis istuvad iga päev midagi mitu tundi. Kas poleks hea, kui saaksime kasutada neid masinaid toetada töötlemise võimsus on meie süsteemi? Selle komplekti esemete ma lähen vaatama potentsiaalsete tulude tööd kontoris võrku kasutades virtualised keskkond.
Aastal Osa 1 Ma andsin ülevaate süsteemi ja tehnoloogiat ma kasutades samuti arutatakse mõned võimalikud põhjused, miks sa tahaksid luua kontori võrku.
Töö kontroll
Kui sa lähed olema töökorras töökohti, siis sa lähed vaja kuidagi neid hallata. Sinu ülesanne kontrollisüsteem (oma töökoha server) tuleb tõesti hästi läbi, enne kui proovite käivitada 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öökohta
- Veenduge, et tööd on vaid joosta, kui
- Pakkuda tööd andmed töötajate või vähemalt neile öelda, kust saada seda
Süsteem peab olema laiendatav lahendus, mis töötab nüüd ühes asjas võib pikendada käivitada mitut tüüpi töökohti äri näeb väärt grid lahendus. Näiteks töökohti võib saada prioriteete, 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, mis on optimeeritud iga tööd (seda küll eemalduda geneeriline töötaja "mõte). Püüdke mõelda tulevikus, kui süsteemide väljatöötamist, lühikese perspektiivis võib viia pikema aja pettumust ja ulatuslikumaks arendamiseks aega.
Töö Server
Meil läheb vaja kuhugi juhtida meie töökohti, peaks see olema vaid süsteem oma võrku, mis on fikseeritud Resource Locator, olgu see IP aadressi, hosti nime, 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 (in alussüsteemi igal juhul), tuleb see salvestada nimekirja töökohti, käsi välja töökohti, saada tulemusi, ning seejärel salvestada hilisemaks taastamiseks. Kuidas nende osade (nagu näiteks "poolt välja töö") on määratletud võib olla väga lihtne. Hiljem saame laiendada süsteemi hõlmavad haldus liidest lisada, muuta, kustutada, peatada töö, kuid see on väljaspool seda kasutada.
Ei ole ühtegi põhjust siis, et teie töö server ei võiks olla 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 ta läheb maha reede õhtul sa lähed kaotad kogu nädalavahetuse töötlemise, potentsiaalselt maksab teile paar nädalat väärtuses 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õhiseadistustest meie töö server koosneb sellest, mida ma helistan üks mu Limp serverid (see Li Nux, m ySql, P HP). 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 saame luua veebiteenus ja tegelikult käsi välja töökohti selle asemel töötajate tegema rasket tööd ise, kuid nüüd me jätkuvalt kasutada KISS põhimõte (Hoia see Simple, Stupid!).
Nii saab luua 3 MySQL tabelid tegelema töökohti. Need on `töökohti`, `jobRecords` ja `jobResults`.
Siin ma kasutan SQL Buddy väga vähe alternatiiv phpMyAdmin lihtsalt sellepärast, et tema lihtsam paigaldada CentOS (teiste jaoks vaata: 10 Great alternatiive phpMyAdmin )
See tabel koosneb 5 lihtsat valdkondades,
- id: identifitseerimiseks töö
- nimi: võiks olla kliendi viide, ega paljude teiste tunnuste
- Status: Sa pead teadma, kui töö on, nt
- 0: ei ole alustatud
- 1: kiirenes
- 2: Valmis
- started_by: Kes alustas teed tööd? See ei ole täiesti vajalik, kuid on tore olla. Soovitan jälgida töötajate poolt nende IP aadress teie võrgus
- started_at: Millal töötaja alustab tööd? Jälgimise tööd, mis ei ole lõpetatud X aega teame me peame seda tõstma töö taas ning alustame teise töötaja. Töötajad võivad peatada töötlemine / go offline iga mitmel põhjusel voolukatkestus, crash, võrgu kaotus jne
See on lihtne, kui see tabel võiks laiendada mõne lisaväljad võimaldada statistika jälgimine, viimistlus aeg veerus näha, kui kaua tööd tegi, counter näha, kuidas paljud töötajad hakkasid tööd (ilmselt see peab 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 juurdepääs (ja seega kasutada ainult sobiva töötaja) või isegi millist tüüpi töötaja oleks vaja.
Lisame mõned näiteks töökohti:
Järgmises tabelis taas on üsna lihtne aru saada, need on meie töö arvestust. Nad on seotud peamised töökohad tabeli veerus `jobs_id`. Moodustavad selles tabelis väga palju sõltub andmed, et sa pead andma oma töötajatele võimaldab teha väga lihtsa näite, kus meil on neli veergu:
- id: ID rekord
- nimi: Isiku 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 andmed tabelis ja millele on lisatud mõned veerud võiks olla osa andmeid tabelis:
- job_record_id: Link tulemuse töö tabel
- Tulemus: Tulemuseks andmed
... Ja ongi kõik, mida vajate töö kontroll! (Kuigi väga algtasemel) Minu puhul olen osutanud teine tabel, kus minu andmeid töötlemiseks asus, kuid see võib ka lihtsalt olnud 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 valida oma tööd valikukriteeriumid ja tööd otsima, SQL tegin järgmist:
- Võtma kõik tööd, mis ei ole märgistatud kui valmis, kuid meie töötaja ning taastada need (asendada __ ME__ koos tunnusega, lihtsam oleks IP aadress):
UPDATE `töökohti` SET `status` = 0 WHERE `status` = 1 JA `started_by` = __ ME__;
- Kasutades meie töö valikukriteeriumid, valige töö ja ütle kontrollisüsteemi, et see töötaja tegeleb ta:
UPDATE `töökohti` SET `status` = 1, `started_by` = __ ME__, `started_at` = NOW () WHERE `status` = 0 või
(`Status` = 1 JA `started_at`> DATE_SUB (NOW (), INTERVAL X HOUR)) ORDER BY `id` ASC;
Poolt haardeseadised töökohti, mida ei tagastatud tulemusi X aega me tagada, et kõik tööd on joosta, kui töötaja krahh või lähevad otsad.
- Järgmine haarata töökohti details järgnevad andmed ise:
SELECT * FROM `töökohti` WHERE `started_by` = __ ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __ JOBID__;
Lõpetamisel tööd me sisestada oma tulemuse arvestust ja tähistab tööd lõpetatud. Pea meeles, kui töö saab 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öö süsteem oleks tark tegu.
Lisaks, kuigi see näitab, kuidas töökohti saab valida ja hallata SQL-query raam siis peaks tõesti olema abstracting oma töö kontroll nii, et kui sa otsustad minna, kasutades veebiteenust faili põhine süsteem, XML , või mis tahes muu mitmeid süsteeme, ei mõjuta see kood kohale.
Töö Configuration
Järgmiseks tuleb arvestada, on töö maht ja konfiguratsiooni. Mängides töö konfiguratsiooni suudame leida hea tasakaalu kiiruse, protsessi replikatsiooni ja usaldusväärsust. Võtta paar OFA stsenaariumi:
- Jobs võtab 1 päev iga joosta: See tähendab, et töötajad peavad 15 päeva jooksul töödelda iga töö (meenub 10% võimu 2/3rds ajast). See ei ole kindlasti mõistlik konfiguratsiooni, oma töö maht on liiga suur! See võtab vähemalt kaks korda saada tööd töödeldud peaks esialgse töötaja minna otsad (aeg kiirenemist et ta ei ole tagastatud tulemus pluss ümbertöötlemise aja järgi). Ideaalses soovid on vähemalt 1 täis töökohti lihtsalt kustutatakse aasta lõpus iga pika tühikäigul nii hoiate töökohti tiksub üle ja halvimal juhul töö võtaks 2 päeva protsess peaks 1. kadunud.
- Jobs võtab 1 minut joosta: See tähendab, et oma töötajate aega umbes 15 minutit joosta iga töö. Kuigi see võib esialgu tunduda ideaalne, siis saada lisatööd töötlemise ajal lõunasöögi ajal, kohvipausid, kohtumised jne Selle stsenaariumi kurnab teistes valdkondades oma süsteemi ning tutvustab oma probleeme. Näiteks esmalt oma setup / töötlemise ajal suhe lähe kohe alla, seega kaotada süsteemi tõhusust. Oma võrk saab olema pidevalt streaming töö teavet erinevate töötajate masendav töötajad, kes on dong oma igapäevast tööd. Sa oled ka läheb panna rohkem pingeid oma tööd töötlemise server, kui ta peaks jagama palju, palju väikesteks tükkideks tööd regulaarselt. Lõpuks see olukord, kui teie töö server läheb maha sa lähed luua suur tagasi samamoodi lõpetamata tööd samas suurem töökohta jätkuva menetlemise õndsalt teadnud, et töö server oli raskusi.
Tegelikult ei toimu 1 ideaalse konfiguratsiooni oma võrku setup, palju sõltub olemasolevate ressursside tüüpi töö, töö töötsükkel nõuded, võrgu võime, ja nii edasi. Kuid mõned juhised oleks:
- Size töökohti nii, et iga töötaja saab läbi vähemalt 3-4 töökohta jooksul 15 tunni jooksul (pikim tõenäoliselt jõudeaeg jooksul)
- Mängi töö suurust nii, et setup aeg muutub üsna tühine võrreldes töötlemise ajal (pidades silmas eespool punkt).
- Kui tööd ei ole täielik, topelt aega (võibolla vähem) ootate seda täita see oletada, et tema läinud otsad ja alustame selle teise töötaja. See tähendab, et pead ootama kuni kolm korda tavalisest pikkuse töö seda täita (võib-olla enam kui hilisema töö ebaõnnestub). Te võiksite vähendada seda aega, kuid ole ettevaatlik, mitte vähendada seda liiga palju, kuna te võite alustada dubleerida töötlemise ülesandeid regulaarselt.
- Jobs peaks olema sõltumatu väljaspool nõudeid nii palju kui võimalik. Töö server, näiteks tohib ühendust alguses ja lõpus kõik tööd.
- Ärge küllastusgaaside oma võrku, see on kaks negatiivset mõju, oma päevase töötajad leiavad, kasutades võrgu masendav ja probleemid võivad olla kogenud ühendused ajastus välja probleemi, et ainult hullemaks, kui skaala oma võrku.
- Tagada töökohad võivad töötada oma töötajaid. Kui töö muutub liiga mälu intensiivne või kettaruumi intensiivne töö hakkab katkestan ja ainus asi, mida märkad on vähenenud töökohtade arv töödeldud, kellel puudub tegelik põhjus, miks.
Esitades tulemused Töö
Kui liikmesriigid esitavad tulemuste töö on oluline kontrollida, et tulemusi ei ole esitatud teise töötaja, eriti kui praegune töötaja on seisnud juba mõnda aega.
Kui tulemused on esitatud tagada tulemuste arv vastab kirjete arv jooksul tööd.
Nagu eelpool öeldud, ja ei saa üle rõhutada, ehitada tõrketaluvuseks arvesse tööd otsida ja tulemuste esitamine. Töötajad saavad (ja tõenäoliselt) läheb ooterežiimi kõige ebamugav korda ja see tuleb süüa. Samuti taas abstracting ära oma tulemuste esitamine aitab rahuldada tulevasi muutusi oma töö kontrollisüsteemi palju lihtsam toime tulla.
Kokkuvõte
Selles section vaatlesime mida töö kontroll server peab tegema ja kuidas väga lihtne süsteem luua. Arutasime, kuidas hankida töökoht alates kontrollisüsteemi ning kuidas seadistada töökohta saada kõige meie oma kontori võrgusüsteemi. Lõpeta, punkt või kaks Tulemusi esitades tagasi töö kontroll server esitas.
- Töö kontroll server haldab töökohti ja tagab, et kõik tööd üksused on valmis
- Poolt abstracting oma tööd valida / tulemuste esitamise saame muuta tehnoloogia kontrolli server ilma palju probleeme
- Konfigureeri oma töökohta, et nad töötavad 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 rutiin, 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 osa 3 loome meie virtuaalne töötlemise masin ja luua meie aknad masinad saada idle tööajaga töötajaid.