Predstavitev
Delam v podjetju, kjer imamo prost dostop veliko delovnih mest paketno obdelavo milijone zapisov podatkov vsak dan in sem bil pred kratkim razmišljal o vseh strojev, ki sedijo okrog vsak dan nič ne delaš več ur. Ali ne bi bilo dobro, če bi lahko uporaba teh strojev za okrepitev procesorske moči naših sistemov? V ta sklop člankov bom pogled na možne koristi zaposluje urad omrežje z uporabo virtualiziranih okoljih.
V delu 1 sem dal pregled sistema in tehnologije I bodo uporabljali kot tudi razpravljali nekateri od možnih razlogov, zakaj bi si želeli ustvariti pisarno omrežje.
Job Control
Če boste se teče delovna mesta potem boste potrebovali nekaj tako da bi jih obvladovali. Vaša naloga nadzornega sistema (na vašem delovnem mestu strežnik), je treba res dobro premišljena, še preden poženete pisarno omrežje. Torej, najprej, kaj so naloge, za sistem nadzora na delovnem mestu:
- Razdelite delovna mesta na zahtevo delavcev
- Povej delavcev kakšne vrste delovnih mest, ki vodijo
- Track delovna mesta
- Poskrbite, da delovna mesta le teči, ko
- Zagotoviti zaposlitev podatkov za delavce, ali jih vsaj povej kje naj dobim
Sistem mora biti tudi raztegljiva, rešitev, ki deluje za zdaj v enem primeru se lahko razširi na vožnjo več vrst delovnih mest, saj podjetja vidi vrednost v mreži rešitev. Na primer, nova delovna mesta pridobiti prednostne naloge, lahko več kot eno zaposlitev tip obstaja (tj. več koda baze), na koncu lahko celo vodijo več različnih strojev delavcev, ki so optimizirani za vsako vrsto delovnega mesta (čeprav to ne odmaknejo od "generično delavec "ideja). Vedno začeti razmišljati o prihodnosti pri razvoju sistemov, lahko kratkoročno vizijo vodilo do dolgoročnejših frustracije in povečano čas razvoja.
Job Server
Bomo nekje potrebo po nadzoru naša delovna mesta iz, naj bo to edini sistem v vaši mreži, ki ima stalno resource locator, da je treba IP naslov, ime gostitelja, URL (z uporabo internih DNS), itd To je zato, ker delavci morajo vedeti, kje iskati zaposlitev, delavcem je treba najti sistem nadzora na delovnem mestu (ne dela nadzornega sistema našli delavci).
Zaposlitev strežnik sam ne res zapletena naloga (v osnovni sistem tako ali tako), ki jih potrebuje za shranjevanje seznama delovnih mest, roko delovnih mest, prejeli rezultate, nato pa jih shranite za poznejše iskanje. Kako so ti deli (kot so "roko delovna mesta"), opredeljene so lahko zelo osnovne. Kasneje lahko razširi sistem vključuje uprava vmesnik za dodajanje, urejanje, brisanje, začasno delovnih mest, vendar je to po tem izvaja.
Ni razloga torej, da svoje delo strežnika ni bilo mogoče virtualni stroj teče v svoji glavni strežnik za obdelavo, če te ne bega preveč sredstev iz njega. Zaposlitev server pa ne potrebujejo visoke razpoložljivosti, če gre navzdol na petek zvečer boste izgubili cel vikend obdelave, lahko stanejo vam nekaj tednov vredno časa obdelave (v primerjavi z vašo glavno predelovalno server sam) . Morda boste želeli, da razmisli o vašem delu strežnik, na obremenitev uravnoteženo okolje za visoke razpoložljivosti.
Basic Setup
Osnovne nastavitve za naše delo server bo sestavljen iz kaj Kličem, je eden od mojih strežnikov mlahavi (to je Li Nux, m ySql, P HP). Kode teče na Thea delavcev bo dejansko delajo, kaj delovnih mest, lahko vodijo v stiku s službo baz podatkov s sistemom nadzora. Kasneje smo lahko ustvarili spletno storitvijo in dejansko roko delovnih mest, ne pa ob delavci delati trdo delo sami, vendar za zdaj bomo še naprej uporabljati načelo KISS (Keep it Simple, Stupid!).
Torej, omogoča, da ustvarite tri mySQL tabel za reševanje delovnih mest. Ti bodo "delovna mesta", "jobRecords", in "jobResults".
Tukaj sem z uporabo SQL Buddy zelo malo alternativa phpMyAdmin samo zato, ker njeno lažje namestiti na CentOS (za ostalo glej: 10 Velika alternativa phpMyAdmin )
Ta tabela je sestavljena iz 5 preprostih polj,
- id: enolično identificirajo delo
- Naziv: Ali lahko stranke reference, ali poljubno število drugih identifikatorjev
- Status: Morate vedeti, kje je delo na, na primer
- 0: ni začelo
- 1: Pobral
- 2: dopolnil
- started_by: Kdo je začel delamo? To ni povsem potrebna, vendar je lepo, da so. Želel predlagam sledenje delavcev z njihovimi IP naslov v omrežju
- started_at: Kdaj je delavec začne delo? S sledenjem delovnih mest, ki se niso zaključile v višini X časa vemo, da je treba pobrati delo še enkrat in začeti predelave s strani drugega delavca. Delavci mogel ustaviti predelavo / go offline za katero koli število razlogov, izpad električne energije, crash, omrežja izgube, itd
To je enostavno, kako bi se to lahko tabela razširi z nekaj dodatnih področjih, ki omogoča sledenje statistiki, stolpec zaključek čas, da vidite, kako dolgo delovno mesto se je, v nasprotju z vidite, koliko delavcev pobral delovnih mest (seveda mora to običajno 1), delovno mesto prednost, se lahko seznam gre naprej in naprej. V bolj zapletenih delovnih scenarijev bi bilo mogoče določiti, koliko pomnilnika bi delavec potrebujejo dostop do (in zato uporabljajte le primerne delavce), ali celo kaj bi bilo vrsto delavca zahteva.
Lets dodati nekaj delovnih mest, na primer:
Naslednja tabela spet je dokaj preprost za razumevanje, da so to naše delo evidenc. Te so povezane z glavno tabelo delovnih mest z stolpec "jobs_id". Make up te tabele je zelo odvisna od podatkov, ki jih potrebujete za oskrbo za vaše delavce, da omogoča zelo enostaven primer, kjer imamo štiri stolpce:
- id: ID zapisa
- Ime: ime Person
- naslov: naslov Person
- jobs_id: zaposlitev ID ta zapis je to povezano s
Tretja in zadnja tabela je sestavljena iz tabele rezultatov, ki jih je precej podobno sestavljajo do naših zapisov v tabeli, in z dodatkom nekaterih stolpcev bi lahko del zapisov v tabeli:
- job_record_id: Link rezultat dela tabele
- Rezultat: Rezultat podatki
... In to je vse, kar potrebujete za nadzor delo! (Čeprav na zelo osnovni ravni) V mojem primeru sem opozoril na drugo mizo, kjer je bila moja podatkov za obdelavo, vendar bi to lahko prav tako enostavno je datoteka, parametri za zagon simulacije kodo, kar hočete.
Izbira zaposlitev
Kot je navedeno prej, se bodo delavci to naše delo uprave za nas, za zdaj, tako da vsi moramo res je najti službo, ki potrebuje predelavo in dobili informacije. Kako bi mi to naredil? No pick naša merila za izbiro novih delovnih mest in iskanju zaposlitve, v SQL sem naslednje:
- Bodite vsakega delovnega mesta, ki niso označena kot popolna, a od naših delavcev in jih reset (nadomestna __ME__ z identifikacijsko oznako, bi najlažje je IP naslov):
UPDATE "delovna mesta" SET "status" = 0, če "status" = 1 IN "started_by" = __ME__;
- Uporaba naših merila za izbiro delovnih mest, izberite delovno mesto in povedal, nadzorni sistem, da je ta delavec, ki se ukvarjajo z njim:
UPDATE "delovna mesta" SET "status" = 1, "started_by" = __ME__, "started_at" = NOW () WHERE "status" = 0 ali
("Status" = 1 IN "started_at"> DATE_SUB (NOW (), INTERVAL X HOUR)) ORDER BY `id ASC"; Z oprijemalne delovnih mest, ki se niso vrnili rezultatov v višini X časa bomo zagotovili, da so vsa delovna mesta izvajali v primeru delavca treskav ali gre AWOL.
- Naslednja zgrabi delovnih mest podrobnosti sledijo zapisi sami:
SELECT * FROM `delovnih mest` WHERE `started_by" = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __JOBID__;
Po zaključku dela vstavimo naš rezultat evidence in označite delo kot popolna. Ne pozabite, saj lahko nova delovna mesta prekine / ponovno ob vsakem času omogočajo nekaj robustnosti v svoj scenarij. Mogoče je, da je naloga prekine na polovici posodobiti sistem nadzora na delovnem mestu, tako da preverjanje število zapisov v delovnih mest in število zadetkov shrani nazaj na sistem nadzora na delovnem mestu, bi bila pametna poteza.
Poleg tega, medtem ko se to kaže, kako se nova delovna mesta je mogoče izbrati in upravljati z SQL-poizvedbo okvir, ki ga je treba res abstrahiranja svoje delo nadzora, tako da če se boste odločili za prehod na uporabo spletne storitve, datoteke sistema, XML , ali katero koli drugo število sistemov, ki jih ne bo vplival na kodo nad njo.
Job Configuration
Naslednji vidik, ki menijo, zaposlitev velikost in konfiguracijo. S poigravanjem s konfiguracijo delo lahko najti odlično ravnovesje med hitrostjo, proces replikacije, in zanesljivost. Bodite par ofa scenarijev:
- Jobs se 1 dan vsak teči: To pomeni, da vaši delavci potrebujejo 15 dni za obdelavo vsako delovno mesto (ne pozabite 10% moči za 2/3rds časa). To seveda ni pametno konfiguracijo, vaša naloga je velikost tako prevelika! Zato bi potrebovali vsaj dvakrat v času, da bi dobili službo obdelati začetno delavec šel AWOL (čas, da se poberem, da se ni vrnil rezultat plus predelave čas). V idealni boš moral vsaj eno polno delovno mesto z lahkoto odstranjujeta koncu vsakega prostega teka dolgo obdobje, tako da vam obdržati delovna mesta označite več in v najslabšem primeru bi delo traja dva dni, da se proces mora biti prvi izginotju.
- Jobs se 1 minuto teči: To pomeni, da vaši delavci traja približno 15 minut teči vsako delovno mesto. Medtem ko se to lahko na začetku zdi idealno, boste pridobili dodatno delo za predelavo v času kosila, odmori, sestanki, itd Ta scenarij postavlja sev na druga področja vašega sistema in uvaja svoje težave. Na primer, najprej vaš setup / čas obdelave razmerje je šel desno navzdol, zato izgublja učinkovitost sistema. Vaše omrežje bo treba nenehno pretakanje podatki o delovnih mestih z različnimi delavci neprijetno osebje, ki je dong svoje vsakodnevno delo. Ti si bomo tudi, da se bolj seva na strežniku poslu oplemenitenja, kot se je, da jed iz serij in veliko manjše kose dela redno. Nazadnje, v tem primeru, če svoje delo strežnik gre dol boste ustvarili velik back dnevnik nedokončanega dela, ker večjih mest bi lahko v nadaljevanje postopka Blaženo vedela, da je delo server je bil v težavah.
V resnici ne bo idealna konfiguracija za vaše omrežje setup, veliko je odvisno od razpoložljivih sredstev, vrste delovnih mest, delovnih zahtev časa preobrat, zmogljivosti omrežja, in tako naprej. Vendar pa so nekatere smernice, bi bil:
- Velikost delovnih mest, tako da lahko vsak delavec priti skozi vsaj 3-4 delovnih mest v obdobju 15 ur (najdaljša verjetno prostega teka roka)
- Play with obsega opravila tako, da postane setup čas dokaj nepomemben v primerjavi z obdelavo časa (ob upoštevanju zgoraj točko).
- Če zaposlitev ne dopolni v dvojno količino časa (morda manj), lahko pričakujete, da dokonča domneva, da svoje šli AWOL in začeti pri njihovi obdelavi z drugim delavcem. To pomeni, da boste morda morali počakati do trikrat normalni dobi zaposlitev za to, da popolna (tudi dlje, če je nadaljnje delo ne uspe). Morda boste želeli, da se zmanjša ta čas, vendar bodite previdni, da se ne zmanjša preveč, saj lahko začnete podvajanja naloge obdelave redno.
- Delovna mesta morajo biti neodvisne od zunanjih zahtev v največji možni meri. Naloga strežnika, na primer, je treba le obrniti na začetku in koncu vsakega delovnega mesta.
- Ne nasiti vaše omrežje, bo to imelo dve negativni učinki, bo vaš dnevni osebja najti preko mreže frustrirajuće in težave se lahko pojavijo s priključki časa ven problem, ki bo le še slabše, kot ste lestvici svoje omrežje.
- Zagotoviti nova delovna mesta se lahko izvaja na vaših delavcev. Če mest preveč pomnilnika bo intenzivno ali prostora na disku intenzivnih delovnih mest začeli z zaustavitvijo in edina stvar, ki jo boste opazili upad števila delovnih mest predelanih brez pravega razloga, zakaj.
Predložitev Rezultati Job
Ob predložitvi rezultatov dela je pomembno, da preveri, ali so rezultati niso bili predloženi drug delavec, še posebej, če je bil sedanji delavec mirujočem stanju nekaj časa.
Ko so rezultati predloženi zagotovi, da število rezultatov ustreza številu zapisov v službo.
Kot je navedeno prej, in ni mogoče preveč poudariti, zgraditi toleranco napak v pridobivanje delovnih mest ter rezultatov oddajo. Delavci se lahko (in verjetno bo) šel v ustavi mode na najbolj neprijetno časov in to mora biti poskrbljeno za. Prav tako še enkrat abstrahiranja stran vaše rezultate vloge bodo pomagali poskrbeti za prihodnje spremembe v sistemu nadzora na delovnem mestu veliko lažje reševanje.
Povzetek
V tem section smo si ogledali, kaj dela nadzorni strežnik, mora storiti in kako priti zelo osnovnega sistema vzpostaviti. Razpravljali smo o tem, kako pridobiti delovno mesto iz nadzornega sistema, in kako najbolje oblikovati delovna mesta, da bi dobili najbolj naš vašega sistema pisarno omrežje. Do konca, točka ali dve o predložitvi rezultatov nazaj na strežnik nadzora na delovnem mestu je bila predstavljena.
- Nadzor opravil strežnika upravlja delovna mesta in zagotavlja, da so izpolnjene vse delovne enote
- S črpanjem svoje delo select / rezultatov oddajo bomo lahko spremenite tehnologijo strežnik za nadzor, ne da bi veliko težav
- Konfiguriraj svoje delo, da se zagotovi, da so potekajo hitro in učinkovito, da ne bi bila preveč pritiska na vaše omrežne infrastrukture, in ne podvajajo nalog predelave redno.
- Prepričajte se, da si zgraditi toleranco napak in napak checking v vašo rutino, se delavci lahko prekine in nadaljuje, najbolj neprijetno časov. Ne pozabite preveriti, če so rezultati že predložil drug delavec.
Naslednjič, ko
V delu 3 bomo ustvarili naše virtualne obdelavo in postavili naše okno stroje, da postane idle delovnim časom.