Uvod
Radim u tvrtki u kojoj smo pokrenuli mnoge batch obrada radnih mjesta milijune zapisa podataka svaki dan i Razmišljao sam nedavno o svim strojevima koji sjede okolo svaki dan radiš ništa za nekoliko sati. Ne bi li bilo dobro kad bismo mogli koristiti one strojevi podupirati procesorsku snagu naših sustava? U taj niz članaka idem gledati na potencijalne koristi od zapošljavanja ureda mrežu koristeći virtualiziranog okruženja.
U Dio 1 sam dao pregled sustava i tehnologija ću koristiti kao i raspravlja o nekim od potencijalnih razloga zašto bi želite napraviti ured mrežu.
Upravljanje poslom
Ako tvoj 'idući u biti pokrenut radnih mjesta onda tvoj' idući u potreba neki način upravljati njima. Vaš posao kontrolnog sustava (na svom poslu poslužitelj) treba se stvarno dobro osmišljenog čak i prije nego pokušavate pokrenuti ureda mrežu. Dakle, prvo, što su zadaci za sustav upravljanje poslom:
- Podijelite posao na zahtjev radnika
- Recite radnici koju vrstu radnih mjesta za pokretanje
- Praćenje radnih mjesta
- Osigurati da se radna mjesta samo su mali jednom
- Dati posao podatke radnika, ili barem im reći gdje da ga dobijete
Sustav također mora biti rastezljiva, rješenje koje radi za sada u jednom slučaju može biti produžen za pokretanje nekoliko tipova radnih mjesta kao poslovni vidi vrijednost u mrežu rješenje. Na primjer, radna mjesta mogu dobiti prioritete, više od jedne vrste posla mogu postojati (tj. nekoliko kôd osnova), na kraju vi svibanj čak i pokrenuti nekoliko različitih radnik strojeve koji su optimizirani za svaku vrstu posla (iako to ne miče dalje od "generičkih radnik 'Ideja). Uvijek pokušajte razmišljati o budućnosti kada se razvija sustave, kratkoročni vizije može dovesti do frustracija i dugoročno povećala vrijeme razvoja.
Job Server
We're idući u trebate negdje kontrolirati svoje poslove iz, to bi trebao biti jedini sustav u mrežu koja ima fiksni lokator resursa, da se IP adresa, ime hosta, URL (koristeći interne DNS), itd. To je zato što radnici moraju znati gdje se mogu pogledati za radna mjesta, radnici trebaju pronaći posao sustava kontrole (ne sustav kontrole posao naći radnika).
Posao server sam po sebi ne stvarno imati složen zadatak (u osnovni sustav nekako), da treba pohraniti popis radnih mjesta, iz ruke posla, dobiti rezultate, a potom ih spremiti za kasnije pretraživanje. Kako tih dijelova (kao što je "iz ruke posla ') su definirane može biti vrlo osnovni. Kasnije možemo proširiti sustav uključiti administracijsko sučelje za dodavanje, uređivanje, brisanje, obustaviti radnih mjesta, ali to je izvan ove vježbe.
Nema razloga onda da svoj posao server nije mogao biti virtualni stroj trčanje u vaš glavni obradu server pod uvjetom da ne izbacuje vodu previše sredstava iz njega. Posao poslužitelj međutim ne treba visoku dostupnost, ako se ide dolje u petak navečer ćete izgubiti cijeli vikend obrade, potencijalno vas koštalo par tjedana vrijedi procesorskog vremena (kada je u odnosu na svoje glavne obradu server sama) . Vi svibanj ištanje to uzeti u obzir stavljajući svoj posao server na teret uravnotežen okruženje za visoku dostupnost.
Osnovni Postava
Osnovne postavke za naš posao server će se sastojati od ono što sam poziv jedan od mojih Limp servera (koji je Li Nux, m ySql, P KS). Koda koji se izvršava na Thea radnici će zapravo raditi ono što posao se može pokrenuti interakcijom s posla s bazama podataka sustav kontrole. Kasnije smo mogli napraviti web servis i zapravo ruku radnih mjesta nego što su radnici učiniti teško raditi sami, ali za sada ćemo nastaviti koristiti KISS princip (Keep it Simple, Stupid!).
Dakle, omogućuje stvaranje tri mySQL tablice da se bave poslovima. To će biti 'radna mjesta', 'jobRecords `i` jobResults'.
Ovdje Im 'koristeći SQL Buddy veliki mali alternativa phpMyAdmin samo zato što je lakše instalirati na CentOS (za drugi vide: 10 Veliki alternativa phpMyAdmin )
Ova tablica se sastoji od 5 jednostavnih polja,
- ID: jedinstveno identificiraju posao
- Ime: Mogao bi biti klijent referenca ili bilo koji broj drugih identifikatora
- Status: Morate znati gdje je posao na, npr.
- 0: Nije počeo
- 1: Pokupila
- 2: Završene
- started_by: Tko je počeo raditi taj posao? To nije u potpunosti potrebna, ali je lijepo imati. Htio predlažemo praćenje radnika po njihovu IP adresu na mreži
- started_at: Kada je radnik započeti posao? Praćenjem poslove koji nisu završili u X iznos od vrijeme znamo trebamo pokupiti posao ponovno i započeti obradu drugi radnik. Radnici bi mogao zaustaviti obradu / go Pogledaj za bilo koji broj razloga, napajanja, sudar, mreža gubitak, itd.
Lako je kako ovoj tablici može biti proširena s nekoliko dodatnih polja kako bi se omogućilo praćenje za statistiku, stupac završiti na vrijeme da vidi koliko dugo je posao, brojač da vidim koliko radnika pokupila posao (očito ovo treba da imaju tendenciju da 1), posao prioriteta, popis može ići na i na. U složenijim posao scenarija to će biti moguće odrediti koliko memorije radnik bi trebao pristup (i stoga koristiti samo prikladne radnika), ili čak i kakvu vrstu radnik će biti potrebna.
Omogućuje dodavanje nekoliko primjer u graditeljstvu:
Sljedeća tablica ponovno je prilično jednostavan za shvatiti, oni su svoj posao zapisa. Oni su povezani s glavnim poslove tablici stupac "jobs_id '. Čine ove tablice jako puno ovisi o podacima koje trebate dostaviti na svoje radnike, omogućuje da vrlo jednostavan primjer, gdje imamo četiri stupca:
- ID: ID rekord
- Ime: ime osobe
- adresa: Osoba adresu
- jobs_id: posao ID koji ovaj zapis je povezan s
Treći i finalni stol sastoji se od rezultata stola, to je puno isto čine kao naše evidencije stol, a uz dodatak nekih stupova može biti dio zapisa tablici:
- job_record_id: Link rezultat na posao stol
- Rezultat: Rezultat podataka
... I to je sve što je potrebno za posao kontrole! (Iako u vrlo osnovni nivo) U mom slučaju ja sam ukazao na drugu tablicu, gdje moje podatke obraditi bila smještena, ali to bi moglo jednako lako su datoteke, parametri za pokretanje simulacije kod, ime ti je.
Odabir posla
Kao što je navedeno ranije, radnici će raditi naš menadžment posao za nas, za sada, tako da svi trebamo stvarno učiniti je pronaći posao koji treba obrada i dobiti informacije. Kako bi smo to učinili? Pa pokupiti naše kriterije odabira posao i traže posao, u SQL sam sljedeće:
- Uzmite bilo koje poslove koji nisu označeni kao potpuni, ali iz naših radnika i resetiranje ih (zamjena __ME__ s identifikatorom, najlakše bi se IP adresa):
UPDATE 'radnih mjesta' SET 'status' = 0 gdje je 'status' = 1 I `started_by '= __ME__;
- Koristeći naše kriterijume posao odabir, odabrati posao i reći da je ovaj sustav kontrole radnik bavi se:
UPDATE 'radnih mjesta' SET 'status' = 1, 'started_by' = __ME__, `started_at '= NOW () gdje je" status "= 0 ili
('Status' = 1 I `started_at '> DATE_SUB (sada (), interval X HOUR)) ORDER BY` id `ASC; Hvatajući poslove koji nisu vratili rezultate u X iznos od vrijeme mi se osiguralo da su svi poslovi izvoditi u slučaju radnik pad ili ide AWOL.
- Sljedeća zgrabite posao detalji slijede evidenciju sami:
SELECT * FROM `radnih mjesta 'gdje je" started_by' = __ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __JOBID__;
Po završetku posla mi umetnuti naš rezultat bilježi i označite posao završi. Sjeti se što su radna mjesta može obustaviti / nastaviti u bilo koje vrijeme dopustiti za neke robusnosti u svom pismu. To bi moglo biti da je zadatak obustavio pola puta kroz ažuriranje sustava za kontrolu, tako da provjere broj zapisa u posao i broj rezultata spremljene natrag u sustav za upravljanje će biti mudar potez.
Osim toga, dok ovo pokazuje kako se radna mjesta mogu se odabrati i upravlja s SQL-upit frame ti stvarno treba biti apstrahiranja svoj posao kontrole, tako da ako odlučite da biste išli na korištenje web-usluge, datotečni sustav, XML , ili bilo koje druge broj sustava to neće utjecati na broj iznad njega.
Job konfiguraciju
Sljedeći aspekt razmotriti je posao veličina i konfiguracija. By igranje s posla konfiguraciji možemo štrajk izvrsnu ravnotežu između brzine, procesa replikacije, i pouzdanost. Uzmi par ofa scenarija:
- Poslovi uzeti jedan dan svaki pokrenuti: To znači da vaše radnici trebaju 15 dana za proces svaki posao (sjetite se 10% energije za 2/3rds vremena). To očito nije mudar konfiguraciju, vaš posao je veličina način prevelika! Bilo bi potrebno najmanje dvostruko više vremena da biste dobili posao obrađen treba inicijalne radnik ide AWOL (vrijeme podići da nije vratio rezultat plus preradu vrijeme). U idealnom youd 'imati najmanje jedan puni posao lako uklonjena do kraja svakog dugog razdoblja mirovanja, na taj način zadržite posao navlake preko, au najgorem slučaju posao bi se dva dana da bi proces trebao prvi otići nedostaje.
- Poslovi uzeti 1 minutu na trčanje: To znači da vaše radnici potrajati oko 15 minuta pokrenuti svaki posao. Dok ovo u početku može činiti idealnim, dobit ćete dodatne obrade posao u vrijeme ručka, kavu u stankama Kongresa, sastanci, itd. ovaj scenarij stavlja pritisak na druge dijelove vašeg sustava i uvodi vlastite probleme. Na primjer, prvo tvoj setup / vrijeme obrade omjer je idući u ići desno dolje, dakle gubitka učinkovitosti sustava. Vaša mreža je idući u biti stalno streaming posao informacije raznih radnika frustrirajuće osoblja, koji su dong svom svakodnevnom radu. Također ćete uložiti više pritisak na vaš poslužitelj posao prerade kao što je na jelo na puno i puno malih komada rad na regularnoj osnovi. Konačno, u ovoj situaciji ako je vaš posao poslužitelj odlazi dolje idete stvoriti veliki povratak dnevnik nedovršenog posla pri čemu se veći radnih mjesta mogao i dalje obrade blaženo nesvjestan da posao server je bio poteškoća.
U stvarnosti neće biti nitko idealna konfiguracija za grid postavke, puno ovisi o raspoloživim resursima, vrsta posla, radno vrijeme obrta zahtjevi, mreže sposobnost, i tako dalje. Međutim, neke smjernice će biti:
- Veličina radnih mjesta, tako da svaki radnik može dobiti kroz najmanje 3-4 novih radnih mjesta u roku od 15 sati (najduže razdoblje mirovanja vjerojatno)
- Igrajte se s posla veličine, tako da postava vrijeme postaje prilično beznačajan u odnosu na vrijeme obrade (imajući u vidu gore navedene točke).
- Ako se posao ne završi u dvokrevetnoj iznos od vrijeme (možda i manje), možete očekivati da popunite pretpostaviti da je njegova nestala AWOL i početi obradu s drugim radnik. To znači da ćete možda morati pričekati i do tri puta normalna duljina posao za to dovršiti (moguće više, ako naknadno posao ne uspije). Vi svibanj želite smanjiti ovo vrijeme, ali budite oprezni da ne smanjiti previše kao što se može početi umnožavanje obradu zadaće na regularnoj osnovi.
- Posao bi trebao biti neovisan o vanjskim zahtjevima u najvećoj mogućoj mjeri. Posao poslužitelja, na primjer, samo treba biti kontaktirani na početku i na kraju svaki posao.
- Ne zasititi vaše mreže, to će imati dvije negativne posljedice, vaše dnevne osoblje će pronaći putem mreže frustrirajuće i problemi mogu biti iskusan s priključcima vremena se problem koji će samo pogoršati kao što ljestvice tvoj mrežu.
- Osigurati radna mjesta mogu se izvoditi na vašem radnika. Ako se radna mjesta postati previše intenzivno memorije ili diskovnog prostora intenzivne poslove će početi rušim i jedina stvar koju ćete primijetiti je pad broja radnih mjesta obrađeno bez pravi razlog zašto.
Podnošenje Rezultati posao
Pri podnošenju rezultate posao važno je da provjerite da rezultati nisu poslali još jedan radnik, pogotovo ako trenutni radnik je bio neaktivan neko vrijeme.
Kada rezultati su poslali osigurati da broj rezultata utakmice broj slogova u posao.
Kao što je navedeno ranije, i ne može biti više naglasila, izgraditi tolerancija kvarova na posao pronalaženja i rezultati podnošenje. Radnici mogu (i najvjerojatnije će se) otići u suspend modu u većini nezgodno puta i to treba biti catered for. Također još jednom apstrahiranja daleko vaši rezultati dostavu pomoći će razonoditi za buduće promjene u vašem sustavu kontrole posao puno lakše da se bave.
Sažetak
U ovom section smo gledali na ono što poslužitelj posao kontrole treba učiniti i kako da biste dobili vrlo osnovni sustav postavljen. Mi smo razgovarali o tome kako preuzeti posao iz sustava kontrole i kako najbolje da konfigurirate radnih mjesta kako bi dobili većinu naših vašeg sustava Office mrežu. Da biste završili, stavku ili dvije o podnošenju rezultata natrag poslužitelju posao kontrole je prikazan.
- Poslužitelj posao kontrole upravlja radna mjesta i osigurava da su sve radne jedinice završena
- Po apstrahiranja svoj posao select / Rezultati podnošenje možemo promijeniti tehnologiju kontrole poslužitelju bez puno problema
- Konfigurirajte svoj posao kako bi se osiguralo da su trčanje brzo i učinkovito, bez stavljanja previše pritisak na svoje mrežne infrastrukture, a bez umnožavanje obrade zadataka na redovnoj osnovi.
- Uvjerite se da ste izgraditi tolerancija kvarova i grešaka checking u svoje rutine, radnici mogu obustaviti i nastaviti, a većina nezgodno puta. Ne zaboravite provjeriti da li rezultati već su poslali još jedan radnik.
Sljedeći put
U dijelu 3 ćemo napraviti naš virtualni stroj za obradu i postavljanje naših prozora strojevi postati mirovanja radnim vremenom.