Uvod
Delam v podjetju, kjer smo teči 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 uporabite s stroji, za okrepitev procesorske moči naših sistemov? V ta sklop člankov bom pogled na možne koristi zaposlovanja pisarno omrežje z uporabo virtualiziranih okoljih.
V delu 1 sem dal pregled sistema in tehnologije, bom v uporabi tudi razpravljali nekateri od možnih razlogov, zakaj bi si želeli ustvariti pisarno omrežje.
Job Control
Če vas bo, da se teče delovnih mest, potem boste potrebovali nek način, da jih upravljajo. Vaše delo kontrolnega sistema (na vašem delovnem mestu strežnik), je treba res dobro premišljena, še preden poskušate zagnati pisarno omrežje. Torej, najprej, kaj so naloge za sistem za nadzor opravil:
- Razdelite delovnih mest na zahtevo delavcev
- Povej delavcem, kakšne vrste delovnih mest za vodenje
- Track delovnih mest
- Prepričajte se, da so delovna mesta delujejo samo enkrat
- Poskrbite za delo podatke za delavce, ali pa vsaj jim povedal, kje ga dobiti
Sistem je treba tudi razširljiv, rešitev, ki deluje za zdaj v enem primeru se lahko razširi na vožnjo več vrst delovnih mest, kot so poslovni vidi vredno v mreži rešitev. Na primer, delovna mesta pridobili prednostne naloge, več kot eno zaposlitev tipa lahko obstajajo (to je nekaj kode baze), na koncu lahko celo vodijo več različnih strojev delavca, ki so optimizirani za vsako vrsto dela (čeprav to ne odmaknejo od "generično delavec "ideja). Vedno poskušajo, da razmišljajo o prihodnosti pri razvoju sistemov, lahko na kratko vizijo rok 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 je določen resource locator, da se IP naslov, ime gostitelja, URL (z uporabo internih DNS), itd To je zato, ker delavci morajo vedeti, kje iskati za delovna mesta, delavci potrebujejo, da bi našli sistem za nadzor opravil (ni opravilo nadzora našli delavci).
Delo server sam ne res zapletena naloga (v osnovni sistem tako ali tako), ki jih potrebuje za shranjevanje seznam delovnih mest, roko delovnih mest, prejeli rezultate, nato pa jih shranite za kasneje iskanje. Kako te dele (kot so "roko delovna mesta"), so opredeljeni so lahko zelo osnovne. Kasneje lahko razširi sistem vključuje upravo vmesnik za dodajanje, urejanje, brisanje, začasno delovnih mest, ampak to je izven te vaje.
Nobenega razloga ni, sploh potem, da je vaše delo strežnik ni bilo mogoče virtualni stroj teče v vaš glavni strežnik za obdelavo, če te ne odteče preveč sredstev iz njega. Delo strežnik pa ne potrebujejo visoke razpoložljivosti, če gre navzdol na petek zvečer boste izgubili cel vikend za predelavo, lahko stanejo vam nekaj tednov vredno časa za obdelavo (v primerjavi s vaš glavni strežnik za obdelavo sam) . Morda boste želeli, da razmisli vaše delo strežnik na obremenitev uravnoteženo okolje za visoke razpoložljivosti.
Basic Setup
Osnovne nastavitve za naše delo server bo sestavljen iz kaj sem kliče eden od mojih mlahavi strežnikov (ki je Li Nux, m ySql, P HP). Koda deluje na delavce, Thea bo dejansko delajo, kaj delovnih mest, lahko vodijo v stiku z s službo baz podatkov sistema za nadzor. Kasneje bi lahko ustvarili spletno storitvijo in dejansko roko delovnih mest, namesto da imajo delavci ne trdo delo sami, vendar za zdaj bomo še naprej uporabljati načelo KISS (Keep it Simple, Stupid!).
Torej, lets ustvarite tri mySQL tabele za reševanje delovnih mest. Ti bodo `delovnih mest`, `jobRecords`, in `jobResults`.
Tukaj sem s pomočjo SQL Buddy zelo malo alternativa phpMyAdmin samo zato, ker njeno lažje namestiti na CentOS (za druge, glej: 10 Great alternativ phpMyAdmin )
Ta tabela je sestavljena iz 5 preprostih polj,
- id: identifikacijo delo
- Ime: Ali lahko stranke reference, ali poljubno število drugih identifikatorjev
- Status: Moraš vedeti, kje naloga je, na, na primer
- 0: Se ne izvaja
- 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, moramo pobrati delo še enkrat in začeti predelave s strani drugega delavca. Delavci se lahko ustavite obdelavo / go offline za poljubno število razlogov, izpad električne energije, crash, omrežja izgube, itd
To je enostavno, kako bi lahko to tabelo razširiti z nekaj dodatnih polj, ki omogoča sledenje statistiki, zaključek čas stolpec da vidite, kako dolgo naj delo je, v nasprotju z vidite, koliko delavcev je pobral delo (očitno to potrebuje za običajno 1), prednostna naloga, se lahko seznam gre naprej in naprej. V bolj zapletenih scenarijev delo bi bilo mogoče določiti, koliko pomnilnika bo delavec potrebujejo dostop do (in zato uporabljajte le primerne delavce), ali pa bi celo kakšen tip delavca zahteva.
Lets dodati nekaj delovnih mest, na primer:
Naslednja tabela spet je zelo preprost za razumevanje, da so to naše delo zapisov. Te so povezane z glavno tabelo delovnih mest, ki jih stolpcu `jobs_id`. Make up te tabele zelo odvisno od podatkov, ki jih potrebujete za oskrbo na vaše delavce, da omogoča zelo enostaven primer, kjer imamo štiri stolpce:
- id: ID zapisa
- Ime: ime osebe
- Naslov: oseba, naslov
- jobs_id: delo ID, da je ta zapis povezan z
Tretja in zadnja tabela je sestavljena iz tabele rezultatov, to je podobno kot naša sestavljajo tabele zapisov, in z dodajanjem nekaterih stolpcih bi lahko del tabele zapisov:
- job_record_id: Povezava rezultat na tabelo opravila
- 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 pa bi to lahko prav tako enostavno je datoteka, parametri za zagon simulacije kodo, kar hočete.
Izbira delo
Kot je bilo že omenjeno, bodo delavci to naše delo upravljanja za nas, za zdaj, tako da vsi moramo res storiti, je najti delo, ki potrebuje za predelavo in dobili informacije. Kako bi to naredil? No kramp naše merili za izbiro novih delovnih mest in iskanju zaposlitve, v SQL sem naredil naslednje:
- Vzemite vsakega delovnega mesta, ki niso označena kot dokončana, ampak iz naših delavcev in jih ponastavi (nadomestek __ME__ z identifikacijsko oznako, bi najlažje je IP naslov):
UPDATE `delovnih mest` SET `stanja` = 0 WHERE `stanja` = 1 in `started_by` = __ME__;
- Uporaba naših merila za izbor službo, izberite delovno mesto in povedal, nadzorni sistem, da je ta delavec, ki se ukvarjajo z njim:
UPDATE `delovnih mest` SET `stanja` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `stanja` = 0 ali
(`Stanja` = 1 in `started_at`> DATE_SUB (NOW (), INTERVAL X HOUR)) ORDER BY `id` ASC;
Z oprijemalne delovnih mest, ki niso vrnila rezultatov v višini X časa bomo zagotovili, da so vsa delovna mesta vodijo v primeru delavca treskav ali gredo AWOL.
- Nato 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 smo vstavite rezultat naše evidence in označite delo kot popolna. Ne pozabite, saj lahko delovna mesta prekinitev / nadaljevanje kadarkoli omogočila določena robustnost v vaš scenarij. Mogoče je, da je naloga prekine na polovici posodablja sistem nadzora opravil, tako da preverjanje število zapisov v službo in število rezultatov shrani nazaj v sistem za nadzor opravil bi bila pametna poteza.
Poleg tega pa to dokazuje, kako je mogoče delovnih mest izbranih in upravljanih iz SQL query-frame Res bi morali abstracting svoje delo nadzor, tako da če se boste odločili za prehod na uporabo spletne storitve, datoteke glede sistema, XML , ali kateri koli drugi število sistemov, to ne vpliva kodo nad njo.
Job Configuration
Naslednji vidik, da razmisli je delo velikosti in konfiguracije. Z igranjem s konfiguracijo službo lahko udari odlično ravnovesje med hitrostjo, proces razmnoževanja, in zanesljivost. Take scenarije OFA nekaj:
- Jobs vzeti 1 dan vsak teči: To pomeni, da vaš delavci potrebujejo 15 dni za obdelavo vsako delovno mesto (ne pozabite 10% moči za 2/3rds časa). To je očitno ni pametno konfiguracijo, vaša naloga je velikost tako prevelika! Zato bi potrebovali vsaj dvakrat toliko časa, da bi dobili službo predelane naj bo začetni delavec šel AWOL (čas, da se poberem, da se ni vrnil rezultat predelave plus čas). V idealnem želite imeti vsaj eno polno delovno mesto z lahkoto odstranjujeta koncu vsakega prostega teka dolgo obdobje, da način, kako ohraniti delovna mesta tiktaka več, v najslabšem primeru bi službo traja dva dni, da se proces mora prvo iti manjka.
- Jobs vzemite 1 minuto teči: To pomeni, da vaši delavci traja približno 15 minut teči vsako delo. Medtem ko to lahko na začetku zdi idealno, boste pridobili dodatno delo za predelavo v času kosila, odmori za kavo, sestanki, itd Ta scenarij postavlja pritisk na druga področja vašega sistema in uvaja svoje težave. Na primer, najprej vaš setup / čas obdelave razmerje se bo šel desno dol, zato izgubljajo učinkovitost sistema. Vaš omrežje se bo treba nenehno pretakanje delo informacije na različne delavce, frustrirajuće osebja, ki so dong svoje vsakodnevno delo. Ti si tudi dogaja, da se bolj pritisk na strežniku delo za predelavo, saj je jed iz veliko in veliko majhne koščke dela redno. Nazadnje, v tej situaciji, če svoje delo strežnik gre dol boste ustvarili velik log zadnji nedokončanega dela, medtem ko večjih mest bi lahko v njem naprej obdelave Blaženo vedela, da je delo server je bil v težavah.
V resnici ne bo nihče idealno konfiguracijo za vaše omrežje setup, veliko je odvisno od razpoložljivih sredstev, vrste delovnih mest, delovnih zahtev čas preobrat, zmogljivosti omrežja, in tako naprej. Vendar pa bi nekatere smernice, so:
- Velikost delovnih mest, tako da lahko vsak delavec priti skozi vsaj 3-4 delovnih mest v roku 15 ur (najdaljša verjetno idle časovno obdobje)
- Play with obsega opravila, tako da nastavitev časa postane dokaj nepomemben v primerjavi z obdelavo času (ob upoštevanju zgoraj točko).
- Če delo ni popolna v dvojno količino časa (morda manj), lahko pričakujete, da popolnoma prevzame, da njegove šel AWOL in začnete obdelavo z drugim delavcem. To pomeni, boste morda morali počakati do trikrat normalni dobi službo, da bi popolno (morda dlje, če nadaljnje delo ne uspe). Morda boste želeli, da zmanjša ta čas, vendar bodite previdni, da se ne zmanjša preveč, saj lahko začnete podvajanja nalog za obdelavo na redni osnovi.
- Delovna mesta morajo biti neodvisne od zunanjih zahtev v največji možni meri. Naloga strežnika, na primer, je treba samo obrniti na začetku in na koncu vsakega delovnega mesta.
- Ne nasičena vaše omrežje, bo to imelo dve negativni učinki, bo vaš dnevni zaposlenih najdete z uporabo omrežja, frustrirajuće in težave, ki lahko nastopijo s povezavami časa ven problem, ki bo le še slabše, kot ste lestvici vaše omrežje.
- Zagotavljanje delovnih mest se lahko izvaja na vaših delavcev. Če je delovnih mest preveč spomin bo intenzivno ali prostora na disku intenzivnih delovnih mest začeli z zaustavitvijo in edina stvar, ki jo boste opazili, je upad števila delovnih mest obdelanih brez pravega razloga, zakaj.
Predložitev Rezultati Job
Pri predložitvi rezultatov delo 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 predloženi rezultati zagotoviti, da se število rezultatov ustreza številu zapisov v službo.
Kot je navedeno prej, in ne more biti več kot poudariti, zgraditi toleranco napak v iskanje novih delovnih mest in rezultate oddajo. Delavci lahko (in najverjetneje bo) šel v način mirovanja na najbolj neprijetno, kolikokrat in s tem mora biti poskrbljeno za. Prav tako še enkrat abstracting stran vaše rezultate oddajo bodo pomagali poskrbeti za prihodnje spremembe v sistemu nadzora opravil veliko lažje reševanje.
Povzetek
V tem section smo si ogledali, kaj nadzor opravil strežnik mora storiti in kako priti zelo osnovni sistem vzpostavi. Razpravljali smo o tem, kako pridobiti delovno mesto iz sistema nadzora in kako najbolje nastaviti delovnih mest, da bi dobili največ naših vašega sistema pisarno omrežje. Za konec, je bil predstavljen odstavek ali dva o predložitvi rezultate nazaj na strežnik nadzor opravil.
- Nadzor opravil strežnik upravlja delovna mesta in zagotavlja, da so končana vsa dela enote
- Z abstracting svoje delo izberite / Rezultati oddajo lahko spremenimo tehnologijo za nadzor strežnika, ne da bi veliko težav
- Nastavitev delovnih mest, da se zagotovi, da so teči hitro in učinkovito, ne da bi preveč pritiska na vaše omrežne infrastrukture, in brez podvajanja naloge obdelave na redni osnovi.
- Prepričajte se, da si gradijo toleranco napak in napak checking v vaše rutine, lahko delavce začasno ustavi in nadaljuje, najbolj neprijetno krat. Ne pozabite preveriti, če so rezultati že bili predloženi drug delavec.
Naslednjič, ko
V delu 3 bomo ustvarili našo virtualni stroj za obdelavo in vzpostavitev naših oken stroje, da postane idle delovnim časom.