Įvadas
Aš dirba įmonė, kur mes paleisti daug partijos milijonų įrašų duomenų tvarkymo darbo vietas kiekvieną dieną ir aš galvoju apie visus mašinos, sėdi aplink kiekvieną ir kiekvieną dieną keletą valandų nieko nedaryti . Ar nebūtų gerai, jei galėtume naudoti šias mašinas paremti mūsų sistemos duomenų apdorojimo galia? Į šį straipsnių rinkinį aš pažvelgti į galimą naudą įdarbinimo biuro tinklo , naudojant virtualised aplinką .
1 dalyje daviau sistemos ir technologijos bus taip pat aptarti kai kurie iš galimų priežasčių, kodėl Jūs norėtumėte sukurti biuro tinklelį apžvalga .
Darbo kontrolė
Jei jūs ketinate veikia darbo vietas, tada jūs ketinate reikia kažkokiu būdu juos valdyti. Jūsų darbas kontrolės sistema (į savo darbo serveryje) turi būti tikrai gerai apgalvoti dar prieš bandant paleisti biuro tinklo. Taigi pirma, kas yra darbo kontrolės sistemos uždaviniai:
- Iš darbuotojų prašymu ranka iš darbo vietų
- Papasakokite darbuotojams, kokio tipo darbo vietų paleisti
- Sekti darbo vietų
- Užtikrinti, kad darbo vietų paleisti tik vieną kartą
- Suteikti darbo darbuotojų duomenis, arba bent pasakykite jiems, kur jį gauti
Sistema taip pat turi būti galima pratęsti, sprendimas, kuris veikia dabar vienu atveju gali būti pratęstas paleisti kelių tipų darbo vietų, verslo mato tinklelį tirpalo verta. Pavyzdžiui, darbo vietų gali gauti prioritetus, daugiau nei vieną darbą tipas, gali egzistuoti (ty keletą kodo bazės), galų gale jūs net gali vykdyti keletas skirtingų darbuotojas mašinos, optimizuota kiekvienam darbo tipui (nors tai nėra tolti nuo generinis darbuotojas "idėja). Visada stenkitės galvoti apie ateitį, kuriant sistemas, trumpą laiką regėjimas gali sukelti ilgesnį laiką nusivylimas ir padidinti vystymosi laikas.
Darbo Serveris
Mes ketiname reikia kažkur kontroliuoti mūsų darbo vietas, tai turėtų būti tik savo tinklelį sistemą, kad fiksuoto Resource Locator, kad IP adresą, kompiuterio vardą, URL (naudojant vidinio DNS), ir tt Tai yra todėl, kad darbuotojams reikia žinoti, kur ieškoti darbo, darbuotojams reikia rasti darbo kontrolės sistema (ne darbo kontrolės sistema rasti darbuotojų).
Darbo serveris pats nėra tikrai sudėtinga užduotis (bent jau pagrindinės sistemos), ji turi saugoti darbo vietų sąrašą, darbo vietų ranką, gauti rezultatus, o vėliau juos laikyti, kad vėliau. , Kaip šios dalys (pavyzdžiui, "darbo vietų" ranką) yra apibrėžti gali būti labai paprastas. Vėliau mes galime išplėsti sistemos administravimo sąsaja, pridėti, redaguoti, trinti, sustabdyti darbo vietų, tačiau tai yra ne tik šį pratimą.
Nėra jokios priežasties, kokia, tada, kad jūsų darbo serveris negalėjo būti virtualios mašinos veikia per savo pagrindinę perdirbimo serverio, jeigu nėra nutekėjimo per daug išteklių iš. Darbo serverio, tačiau reikia didelio prieinamumo, jei jis krinta nuo penktadienio vakaro jūs ketinate prarasti visą savaitgalį perdirbimo, potencialiai jums kainuos porą savaičių verta perdirbimo metu (lyginant su jūsų pagrindinė perdirbimo serverio vien) . Galbūt norėsite apsvarstyti galimybę pradėti savo darbą serverio apkrovos subalansuotą aplinką didelio prieinamumo.
Bazinė konfigūracija
Pagrindinis mūsų darbo serverio sąranka, ką aš skambinti vienas mano Limp serverius (Li Nux m ySql, P, HP) . Kodas veikia Thea darbuotojų faktiškai dirba, kokie darbo vietų galima paleisti, sąveikaudamas su darbo kontrolės sistemos duomenų bazių. Vėliau galėtume sukurti interneto paslaugas ir iš tikrųjų darbo vietų ranką, o ne darbuotojų sunkaus darbo, bet dabar mes ir toliau naudojant principas KISS (Keep it simple, stupid!).
Taigi, leidžia sukurti tris mySQL lentelių spręsti darbo vietų. Tai bus "darbo vietų", "jobRecords", ir "jobResults".
Čia aš naudojant SQL Buddy labai mažai alternatyva phpMyAdmin tik todėl, kad jos lengviau įdiegti Centos (mato kiti: 10 Didžiosios alternatyvų į phpMyAdmin )
Ši lentelė susideda iš 5 paprastus laukus,
- ID: identifikuoti darbo
- vardas: gali būti kliento nuorodą, arba bet kitų identifikatorių
- Statusas: Jums reikia žinoti, kur darbas yra, pvz.
- 0: Ne pradėjo
- 1: įlaipinami
- 2: baigė
- started_by: Kas yra pradėtas daryti darbą? Tai nėra visiškai būtina, bet yra malonu turėti. Norėčiau pasiūlyti stebėti savo IP adresą jūsų tinklo darbuotojų
- started_at: Kada darbuotojui pradėti darbą? Iki stebėjimo darbo vietų, kurie nėra baigtas per x laiko, mes žinome, mes turime pasiimti darbą dar kartą ir pradėti perdirbti kito darbuotojo. Darbuotojai galėtų sustabdyti tvarkymo / atsijungti bet kokį skaičių priežasčių, elektros tiekimo gedimo, avarijos, tinklo nuostolių, ir tt
Tai lengva, kaip šioje lentelėje gali būti pratęstas keletą papildomų laukų, kad būtų galima statistikos stebėjimas, apdailos stulpelyje matyti, kiek laiko darbo ėmėsi kovos matyti, kiek darbuotojų pakėlė darbo (žinoma, tai turi tendenciją 1), darbo prioritetas, sąrašas gali eiti ir toliau. Sudėtingesnis darbas scenarijus būtų galima nurodyti, kiek atminties darbuotojas turės prieigą (ir todėl naudoti tik tinkamus darbuotojus), ar net kokio tipo darbuotojo būtų reikalaujama.
Leidžia pridėti keletą pavyzdžiui, darbo vietų:
Tolesnėje lentelėje vėl yra gana paprasta suprasti, tai yra mūsų darbas įrašus. Jie yra susiję su pagrindinių darbo vietų lentelėje skiltyje "jobs_id". Sudaro šio stalo labai daug priklauso nuo duomenų, kad jums reikia pateikti savo darbuotojų, leidžia padaryti labai paprastą pavyzdį, kur mes keturios skiltys:
- įrašo ID numeris:
- pavadinimas: asmens vardas
- Adresas: Asmuo adresas
- jobs_id: darbas ID, kad šis įrašas yra susijęs su
Trečioji ir galutinė lentelė susideda iš rezultatų lentelės, ji daug tą patį, kaip mūsų įrašų lentelės, ir su to kai kurie stulpeliai gali būti lentelės įrašus:
- job_record_id: Link rezultatas darbo stalo
- rezultatas: rezultatas duomenys
... Ir tai viskas, ko jums reikia darbo kontrolės! (Nors labai bazinio lygio) Mano atveju aš atkreipė dėmesį į kitą lentelę, kur buvo įsikūrusi savo duomenis procesas, bet tai gali taip pat lengvai failą, paleisti modeliavimo kodą parametrų, you name it.
Pasirinkus darbą
, Kaip nurodyta anksčiau, darbuotojams atlikti savo darbą valdymą mums dabar, todėl visi turime tikrai rasti darbą, reikia perdirbimo ir gauti informaciją. Kaip mes tai darome? Gerai pasirinkti mūsų darbo vietų atrankos kriterijus ir ieškoti darbo, SQL aš taip:
- Imtis bet kokių darbo vietų, kurios nėra pažymėtos kaip visiškas, bet iš mūsų darbuotojas ir iš naujo juos (pakeisti __ME__ su identifikatorius, lengviausia būtų IP adresas):
UPDATE "darbo vietų" SET "statusas" = 0, kai "statusas" = 1 ir `started_by` = __ME__;
- Naudodamiesi mūsų darbo, atrankos kriterijai, pasirinkti darbą ir pasakyti, kad šis darbuotojas yra susijusios su kontrolės sistema:
UPDATE "darbo vietų" SET ", status` = 1, "started_by` = __ME__, "started_at` = NOW () WHERE `, status` = 0 arba
("Statusas" = 1 ir `started_at"> DATE_SUB (NOW (), intervalas X val.)) ORDER BY `id` ASC; Greiferiniai darbo vietų, kurie nėra X laiko galime užtikrinti, kad visų darbo vietų paleisti darbuotojas kritimo ar vyksta AWOL atveju grąžina rezultatus.
- Kitas patraukti darbo vietų duomenys patys įrašus:
PASIRINKITE * `darbo vietų kūrimo" kur "started_by` = __ME__ limitu 1;
Pasirinkite * `job_records` WHERE `id` = __JOBID__;
Baigus darbą, mes įterpti mūsų rezultatų įrašus ir pažymėti kaip užbaigti darbą. Prisiminti darbo vietas gali sustabdyti / atnaujinti bet kuriuo metu galima, kai savo scenarijų atsparumą. Tai gali būti, kad užduotis sustabdo įpusėjo atnaujinti darbo kontrolės sistema, todėl tikrinti darbą įrašų skaičių ir rezultatus, išsaugoti darbo kontrolės sistema būtų protingas žingsnis.
Be to, o tai rodo, kaip darbo vietų gali būti pasirinktas ir valdoma iš SQL užklausos rėmo, jums tikrai turėtų būti savo darbo kontrolė atsiribotų, kad jei nuspręsite pereiti prie naudodami interneto paslaugą, failų sistema , XML, ar bet kurios kitos sistemų skaičius neturi įtakos virš jo kodą.
Darbo konfigūravimas
Kitas svarstytinas aspektas - darbo vietų dydžio ir konfigūracijos. Žaisdami su darbo vietų konfigūraciją galime streikuoti puikų balansą tarp greičio, replikacijos procesas, ir patikimumą. Užtrukti keletą OFA scenarijus:
- Darbo pasiūlymai 1 diena kiekvieną paleisti: Tai reiškia, kad jūsų darbuotojams reikia 15 dienų, apdoroti kiekviena darbo vieta (prisimenate 10% laiko, 2/3rds galios ). Tai aiškiai nėra išmintingas konfigūracijos, savo darbą dydis yra per didelis! Tai būtų bent dvigubai daugiau laiko gauti darbą tvarkomi pradinio darbuotojas AWOL (laikas pasiimti, kad ji nėra grąžinamas rezultatas plius perdirbimo metu). Idealiai jums reikia turėti bent vieną visą darbą, lengvai pašalinamas kiekvieno ilgos prastovos laikotarpio pabaigoje, tokiu būdu jūs nuolat darbo vietų, pažymint ir blogiausiu atveju darbo imsis dvi dienas procesas turėtų būti pirmasis dingsta.
- Darbo pasiūlymai 1 minutę paleisti: Tai reiškia, kad jūsų darbuotojai būtų apie 15 minučių paleisti kiekvieną užduotį . Nors iš pradžių gali atrodyti idealus, jūs gaunate papildomus darbus apdorojimo metu pietų, kavos pertraukos, susitikimai ir tt, šis scenarijus kelia įtampą kitose srityse savo sistemą ir pristato savo problemas. Pavyzdžiui, pirma savo setup / perdirbimo laiko santykis bus eiti teisę žemyn, todėl praranda sistemos efektyvumą. Jūsų tinklas turi būti nuolat transliacijos informacijos apie darbo vietas įvairių darbuotojų nelinksma darbuotojai, kurie yra Dong jų kasdienį darbą. Jūs taip pat ketina skirti daugiau apkrauti savo darbą apdorojimo serverį, nes ji turi daug ir daug mažų gabalėlių darbą reguliariai patiekalas iš. Galiausiai, šioje situacijoje, jei jūsų darbas serveris krinta jūs ketinate sukurti milžinišką Atgal log kadangi didesnis darbo vietų nebaigti darbo galėtų toliau perdirbti palaimingai nežinoti, kad darbo serveris patiria sunkumų.
Iš tikrųjų ten bus niekas idealiai konfigūracijos savo tinklelį sąranką, daug kas priklauso nuo turimų išteklių, darbą, darbo apsisukimo laikas reikalavimai, tinklo pajėgumą, ir tt rūšių. Tačiau kai kurios gairės būtų:
- Dydis darbo vietas taip, kad kiekvienas darbuotojas gali gauti per bent 3-4 darbo vietų 15 valandų laikotarpį (ilgiausiai tikėtina, tuščiosios eigos laikotarpį)
- Žaisk su užduoties dydžiui, taip, kad diegimo metu tampa gana nereikšminga, palyginti su perdirbimo metu (turint omenyje pirmiau minėtą aspektą).
- , Jei darbas nėra baigtas dvigubo laiko (gal mažiau) tikisi, kad jis galėtų užbaigti jį prisiimti, kad jos dingo AWOL ir pradėti ją apdoroti su kitu darbuotoju. Tai reiškia, kad jums gali tekti palaukti iki tris kartus viršijanti įprastą darbą už tai ilgis, užbaigti (galbūt ilgiau, jei vėliau darbą nepavyksta). Galbūt Jūs norite sumažinti šį laiką, bet būkite atsargūs, ne sumažinti per daug, kaip jūs gali pradėti reguliariai kartoti apdorojimo užduotis .
- Darbo vietų turėtų būti nepriklausomi išorės reikalavimai kiek įmanoma. Serverio darbą, pavyzdžiui, turėtų būti tik susisiekti kiekvieno darbo pradžios ir pabaigos.
- Ar ne prisigerti savo tinklą, tai turės neigiamą poveikį jūsų dienos personalas rasti naudojant tinklo varginantis ir gali būti problemų patirties su problema, kad bus tik blogiau, kaip jūs savo tinklelį skalę jungtys laiką.
- Užtikrinti darbo vietų gali paleisti savo darbuotojus. Jei darbo vietos tampa per daug atminties intensyvaus ar diske intensyvaus darbo vietų bus pradėti nutraukimą, ir vienintelis dalykas, kurį pastebėsite yra nėra tikroji priežastis, kodėl tvarkomi su darbo vietų skaičiaus sumažėjimas.
Pateikdamos rezultatus Skelbimas
Pateikti darbo rezultatus, svarbu patikrinti, kad rezultatai nebuvo pateikti kitas darbuotojas, ypač jei darbuotojas buvo ramybės tam tikrą laiką.
Kai rezultatai pateikiami užtikrinti, kad rezultatų skaičius atitinka įrašų skaičius per darbą.
Kaip nurodyta anksčiau, ir negali būti daugiau kaip pabrėžė, kurti gedimui atsparūs į darbo paieškos ir rezultatų pateikimo. Darbuotojai gali (ir greičiausiai bus) pereiti į sustabdyti režimas labiausiai nepatogu kartų ir tai turi būti aptarnavo. Taip pat dar kartą atsiribotų nuo savo rezultatų pateikimo padės patenkinti būsimus pokyčius savo darbo kontrolės sistema daug lengviau susidoroti su.
Santrauka
Section mes pažvelgė, ką turi daryti darbo kontrolė serverio ir kaip gauti labai pagrindinės sistemos. Mes aptarė, kaip gauti iš kontrolės sistemos darbą ir kaip geriau konfigūruoti darbą dauguma mūsų savo biuro tinklo sistemos,. Norėdami baigti, pastraipą ar dvi Pateikdamos rezultatus atgal į darbo kontrolė serverio.
- Darbo kontrolė serverių valdo darbo vietas ir užtikrina, kad visi darbo vienetų
- Atsiribotų savo darbo select / rezultatų pateikimo, mes galime pakeisti serverio valdymo technologija, be didelių problemų
- Konfigūruoti savo darbo vietų, siekiant užtikrinti, kad jie vykdomi greitai ir veiksmingai nesukeliant per daug spaudimo dėl savo tinklo infrastruktūrą, ir vengiant kartojimo ir perdirbimo užduotis reguliariai.
- Užtikrinti, kad jums sukurti atsparumu gedimui ir klaidų checking į savo kasdienybe, darbuotojai gali sustabdyti ir vėl ir labiausiai nepatogu kartų. Nepamirškite patikrinti, jei rezultatai jau buvo pateiktas kito darbuotojo.
Kitą kartą
3 dalis , mes sukurti mūsų virtualios apdorojimo mašinos ir įsteigti mūsų langų mašinų tapti prastovos dieną dirbančių darbuotojų .