Introducere
Eu lucrez intr-o companie în care vom rula multe locuri de muncă lot de prelucrare a milioane de înregistrări de date în fiecare zi şi m-am gândit recent la toate maşinile care stau în jurul valorii de fiecare şi în fiecare zi, nu face nimic pentru mai multe ore. Nu ar fi bine dacă am putea folosi aceste maşini pentru a consolida puterea de procesare a sistemelor noastre? În acest set de articole am de gând să se uite la beneficiile potenţiale ale angajarea unui birou grilă utilizând medii virtualizate.
În partea 1 am dat o imagine de ansamblu a sistemului şi tehnologii Eu voi fi folosind, precum şi discutat şi unele dintre motivele potenţialului de ce v-ar dori pentru a crea o reţea de birou.
De locuri de muncă de control
Dacă aveţi de gând să fie difuzate de locuri de muncă, atunci ai de gând să nevoie de o modalitate de a le gestiona. Sistemul de control de locuri de muncă (pe serverul dvs. de locuri de muncă) trebuie să fie foarte bine gandit chiar înainte de a încerca să executaţi o reţea de birou. Deci, în primul rând, care sunt sarcinile pentru un sistem de control de locuri de muncă:
- De locuri de muncă mâna la cererea lucrătorilor
- Spune-lucrătorilor ce tip de locuri de muncă pentru a rula
- Track de locuri de muncă
- Asiguraţi-vă că locurile de muncă sunt doar rula o singură dată
- Furnizarea de date de locuri de muncă pentru lucrători, sau cel puţin să le spună unde să-l
De asemenea, sistemul trebuie să fie extensibil, o soluţie care funcţionează pentru acum într-un singur caz poate fi extinsă pentru a rula mai multe tipuri de locuri de muncă, de afaceri vede în valoare într-o soluţie grilă. De exemplu, locuri de muncă poate câştiga priorităţi, mai mult de un tip de loc de muncă ar putea exista (de exemplu, mai multe baze cod), în cele din urmă aveţi dreptul să executaţi chiar mai multe masini diferite lucrător care sunt optimizate pentru fiecare tip de loc de muncă (cu toate că se mişcă departe de lucrător "generic "idee). Încercaţi întotdeauna să se gândească la viitor, atunci când dezvoltarea de sisteme, o viziune pe termen scurt poate duce la frustrare pe termen lung şi timpul de dezvoltare a crescut.
Server de locuri de muncă
Vom avea nevoie de undeva pentru a controla locurile de muncă noastre de la, in aceasta ar trebui să fie singurul sistem în grila de dvs., care are o resursă fix locator, fie că o adresă IP, numele gazdei, URL-ul (folosind DNS intern), etc Acest lucru se datorează faptului că lucrătorii trebuie să ştie unde să caute locuri de muncă, lucrătorii nevoie pentru a găsi sistemul de control de locuri de muncă (nu a sistemului de control de locuri de muncă găsiţi cele lucrătorilor).
Serverul de locuri de muncă în sine nu are într-adevăr o sarcină complicată (într-un sistem de bază oricum), are nevoie pentru a stoca o listă de locuri de muncă, o parte din locurile de muncă, de a primi rezultatele, şi, ulterior, le păstrează pentru mai târziu regăsire. Modul în care aceste părţi ("mână în locuri de muncă", cum ar fi) sunt definite pot fi foarte de bază. Mai tarziu, putem extinde sistemul pentru a include o interfata de administrare pentru a adăuga, edita, şterge, suspenda de locuri de muncă dar acest lucru este dincolo de acest exerciţiu.
Nu există nici un motiv, atunci faptul că server-ul dvs. de locuri de muncă nu ar putea fi o maşină virtuală care rulează în cadrul server-ul dvs. principală de procesare cu condiţia ca aceasta să nu se scurge prea multe resurse de la ea. Serverul de locuri de muncă însă are nevoie de o disponibilitate ridicată, dacă se duce în jos pe o vineri seara ai de gând să piardă un week-end întreg de prelucrare, potenţial vă costă câteva săptămâni în valoare de timp de procesare (în comparaţie cu server-ul dvs. principală de procesare în monoterapie) . Este posibil să doriţi să ia în considerare punerea server-ul dvs. de locuri de muncă pe un mediu de sarcină echilibrată pentru disponibilitate ridicată.
De bază de configurare
Configurare de bază pentru serverul de munca noastra va consta din ceea ce am de asteptare unul dintre serverele mele Limp (care este vomica Li, m ySql, P CP). Codul se execută pe lucrătorilor tolerează va funcţiona efectiv de locuri de muncă ce se poate executa prin interactiunea cu bazele de date cu sistem de control de locuri de muncă. Mai târziu am putea crea un serviciu de web si de fapt, o parte din locurile de muncă, mai degrabă decât având în lucrătorilor face munca grea în sine, dar de acum vom continua utilizarea principiul KISS (Keep It Simple, Stupid!).
Deci, vă permite să creaţi trei mySQL tabele pentru a face faţă cu locuri de muncă. Acestea vor fi locuri de muncă ``, `jobRecords`, `şi` jobResults.
Aici Sunt folosind SQL Prieteni o alternativă mare la mic phpMyAdmin doar pentru că mai uşor de sarcina de a instala pe CentOS (pentru alţii a se vedea: 10 alternative Mare pentru a phpMyAdmin )
Acest tabel este format din 5 domenii de simplu,
- id: identifică în mod unic de locuri de muncă
- Numele: Ar putea fi o referinţă client, sau orice alt număr de alţi identificatori
- Stare: Trebuie să ştiţi unde este la locul de muncă, de exemplu,
- 0: Nu a început
- 1: crescut
- 2: Finalizat
- started_by: Cine a inceput sa faca treaba? Acest lucru nu este în întregime necesar, dar este un frumos de a avea. Aş sugera lucrătorilor de urmărire prin adresa IP în reţea
- started_at: Când a început lucrătorul de locuri de muncă? Prin urmărirea de locuri de muncă care nu au finalizat în termen de suma X de timp ştim că avem nevoie pentru a ridica din nou loc de muncă şi de a începe prelucrarea de către un alt lucrător. Lucrătorii ar putea opri de prelucrare / go offline pentru orice număr de motive, pană de curent, accident, o pierdere în reţea, etc
Este uşor de modul în care acest tabel ar putea fi extins cu câteva domenii suplimentare pentru a permite pentru urmărirea statisticilor, există o coloană de timp finisaj pentru a vedea cât de mult a luat loc de muncă, un contor pentru a vedea cât de multe lucrătorilor ridicat de locuri de muncă (evident, acest lucru trebuie să tind să 1), prioritate de locuri de muncă, lista poate continua pe şi de pe. În scenarii de locuri de muncă mai complexe, ar fi posibil să se precizeze cât de mult de memorie în care lucrătorul ar fi nevoie de acces la (şi, prin urmare, utilizarea numai de către lucrători adecvate), sau chiar ce tip de lucrător ar fi necesare.
Să adăugăm un putine locuri de munca exemplu:
În tabelul următor este din nou destul de simplu de înţeles, acestea sunt inregistrarile noastre de locuri de muncă. Ele sunt legate la masa principală de locuri de muncă de către o coloană `jobs_id`. Fac din acest tabel foarte mult depinde de datele de care aveţi nevoie să furnizeze lucrătorilor dumneavoastră, vă permite să fac un exemplu foarte simplu în cazul în care avem patru coloane:
- id: ID-ul de înregistrare
- Numele: Persoana Numele
- Adresa: Adresa Persoanei
- jobs_id: ID-ul de locuri de muncă faptul că această înregistrare este legată de
Tabelul a treia şi ultima constă dintr-un tabel de rezultate, el are la fel face ca masa noastră înregistrări, şi cu adăugarea unor coloane ar putea face parte din tabelul de înregistrări:
- job_record_id: Link rezultat la masa de locuri de muncă
- Rezultatul: date de rezultat
... Şi asta e tot ce ai nevoie pentru un control de locuri de muncă! (Deşi la un nivel foarte de bază) În cazul meu, am arătat într-un alt tabel în cazul în care datele mele la proces a fost localizat, dar acest lucru ar putea la fel de uşor a fost un fişier, parametrii pentru a rula cod de simulare, îl nume.
Selectarea unui loc de muncă
După cum sa menţionat anterior, muncitorii vor face noastre de management de locuri de muncă pentru noi, pentru acum, asa ca tot ce trebuie să facem cu adevărat este să găsească un loc de muncă, care are nevoie de prelucrare şi pentru a obţine informaţii. Cum ne-am face acest lucru? Ei bine alege criteriile noastre de selecţie de locuri de muncă şi caute locuri de muncă, în SQL am făcut cu următorul text:
- Luaţi orice locuri de muncă care nu sunt marcate ca fiind complet, dar de la muncitor noastre şi le reseta (substitut __ME__ cu un identificator mai simplu, ar fi adresa IP):
UPDATE `de locuri de muncă` SET `stare` = 0 WHERE `stare` = 1, I `started_by` = __ME__;
- Folosind criteriile noastre de selecţie de locuri de muncă, selectaţi un loc de muncă şi spune că sistemul de control al acestui muncitor se ocupă cu ea:
UPDATE `de locuri de muncă` SET `stare` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `statutul` = 0 sau
(`Stare` = 1, I `started_at`> DATE_SUB (NOW (), INTERVAL X ORA)) ORDER BY `id` ASC;
Prin hapsân de locuri de muncă care nu s-au întors rezultate în suma X de timp ne asigurăm că toate locurile de muncă sunt difuzate în eventualitatea unui lucrător crashing sau mergi AWOL.
- Înainte apuca detaliile de locuri de muncă, urmată de înregistrări înşişi:
SELECT * FROM `de locuri de muncă` WHERE `started_by` = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __JOBID__;
La finalizarea de locuri de muncă ne introduce evidenţelor noastre rezultat şi marca locul de muncă ca fiind completă. Amintiţi-vă cum de locuri de muncă se poate suspenda / relua în orice moment, permite o robusteţe în script-ul. S-ar putea fi faptul că sarcina suspendă jumătate prin actualizarea sistemului de control de locuri de muncă, astfel încât verificarea numărului de înregistrări într-un loc de muncă şi numărul de rezultate salvate înapoi la sistemul de control de locuri de muncă ar fi o mişcare înţeleaptă.
În plus, în timp ce acest lucru demonstrează modul de locuri de muncă pot fi selectate şi gestionate dintr-un cadru SQL-interogare ar trebui să fie într-adevăr abstracţie de control al dvs. de locuri de muncă, astfel că, dacă vă decideţi pentru a comuta la folosind un serviciu web, un sistem de fişiere bazat, XML , sau orice alte Numărul de sisteme de aceasta nu va afecta codul de mai sus l.
De locuri de muncă de configurare
Aspectul următoare să ia în considerare este dimensiunea de locuri de muncă şi de configurare. Prin joc cu configuraţie de locuri de muncă, putem asigura un echilibru excelent între viteză, replicare proces, şi fiabilitate. Ia-o scenarii of cuplu:
- Locuri de munca dura 1 zi în fiecare să curgă: Acest lucru înseamnă că muncitorii dvs. nevoie de 15 de zile pentru a procesa fiecare loc de muncă (amintiţi-vă de 10% din puterea de 2/3rds de timp). Acest lucru nu este în mod evident un înţelept de configurare, dimensiunea de locuri de muncă este mult prea mare! Ar fi nevoie de cel puţin dublu faţă de timp pentru a obţine un loc de muncă prelucrate trebuie lucrătorul iniţială merge AWOL (timp pentru a ridica că nu a returnat un rezultat plus timp de reprocesare). Într-un ideal ai avea cel puţin un loc de muncă pur complet eliminate până la sfârşitul fiecărei perioade de ralanti lung, astfel încât puteţi păstra locurile de muncă bifarea peste şi în cel mai rău caz, un loc de muncă ar dura două zile proces ar trebui să meargă primul care lipsesc.
- Locuri de munca dura 1 minut pentru a rula: Acest lucru înseamnă că muncitorii dvs. dura aproximativ 15 minute pentru a rula fiecare loc de muncă. Deşi acest lucru poate părea iniţial ideale, puteţi câştiga de prelucrare a lucra suplimentar în timpul prânz, pauzele de cafea, întâlniri, etc acest scenariu pune presiune pe alte zone ale sistemului dvs. şi a introduce propriile sale probleme. De exemplu, în primul rând de instalare / prelucrare a raportului de timp este de gând să meargă în jos dreapta, pierde, prin urmare, eficienţa sistemului. Reteaua ta va fi de streaming în mod constant de informaţii de locuri de muncă la personalul diferitelor frustrant lucrătorilor care sunt dong lor de zi cu zi de lucru. Eşti, de asemenea, va pune presiune mai mult pe server-ul dvs. de procesare de locuri de muncă, deoarece trebuie să farfurie o mulţime şi o mulţime de piese mici de lucru în mod regulat. În sfârşit, în această situaţie în cazul în care server-ul dvs. de locuri de muncă se duce în jos ai de gând să creeze un jurnal din spate foarte mare de sarcini neîndeplinite întrucât mai mare de locuri de muncă ar putea de prelucrare a continuat blissfully constienti de faptul ca serverul a fost de locuri de muncă se confruntă cu dificultăţi.
În realitate, nu va fi nici o configuraţie ideală pentru configurarea reţelei dumneavoastră, mult depinde de resursele disponibile, tipuri de locuri de muncă, cerinţele de locuri de muncă timp de răspuns, capacitatea reţelei, şi aşa mai departe. Toate acestea, unele linii directoare ar fi:
- Dimensiune de locuri de muncă, astfel încât fiecare lucrător poate obţine prin intermediul a cel puţin 3-4 locuri de muncă într-o perioadă de 15 ore (cea mai lunga perioada de timp probabil inactiv)
- Joaca-te cu dimensiunea de locuri de muncă, astfel încât timpul de setare devine destul de nesemnificativă în comparaţie cu timpul de procesare (având în vedere punctul de mai sus).
- Dacă un loc de muncă nu completează în dubla cantitatea de timp (poate mai putin), te aştepţi să-l completeze presupună că AWOL sa dus şi a începe de prelucrare cu un alt muncitor. Aceasta înseamnă că va trebui să aşteptaţi până la de trei ori lungimea normala a unui loc de muncă pentru ca acesta să completeze (eventual mai mult în cazul în care nu reuşeşte de locuri de muncă ulterioare). Este posibil să doriţi să reducă acest timp, dar aveţi grijă să nu-l reducă prea mult cum ar putea să înceapă duplicarea sarcinilor de procesare în mod regulat.
- Locuri de munca trebuie să fie independentă de cerinţe în afara cât mai mult posibil. Serverul de locuri de muncă, de exemplu, ar trebui să fie doar contactat la începutul şi sfârşitul fiecărui loc de muncă.
- Nu satura reţeaua dvs., acest lucru va avea două efecte negative, personalul zi va găsi cu ajutorul reţelei de frustrant şi probleme pot fi cu experienţă, cu conexiuni de sincronizare un problemă, care va primi doar mai rău în timp ce grila de scară.
- Asigurarea de locuri de muncă poate rula pe muncitorii. Dacă locurile de muncă devin prea mari de memorie de locuri de muncă sau de spatiu pe disc intensiv va începe oprirea si singurul lucru pe care veţi observa este o scadere a numărului de locuri de muncă prelucrate cu nici un motiv real.
Rezultatele Trimiterea unui loc de muncă
Atunci când prezintă rezultatele unui loc de muncă este important să se verifice că rezultatele nu au fost prezentate de către un alt lucrător, în special în cazul în care lucrătorul curent a fost inactiv pentru mai mult timp.
Când rezultatele sunt transmise a se asigura că numărul de rezultate coincide cu numărul de înregistrări în cadrul de locuri de muncă.
După cum sa menţionat anterior, şi nu poate fi peste accentuat, construi toleranta la defecte în regăsire de locuri de muncă şi prezentarea rezultatelor. Lucrătorilor poate (şi cel mai probabil vor) intra în modul de suspendare de la cel mai incomod de ori şi acest lucru trebuie să fie satisfăcute. De asemenea, încă o dată, abstractizare departe prezentarea de rezultate va ajuta satisface modificări viitoare a sistemului de control de locuri de muncă mult mai uşor pentru a face faţă.
Rezumat
În acest section am uitat la ceea ce un server de control loc de muncă trebuie să facă şi cum să obţineţi un sistem foarte de bază instituit. Am discutat despre modul în care pentru a prelua un loc de muncă din sistemul de control şi de cele mai bune modalităţi de a configura de locuri de muncă pentru a obţine cele mai multe nostru de sistemul dumneavoastră reţea de birou. Pentru a termina, un paragraf sau două în prezenta rezultatele inapoi la server de control de locuri de muncă a fost susţinută.
- Un server de control de locuri de muncă gestionează locurile de muncă şi se asigură că toate unităţile de muncă sunt completate
- Prin abstractizare locul de muncă select / Rezultate depunere putem schimba tehnologia de server de control fără probleme mult
- Configuraţi de locuri de muncă pentru a vă asigura că acestea sunt rulate rapid şi eficient, fără a pune prea multa presiune pe infrastructura de reţea, şi fără duplicarea sarcinilor de procesare în mod regulat.
- Asiguraţi-vă că vă construiţi toleranţa la erori şi checking eroare în rutina dvs., lucrătorii pot suspenda şi relua şi cel mai incomod de ori. Amintiţi-vă pentru a verifica dacă rezultatele au fost deja transmise de un alt lucrător.
Dată următoare
În partea a 3- vom crea masini virtuale nostru de procesare şi a înfiinţat maşinile noastre ferestre să devină inactiv timp lucrătorilor.