Uvođenje
Radim u tvrtki u kojoj smo pokrenuti mnogo batch poslovi obrade milijune zapisa podataka svaki dan i Razmišljao sam nedavno o svim strojevima koji sjede oko svaki dan radiš ništa za nekoliko sati. Zar ne bi bilo dobro ako bismo mogli koristiti one strojevi podupirati procesorsku snagu našeg sustava? U ovom skupu članaka idem pogledati potencijalne koristi od zapošljavanja ured mrežu koristeći virtualiziranog okruženja.
U Dijelu 1 sam dao pregled sustava i tehnologija, sam će se koristiti i kao što je objašnjeno neke od mogućih razloga zašto biste htjeli stvoriti mrežu ureda.
Posao upravljanja
Ako tvoj 'idući u biti pokrenut posao onda idete da je potrebno na neki način upravljati njima. Vaš posao sustav kontrole (na svom poslu poslužitelj) treba jako dobro osmišljenog prije čak pokušava pokrenuti ureda mrežu. Dakle, prvo, što su zadaci za sustav kontrole rada:
- Predati poslove na zahtjev radnika
- Recite radnika kakvu vrstu radnih mjesta za pokretanje
- Praćenje radnih mjesta
- Osigurati da se radna mjesta samo pokrenuti jednom
- Osigurati radnih podataka za radnike, ili ih barem reći gdje da biste dobili Internet
Sustav također mora biti proširiv, rješenje koje radi za sada u jednom slučaju može se produžiti za izvođenje nekoliko vrsta poslova što je posao vidi vrijednost u mreži rješenje. Na primjer, radna mjesta mogu dobiti prioritete, više od jedne Vrsta posla mogu postojati (tj. više kod baze), na kraju vi svibanj čak i pokrenuti nekoliko različitih radnika strojeve koji su optimizirane za svaku vrstu posla (iako to ne udaljavati iz 'generički radnika 'ideja). Uvijek nastojte da razmišljaju o budućnosti, kada razvoju sustava, kratka vizija pojam može dovesti do frustracija dužim i povećanog razvoja vremena.
Posao Server
Mi ćemo morati negdje kontrolirati svoj posao od, to bi trebao biti jedini sustav u mrežu koja ima fiksni Resource Locator, bilo da se IP adresa, ime računala, URL (koristeći interni DNS), itd. To je zato što radnici moraju znati gdje se mogu pogledati za radna mjesta, radnici moraju pronaći posao sustav kontrole (ne sustav kontrole posao naći radnika).
Posao poslužitelj sama ne stvarno imati kompliciran zadatak (u svakom slučaju osnovni sustav), to treba spremiti popis radnih mjesta, iz ruke posla, dobiti rezultate, a potom ih spremiti za kasnije pretraživanje. Kako se ti dijelovi (kao što su '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 vaš posao poslužitelj ne može biti trčanje virtualni stroj unutar svoje glavne obradu poslužitelju pod uvjetom da ne odvoditi previše resursa od njega. Poslužitelj posao, međutim ne treba visoku dostupnost, ako to ide dolje u petak na večer idete za izgubiti cijeli vikend obrade, potencijalno koštalo par tjedana vrijedi vrijeme obrade (u odnosu na glavnom poslužitelju obradu sama) . Vi svibanj ištanje to uzeti u obzir stavljajući svoj posao poslužitelj na opterećenja uravnoteženog okoliša za visoku dostupnost.
Osnovna konfiguracija
Osnovne postavke za naš posao poslužitelj će se sastojati od što sam zove jedan od mojih Limp poslužitelja (koja je Li nux, ySql m, P KS). Kod trčanje na Thea radnika će zapravo raditi koje poslove može raditi u interakciji s posla s bazama podataka sustav kontrole. Kasnije smo mogli napraviti web servis i zapravo ruku posla nego da su radnici učiniti napornim radom sami, ali za sada ćemo nastaviti koristiti princip KISS (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 veliku malo alternativa phpMyAdmin samo zbog njegova lakše instalirati na CentOS (za drugi vide: 10 Veliki alternativa phpMyAdmin )
Ova tablica sastoji se od 5 jednostavnih polja,
- ID: jedinstveno identificiraju posao
- Ime: Mogao bi biti referenca klijenta, ili bilo koji broj ostalih identifikatora
- Status: Morate znati gdje je posao na, primjerice,
- 0: Nije započeo
- 1: pokupila
- 2: Završena
- started_by: Tko je počeo raditi taj posao? To nije u cijelosti potrebna, ali je lijepo imati. Sugerirao bih praćenje radnika po svojoj IP adrese na mreži
- started_at: Kada je radnik pokrenuti posao? Praćenjem poslove koji nisu završene u roku od X iznos od vrijeme znamo da trebamo pokupiti posao jednom i početi obradu drugog radnika. Radnici mogao zaustaviti obradu / go offline za bilo koji broj razloga, nestanka struje, nesreće, mreže i gubitka, itd.
Lako je kako je ovaj stol mogao bi se proširiti s nekoliko dodatnih polja omogućuju praćenje statistike, stupac završiti vrijeme da se vidi koliko je posao preuzeo, brojač da se vidi koliko radnici pokupila posao (očito to treba imaju tendenciju da 1), posao prioritet, popis može ići na i na. U složenijih radnih scenarija to će biti moguće odrediti koliko je memorije radnik će potreban pristup (i stoga koristiti samo prikladne radnika), ili čak što tip od radnika će biti potrebna.
Omogućuje dodati nekoliko primjere radnih mjesta:
Sljedeća tablica ponovno je prilično jednostavan za shvatiti, to su naši posao zapisa. Oni su povezani na glavni radnih mjesta tablici stupac javni izdaci jobs_id '. Make up ove tablice jako puno ovisi o podacima koje trebate dostaviti svoje radnike, omogućuje učiniti vrlo jednostavan primjer u kojem imamo četiri stupce:
- ID: ID zapisnika
- Ime: ime osobe
- Adresa: Osoba je adresa
- jobs_id: posao ID koji ovaj zapis je povezan s
Treći i posljednji stol sastoji se od rezultata tablici, to je velik dio isti čine kao naš zapisima tablice, a uz dodatak nekih stupova može biti dio evidencije tablici:
- job_record_id: Link rezultat na posao tablici
- Rezultat: Rezultat podataka
... I to je sve što je potrebno za posao kontrole! (Iako na vrlo osnovnoj razini) U mom slučaju sam ukazao na drugoj tablici gdje su moji podaci u procesu je bila smještena, ali to bi moglo jednako lako je datoteka, parametri za pokretanje simulacije kod, ime ti je.
Odabir posao
Kao što je navedeno ranije, radnici će raditi svoj posao upravljanja za nas, za sada, pa sve što je potrebno da se stvarno učiniti je pronaći posao koji treba obradu i dobiti informacije. Kako bi smo to učinili? Pa pokupiti naše kriterije odabira posla i tražiti poslove, u SQL sam sljedeće:
- Poduzeti sve poslove koje nisu označene kao potpuna, ali iz našeg radnika te ih vratiti (zamjena __ ME__ s identifikatorom, najlakše će biti IP adresa):
UPDATE za `radnih mjesta` SET 'status' = 0 gdje je 'status `= 1 AND` started_by' = __ ME__;
- Koristeći naše kriterije odabira posla, odabrati posao i reći da je ovaj sustav kontrole radnik se bavi s njim:
UPDATE za `radnih mjesta` SET 'status' = 1, `started_by '= __ ME__' started_at '= NOW (), gdje' status '= 0 ili
('Status `= 1 AND` started_at `> DATE_SUB (SAD (), interval X HOUR)) ORDER BY` id ASC javni izdaci; By grabbing poslove koji nisu vratili rezultate u X iznos od vrijeme smo se osiguralo da su svi poslovi prikazivati u slučaju radnika pad ili će IZBEZUMILA.
- Sljedeća zgrabite poslove detalja slijedi zapisa samih:
SELECT * FROM `radnih mjesta` WHERE `started_by '= __ ME__ LIMIT 1;
SELECT * FROM `job_records` WHERE `id` = __ JOBID__;
Po završetku posla smo umetnite naše evidencije rezultata i označite posao završi. Sjeti se kao poslovi mogu zaustavljanje / nastavljanje u bilo kojem trenutku omogućiti neke dosljednosti u svom pismu. To bi moglo biti da je zadatak zaustavlja na pola puta kroz ažuriranje sustava kontrole posla, tako da provjere broj zapisa u posao i broj rezultata spremljenih natrag na posao sustava kontrole će biti mudar potez.
Osim toga, dok ovo pokazuje koliko je radnih mjesta može se odabrati i uspio iz SQL upita okvira te bi trebao stvarno biti sažetke svoj posao kontrole, tako da ako se odlučite prebaciti na korištenje web usluge, datotečni sustav, temeljen XML , ili bilo koje druge broj sustava neće utjecati na broj iznad njega.
Posao konfiguracija
Sljedeći aspekt za uzeti u obzir je posao veličina i konfiguracija. By igranje s posla konfiguracije možemo postići odličnu ravnotežu između brzine, proces repliciranje i pouzdanost. Uzmite par scenarija usluživanja:
- Jobs se jedan dan svaki pokrenuti: To znači da vaše radnici moraju 15 dana za obraditi svaki posao (sjetite se 10 posto energije za 2/3rds tog vremena). To očito nije mudar konfiguracija, vaš posao je veličina način prevelika! To bi barem dvostruko vremena da biste dobili posao bi trebao obrađivati početna radnik ići IZBEZUMILA (vrijeme podići da nije vratio rezultate plus rekalkulacijsku vrijeme). U idealnim biste imati barem jedan puni posao lako brišu na kraju svakog dugog razdoblja mirovanja, na taj način zadržite posao navlake preko au najgorem slučaju posao bi potrajati dva dana da proces treba prvo ići nedostaje.
- Česta uzeti 1 minutu za pokretanje: To znači da vaši zaposlenici trajati oko 15 minuta pokrenuti svaki posao. Dok se to u početku može činiti idealnim, dobivate dodatnu radnu obradu vrijeme ručka i pauze za kavu, poslovni sastanci, itd. ovaj scenarij stavlja pritisak na drugim područjima vašeg sustava i upoznaje svoje probleme. Na primjer, prvo tvoj setup / vrijeme obrade omjer ići desno dolje, dakle gubitka učinkovitosti sustava. Vaša mreža će biti stalno streaming posao informacije različitih radnika frustrirajuće osoblja koji su dong njihova svakodnevnog posla. Također ćete staviti više pritisak na vaš poslužitelj posao obrade kao što mora dijeliti puno i puno malih komada radu na redovnoj osnovi. Na kraju, u ovoj situaciji ako vaš posao poslužitelj odlazi dolje ćete stvoriti ogroman natrag dnevnik nezavršenom poslu dok većih radnih mjesta mogao kontinuiranog obradu blaženo nesvjestan da je posao poslužitelja je poteškoća.
U stvarnosti neće biti jedna idealna konfiguracija za grid postava, mnogo ovisi o raspoloživim resursima, vrste posla i radnih 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 barem 3-4 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 dvostrukom iznosu vremena (možda manje) možete očekivati da ispunite je pretpostaviti da je otišao IZBEZUMILA i početi ga obradu s drugim radnikom. To znači da ćete možda morati pričekati i do tri puta normalne duljine posao za to završiti (vjerojatno ne, ako se naknadno posao ne uspije). Vi svibanj želite smanjiti ovaj put, ali budite oprezni da ne smanjuje previše kao što svibanj početi umnožavanje obradu zadataka na redovnoj osnovi.
- Radna mjesta trebaju biti neovisne o vanjskim uvjetima kao što je više moguće. Posao poslužitelj, primjerice, samo treba kontaktirati na početku i kraju svakog posla.
- Ne zasititi svoju mrežu, to će imati dvije negativne učinke, vaša dnevna osoblje će pronaći putem mreže frustrirajuće i problemi mogu biti iskusni veze s tempirao se problem koji će se samo pogoršavati kao što skalirati vašu mrežu.
- Osigurati da radna mjesta mogu se izvoditi na svojim radnicima. Ako poslovi postati previše intenzivno memorija ili disk prostor intenzivnih radnih mjesta će se početi rušim i jedina stvar koju ćete primijetiti je pad broja radnih mjesta obrađenih bez stvarnog razloga zašto.
Podnošenje Rezultati za posao
Prilikom podnošenja rezultate posao, važno je da provjerite da rezultati nisu podneseni od strane drugog radnika, osobito ako je trenutna radnik je bio neaktivan neko vrijeme.
Kad rezultati su poslali osigurati da broj rezultata odgovara broj zapisa u posao.
Kao što je navedeno ranije, i ne može biti iznad istaknuo, graditi toleranciju pogreške u posao pretraživanja i rezultata podnošenje. Radnici mogu (i najvjerojatnije hoće) ići u suspend modu najviše nezgodno puta i to treba biti catered for. Također još jednom apstrahiranja tvoga rezultate podnošenje pomoći će dostaviti za buduće promjene na vašem sustavu kontrole posao puno lakše da se bave.
Rezime
U ovom section smo pogledali što poslužitelj posao kontrole treba učiniti i kako doći vrlo osnovni sustav postaviti. Razgovarali smo o tome kako da biste preuzeli posao od kontrolnog sustava i kako najbolje konfigurirati radnih mjesta da biste dobili najviše iz svog sustava naš ured mrežu. Da biste završili, stavka ili dvije o upućivanju rezultate natrag poslužitelju posao kontrole predstavljen.
- Poslužitelj upravljanje poslom upravlja radnih mjesta i osigurava da se sva radna jedinica završila
- Apstrahiranjem svoj posao select / Rezultati podnošenje možemo promijeniti tehnologiju kontrolnom poslužitelju bez puno problema
- Konfigurirajte svoj posao kako bi se osiguralo da su pokrenuti brzo i učinkovito, bez stavljanjem previše pritisak na svoje mrežne infrastrukture, i bez umnožavanje obradu zadataka na redovnoj osnovi.
- Uvjerite se da ste izgraditi toleriranje kvarova i pogreške checking u svoje rutine, radnici mogu obustaviti i nastaviti, a najviše nezgodno puta. Ne zaboravite da provjerite je li rezultati već podnesen od strane drugog radnika.
Sljedeći put
U dijelu 3 ćemo stvoriti naš virtualni stroj za obradu i postavljanje naših prozora strojevi postati miruje radnim vremenom.