Johdanto
Olen töissä yrityksessä, jossa voimme suorittaa useita erän työpaikkoja käsittely miljoonia levyjä tietojen joka päivä ja olen ajatellut viime aikoina kaikki koneet, jotka istuvat ympäri joka päivä tekemättä mitään useita tunteja. Eikö olisi hyvä, jos voisimme käyttää näitä koneita vahvistamaan prosessorin tehosta järjestelmiemme? Tämän kokoelman artikkeleita olen menossa katsomaan mahdolliset hyödyt työllistää toimiston verkkoon käyttäen virtualisoidusta ympäristöissä.
Vuonna Osa 1 annoin yleiskuvan järjestelmästä ja teknologiat Aion käyttää sekä keskusteltiin joitakin mahdollisia syitä miksi haluaisi luoda toimiston verkkoon.
Työn hallintaa
Jos aiot olla käynnissä työpaikkoja sitten olet menossa on jotenkin hallita niitä. Työsi ohjausjärjestelmä (työssäsi palvelin) täytyy olla todella hyvin mietittyjä ennen kuin edes yrität suorittaa toimiston verkkoon. Joten ensinnäkin, mitä tehtäviä töitä valvontajärjestelmä:
- Hand out työpaikkoja pyynnöstä työntekijöiden
- Kerro työntekijöiden millaista työpaikkaa juosta
- Seuraa työpaikkaa
- Varmista, että työpaikat ovat vain ajaa kerran
- Tarjoa työtietoja työntekijöille, tai ainakin kertoa heille mistä sitä saa
Järjestelmä on myös olla laajennettavissa, ratkaisu, joka toimii nyt samaan koteloon voidaan pidentää suorittaa useita erilaisia työpaikkoja kuin liike näkee arvokkaaksi verkkoon ratkaisu. Esimerkiksi työpaikkoja voi saada painopisteitä, enemmän kuin yksi työpaikka tyyppi voi olla (ja siis useita koodi emästen), lopulta saatat jopa käyttää useita erilaisia työntekijä koneita, jotka on optimoitu kunkin työpaikan tyyppi (vaikka tilanne onkin siirtynyt pois "geneerinen työntekijä "idea). Pyri aina ajatella tulevaisuutta kehitettäessä järjestelmiä, lyhyen aikavälin visio voi johtaa pitkällä aikavälillä turhautumista ja lisääntynyt kehitysaikaa.
Job Server
Aiomme tarve jonnekin ohjata työpaikkojamme, tämä olisi vain järjestelmän teidän ruudukko, joka on kiinteä Resource Locator, olla että IP-osoite, koneen nimi, osoite (käyttämällä sisäisiä DNS), jne. Tämä johtuu siitä työntekijöiden täytyy tietää, mistä etsiä työtä, työntekijöitä täytyy löytää työpaikka ohjausjärjestelmä (ei työtä ohjausjärjestelmä löytää työntekijöitä).
Työ palvelin itsessään ei todellakaan ole monimutkainen tehtävä (vuonna perusjärjestelmän muutenkin), se tarvitsee tallentaa luettelon työpaikkoja, ojentaa työpaikkoja, saada tuloksia, ja myöhemmin tallentaa ne myöhempää hakua varten. Miten nämä osat (kuten "ojentaa työpaikkoja") on määritelty voi olla hyvin yksinkertainen. Myöhemmin voimme laajentaa järjestelmä koskemaan hallintaliittymä lisätä, muokata, poistaa, keskeyttää työpaikkoja, mutta tämä on kuin tämä harjoitus.
Ei ole mitään syytä sitten, että työsi Palvelinta ei virtuaalikoneen käynnissä omassa pääasiallinen käsittely palvelin kunhan se ei valua liikaa resursseja siitä. Työ-palvelin kuitenkin tarvitsee korkeaa käytettävyyttä, jos se menee alas perjantai-iltana aiot menettää koko viikonlopun käsittely, mahdollisesti maksaa sinulle pari viikkoa arvosta käsittelyaika (verrattuna teidän tärkein käsittelyyn palvelin yksin) . Haluat ehkä harkitsemaan työsi palvelimen kuormitus tasapainoisen ympäristön korkean käytettävyyden.
Basic Setup
Perusasetukset työmme palvelin koostuu mitä Soitan eräs Limp palvelimia (eli Li Nux, m ySql, P HP). Koodi käynnissä thea työntekijät todella selvittää, mitä työpaikkoja se voi hoitaa vuorovaikutuksessa työpaikkojen ohjausjärjestelmä tietokantoja. Myöhemmin voisimme luoda verkkopalvelusta ja todella jakaa työpaikkoja sen sijaan työntekijät tekevät kovaa työtä itse, mutta nyt jatkamme käyttäen KISS periaate (Keep It Simple, Stupid!).
Joten, avulla muodostaa kolme mySQL taulukoita käsitellä työpaikkoja. Näitä ovat `työpaikkoja`, `jobRecords`, ja `jobResults`.
Tässä olen käyttäen SQL Buddy erittäin pieni vaihtoehto phpMyAdmin vain siksi sen helpompi asentaa CentOS (ja muut näkevät: 10 Great vaihtoehtoja phpMyAdmin )
Tämä taulukko sisältää 5 yksinkertaisia kenttiä,
- id: tunnistaa työpaikka
- Nimi: Voisiko olla asiakasnumerosi, tai useita muita tunnisteita
- Tila: Sinun täytyy tietää, missä työ on, esim.
- 0: Ei aloitettu
- 1: Noudetaan
- 2: Päättyneet
- started_by: Kuka alkoi tehdä työtä? Tämä ei ole täysin tarvita, mutta on hyvä olla. Haluan ehdottaa seuranta työntekijöiden IP-osoitteiden verkko
- started_at: Milloin työntekijä aloittaa työn? Seuraamalla työpaikkoja, joita ei ole saatu päätökseen X määrä aikaa tiedämme, että meidän poimia työtä jälleen ja aloittaa käsiteltäväksi toisen työntekijän. Työntekijät voisivat lopettaa käsittely / go offline tehdä useita syitä, sähkökatko, Crash, verkko menetys jne.
On helppo miten tämä taulukko voitaisiin laajentaa muutamalla lisäkenttiä jotta Tilastot Seuranta, lopetusaika sarakkeesta, miten kauan kirjoittaminen vei, laskuri, kuinka monta työntekijää piristyi työ (ilmeisesti tämä on yleensä 1), työ ensisijaisesti luettelo voi mennä ja. Monimutkaisemmissa työpaikka skenaarioita olisi mahdollista määrittää, kuinka paljon muistia työntekijällä olisi pääsy (ja siksi Käytä vain sopivia työntekijöitä), tai edes minkälainen työntekijä olisi tarpeen.
Lets lisätään muutama esimerkki työpaikkoja:
Seuraava taulukko taas on melko helppo ymmärtää, nämä ovat meidän tehtävämme kirjaa. Ne liittyvät tärkeimmät työpaikat taulukon sarakkeessa `jobs_id`. Muodostavat tämän taulukon riippuu erittäin paljon tietoa, että sinun täytyy toimittaa oltava työntekijöiden, Tehkäämme hyvin yksinkertainen esimerkki, jossa meillä on neljä saraketta:
- id: tunnus ennätys
- nimi: Henkilön nimi
- Osoite: Henkilön osoite
- jobs_id: Job ID, että tämä levy on linkitetty
Kolmas ja viimeinen taulukko koostuu Hakutulokset, se on pitkälti sama muodostavat kuin tietomme pöytä, ja lisäksi joidenkin sarakkeiden voisi olla osa kirjanpidon taulukossa:
- job_record_id: Linkki tuloksen työ pöytä
- tulos: tulostiedot
... Ja siinä kaikki mitä tarvitset työnohjaukseen! (Vaikkakin hyvin perustasolla) Omassa tapauksessani olen todennut toiseen pöytään, jossa tietoni käsitellä sijaitsi, mutta tämä voisi yhtä hyvin jo tiedosto, parametrit suorittaa simulointi koodia, you name it.
Valinta työpaikka
Kuten aiemmin on todettu, työntekijät teemme työn hallintaan meille nyt, niin kaikki meidän todella on löytää työpaikka, joka tarvitsee käsittelyä ja saada tietoa. Miten teemme tämän? No pick työtämme valintaperusteet ja etsivät töitä, SQL tein seuraavat:
- Ota kaikki työpaikat, joita ei ole merkitty täydellisiä vaan meidän työntekijä ja muuta ne (korvaa __ME__ kanssa tunniste, helpointa olisi IP-osoite):
UPDATE `työpaikkoja` SET `status` = 0, kun `tila` = 1 ja `started_by` = __ME__;
- Käyttämällä meidän tehtävämme valintaperusteet, valitse työ ja kerro valvontajärjestelmää, että tämä työntekijä käsittelee sitä:
UPDATE `työpaikkoja` SET `tila` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `status` = 0 tai
(`Status` = 1 ja `started_at`> DATE_SUB (NYT (), intervalli X tunnissa)) ORDER BY `id` ASC;
Tarttumalla työpaikkoja, joita ei palauteta tuloksia X ajassa voimme varmistaa, että kaikki työpaikat ajetaan, jos työntekijä kaatuu tai menee luvattomalla lomalla.
- Seuraava napata työpaikkoja yksityiskohdat jälkeen kirjaa itselleen:
SELECT * FROM `työpaikkoja 'Missä` started_by `= __ME__ LIMIT 1;
SELECT * FROM `job_records 'Missä` id `= __JOBID__;
Päätyttyä työpaikka lisäämme tuloksemme kirjaa ja merkitä työpaikan täydellinen. Muista kuin työpaikkoja voi keskeyttää / jatkaa milloin tahansa sallia tietty kestävyydestä käsikirjoitus. Saattaa olla, että tehtävä keskeyttää puolivälissä päivittää työn ohjausjärjestelmä, niin tarkistaa Tietueiden määrän työtä ja tulosten määrä tallentaa ne takaisin työn valvontajärjestelmää olisi viisasta.
Lisäksi vaikka tämä osoittaa, miten työpaikkoja voidaan valita ja hallita SQL-kyselyn runko sinun pitäisi todellakin olla hahmotuskykyyn oman työn hallintaa niin, että jos päätät siirtyä käyttämään verkkopalvelu, tiedoston perusteella järjestelmä, XML , tai muita järjestelmien määrää se ei vaikuta koodin yläpuolelle.
Job Configuration
Seuraava huomioon otettava näkökohta on työn koon ja kokoonpanon. Pelaamalla työpaikkojen kokoonpano voimme löytää hyvä tasapaino nopeuden, prosessi replikointi ja luotettavuus. Ota pari OFA skenaarioita:
- Työpaikat ottaa 1 päivä jokainen ajaa: Tämä tarkoittaa, että työntekijät tarvitsevat 15 päivää aikaa käsitellä kunkin työn (muista 10% valtaa 2/3rds ajasta). Tämä ei selvästikään ole viisas kokoonpano, työsi koko on aivan liian iso! Se veisi ainakin kaksinkertainen aika saada suorittaa työ tulisi ensimmäinen työntekijä mennä luvattomalla lomalla (aika poimia että se ei ole palannut tulos plus jälleenkäsittelyä aikaa). Ihanteellisessa haluat olla vähintään yksi täysi työ helposti tyhjentää jokaisen pitkään käyttämättömänä ajan, että tapa pidät työpaikkoja tikittää yli ja pahimmillaan tapauksessa työ kestäisi kaksi päivää prosessi pitäisi ensin mennä puuttuu.
- Työpaikat kestää 1 minuutti juosta: Tämä tarkoittaa, että työntekijät kestää noin 15 minuuttia juosta jokaisen työtä. Vaikka tämä voi aluksi tuntua ihanteellinen, saat lisätyötä käsittely lounasaikaan, kahvitauot, kokoukset jne. Tässä tilanteessa asettaa paineita muille alueille järjestelmää ja esittelee omat ongelmansa. Esimerkiksi ensinnäkin sinun setup / käsittelyaika suhde on menossa alas, siis menettää järjestelmän tehokkuutta. Verkko tulee olemaan jatkuvasti streaming työpaikka tietoja eri työntekijöiden turhauttavaa henkilöstölle Dong jokapäiväisessä työssä. Olet myös menossa kohdistuu enemmän rasitusta työsi käsittely palvelimen on jaella paljon ja paljon pieniä teoksia säännöllisesti. Lopuksi, tässä tilanteessa, jos työsi palvelin menee alas aiot luoda valtava takaisin lokin keskeneräisiä työtä taas isompi työpaikkoja voisi jatkamisen käsittelyä autuaan tietämättömiä siitä, että työpaikka palvelin oli vaikeuksia.
Todellisuudessa ei tule olemaan yksi ideaalinen liitynnät sähköverkkoon setup, paljon riippuu käytettävissä olevista resursseista, kaikenlainen työssä, työn läpimenoaika vaatimukset, verkkotoiminnot, ja niin edelleen. Kuitenkin muutamia ohjeita olisi:
- Koko työpaikkoja jotta jokainen työntekijä voi saada läpi ainakin 3-4 työpaikkaa ajan 15 tuntia (pisin todennäköisesti idle ajan)
- Pelaa työn koko, niin että asennuksen aikana tulee melko merkityksettömiä verrattuna käsittelyaika (pitäen mielessä edellä kohta).
- Jos työ ei täydellinen kaksinkertainen määrä aikaa (ehkä vähemmän) oletat se täyttää se olettaa, että sen mennyt luvattomalla lomalla ja aloitamme sen toisella työntekijällä. Tämä tarkoittaa, saatat joutua odottamaan jopa kolme kertaa normaalia pituus työtä sen loppuun (mahdollisesti pidempään, jos myöhemmin työ epäonnistuu). Haluat ehkä vähentää tällä kertaa, mutta varo vähentää sitä liikaa, sillä saatat alkaa päällekkäistä käsittelyä tehtäviä säännöllisesti.
- Jobs olisi oltava riippumaton ulkopuolella vaatimuksia mahdollisimman paljon. Työ-palvelin, esimerkiksi vain ottaa yhteyttä alussa ja lopussa jokainen työpaikka.
- Eivät kyllästy verkkoon, tällä on kaksi kielteistä vaikutusta, sinun päivällä henkilökunta löytävät käyttää verkkoa turhauttavaa ja ongelmat voivat olla kokenut liitännät ajoitus ulos ongelma vain pahenee kun skaalata ruudukon.
- Varmista työpaikkoja voi ajaa oman työntekijöille. Jos työpaikkaa liian paljon muistia tai levytilaa intensiivisiä työpaikkoja alkaa keskenmenon ja ainoa asia, jonka huomaat on pisara työpaikkojen määrä käsitellä ilman varsinaista syytä, miksi.
Esittäessään tulokset työttömäksi
Antaessaan tulokset työ on tärkeää tarkistaa, että tulokset eivät ole esittäneet toinen työntekijä, varsinkin jos nykyinen työntekijä on ollut lepotilassa jonkin aikaa.
Kun tuloksia jätettäessä että tulosten määrä vastaa tietueiden määrä sisällä työtä.
Kuten aiemmin on todettu, ja ei voi olla yli korosti, rakentaa vikasietoisuus osaksi työpaikan hakuun ja tulosten toimittamisesta. Työntekijät voivat (ja mitä todennäköisimmin) menee lepotilaan kaikkein hankalaa kertaa ja tämä on otettava huomioon. Myös jälleen hahmotuskykyyn pois hakutuloksia jättämisestä auttavat hempää muutoksia työsi ohjausjärjestelmä paljon helpompi käsitellä.
Yhteenveto
Tässä section olemme tarkastelleet mitä työnohjaukseen palvelin pitää tehdä ja miten saada hyvin yksinkertainen järjestelmä perustetaan. Keskustelimme miten hakea Työn valvontajärjestelmä ja miten parhaiten määrittää työpaikkoja saada eniten meidän oman toimiston verkkoon. Lopeta, kohta tai kaksi esittäessään tulokset takaisin työ Control Server esiteltiin.
- Työn hallintaa palvelimen kautta työpaikkoja ja varmistaa, että kaikki yksiköt ovat valmiiksi
- Abstrahoimalla työsi valitse / tulosten esittämisen voimme muuttaa teknologia Control Server ilman suurempia ongelmia
- Määritä työpaikkoja varmistamaan, että ne ovat ajaa nopeasti ja tehokkaasti ilman ottaa liian paljon paineita verkon infrastruktuurin, ja tekemättä päällekkäistä käsittelyä tehtäviä säännöllisesti.
- Varmista, että olet rakentaa vikasietoisuutta ja virhe checking teidän rutiinit, työntekijät voivat keskeyttää ja jatkaa ja kaikkein hankalaa kertaa. Muista tarkistaa, jos tuloksia on jo toimitettu toinen työntekijä.
Seuraavalla kerralla
Vuonna Osa 3 luomme virtuaalinen jenkäsittelykoneeseen ja perustamme oman Windows-koneissa tulee idle-aikaisia työntekijöitä.